1.Giới thiệu về Logical Volume Manager (LVM)
1.1 LVM là gì
Logical Volume Manager (LVM): là phương pháp cho phép ấn định không gian đĩa cứng thành những logical Volume khiến cho việc thay đổi kích thước trở nên dễ dàng hơn (so với partition). Với kỹ thuật Logical Volume Manager (LVM) bạn có thể thay đổi kích thước mà không cần phải sửa lại table của OS. Điều này thật hữu ich với những trường hợp bạn đã sử dụng hết phần bộ nhớ còn trống của partition và muốn mở rộng dung lượng của nó
1.2 Vai trò của LVM
LVM là kỹ thuật quản lý việc thay đổi kích thước lưu trữ của ổ cứng
- Không để hệ thống bị gián đoạn hoạt động
- Không làm hỏng dịch vụ
- Có thể kết hợp Hot Swapping (thao tác thay thế nóng các thành phần bên trong máy tính)
1.3 Các thành phần trong LVM
Mô hình các thành phần trong LVM
Hard drives – Drives
Thiết bị lưu trữ dữ liệu, ví dụ như trong linux nó là /dev/sda
Partition
Partitions là các phân vùng của Hard drives, mỗi Hard drives có 4 partition, trong đó partition bao gồm 2 loại là primary partition và extended partition
- Primary partition:
- Phân vùng chính, có thể khởi động
- Mỗi đĩa cứng có thể có tối đa 4 phân vùng này
- Extended partition:
- Phân vùng mở rộng, có thể tạo những vùng luân lý
Physical Volumes
Là một cách gọi khác của partition trong kỹ thuật LVM, nó là những thành phần cơ bản được sử dụng bởi LVM. Một Physical Volume không thể mở rộng ra ngoài phạm vi một ổ đĩa.
Chúng ta có thể kết hợp nhiều Physical Volume thành Volume Groups
Volume Group
Nhiều Physical Volume trên những ổ đĩa khác nhau được kết hợp lại thành một Volume Group
Volume Group được sử dụng để tạo ra các Logical Volume, trong đó người dùng có thể tạo, thay đổi kích thước, lưu trữ, gỡ bỏ và sử dụng.
Một điểm cần lưu ý là boot loader không thể đọc /boot khi nó nằm trên Logical Volume Group. Do đó không thể sử dụng kỹ thuật LVM với /boot mount point
Logical Volume
Volume Group được chia nhỏ thành nhiều Logical Volume, mỗi Logical Volume có ý nghĩa tương tự như partition. Nó được dùng cho các mount point và được format với những định dạng khác nhau như ext2, ext3, ext4,…
Khi dung lượng của Logical Volume được sử dụng hết ta có thể đưa thêm ổ đĩa mới bổ sung cho Volume Group và do đó tăng được dung lượng của Logical Volume
Ví dụ bạn có 4 ổ đĩa mỗi ổ 5GB khi bạn kết hợp nó lại thành 1 volume group 20GB, và bạn có thể tạo ra 2 logical volumes mỗi disk 10GB
File Systems
- Tổ chức và kiểm soát các tập tin
- Được lưu trữ trên ổ đĩa cho phép truy cập nhanh chóng và an toàn
- Sắp xếp dữ liệu trên đĩa cứng máy tính
- Quản lý vị trí vật lý của mọi thành phần dữ liệu
2. Hướng dẫn sử dụng LVM
2.1 Chuẩn bị
- Tạo máy ảo trên vmware Workstation cài hệ điều hành ubuntu server 12.04
- Add thêm một số ổ cứng vào máy ảo
2.2 Tạo Logical Volume trên LVM
B1. Kiểm tra các Hard Drives có trên hệ thống
Bạn có thể kiểm tra xem có những Hard Drives nào trên hệ thống bằng cách sử dụng câu lệnh lsblk
# lsblk
Trong đó sdb, sdc, sdd, sde là các Hard Drives mà mình mới thêm vào
B2. Tạo Partition
Từ các Hard Drives trên hệ thống, bạn tạo các partition. Ở đây, từ sdb, mình tạo các partition bằng cách sử dụng lệnh sau fdisk /dev/sdb
- Trong đó bạn chọn
n
để bắt đầu tạo partition - Bạn chọn
p
để tạo partition primary - Bạn chọn
1
để tạo partition primary 1 - Tại
First sector (2048-20971519, default 2048)
bạn để mặc định - Tại
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519)
bạn chọn+1G
để partition bạn tạo ra có dung lượng 1 G - Bạn chọn
w
để lưu lại và thoát.
Tiếp theo bạn thay đổi định dạng của partition vừa mới tạo thành LVM
- Bạn chọn
t
để thay đổi định dạng partition - Bạn chọn
8e
để đổi thành LVM
Tương tự, bạn tạo thêm các partition primary từ sdb
Tạo các partition primary từ sdc
bằng lệnh fdisk /dev/sdc
B3. Tạo Physical Volume
Tạo các Physical Volume là /dev/sdb1
và /dev/sdc1
bằng các lệnh sau:
# pvcreate /dev/sdb1
# pvcreate /dev/sdc1
Bạn có thể kiểm tra các Physical Volume bằng câu lệnh pvs
hoặc có thể sử dụng lệnh pvdisplay
B4. Tạo Volume Group
Tiếp theo, mình sẽ nhóm các Physical Volume thành 1 Volume Group bằng cách sử dụng câu lệnh sau:
# vgcreate vg-demo1 /dev/sdb1 /dev/sdc1
Trong đó vg-demo1
là tên của Volume Group
Có thể sử dụng câu lệnh sau để kiểm tra lại các Volume Group đã tạo
# vgs
# vgdisplay
B5. Tạo Logical Volume
Từ một Volume Group, chúng ta có thể tạo ra các Logical Volume bằng cách sử dụng lệnh sau:
# lvcreate -L 1G -n lv-demo1 vg-demo1
-L: Chỉ ra dung lượng của logical volume
-n: Chỉ ra tên của logical volume
Trong đó lv-demo1
là tên Logical Volume, vg-demo1
là Volume Group mà mình vừa tạo ở bước trước
Lưu ý là chúng ta có thể tạo nhiều Logical Volume từ 1 Volume Group
Có thể sử dụng câu lệnh sau để kiểm tra lại các Logical Volume đã tạo
# lvs
# lvdisplay
B6. Định dạng Logical Volume
Để format các Logical Volume thành các định dạng như ext2, ext3, ext4, ta có thể làm như sau:
# mkfs -t ext4 /dev/vg-demo1/lv-demo1
B7. Mount và sử dụng
Trong bài lab này, mình sẽ tạo ra một thư mục để mount Logical Volume đã tạo vào thư mục đó
# mkdir demo1
Tiến hành mount logical volume lv-demo1
vào thư mục demo1
như sau:
# mount /dev/vg-demo1/lv-demo1 demo1
Kiểm tra lại dung lượng của thư mục đã được mount:
# df -h
2.3 Thay đổi dung lượng Logical Volume trên LVM
Ở phần trước, mình đã tiến hành tạo Logical Volume trong LVM. Ở phần này, chúng ta sẽ tìm hiểu làm thế nào để có thể thay đổi dung lượng của 1 Logical Volume đã được tạo ở phần trước.
Trước khi thay đổi dung lượng, các bạn cần phải kiểm tra các thông tin hiện có:
# vgs
# lvs
# pvs
Ở đây, mình đã tạo được Logical Volume là lv-demo1, và giả sử Logical Volume này dung lượng đã đầy và chúng ta cần tăng kích thước của nó.
Logical Volume này thuộc Volume Group vg-demo1, để tăng kích thước, bước đầu tiên phải kiểm tra xem Volume Group còn dư dung lượng để kéo giãn Logical Volume không. Logical Volume thuộc 1 Volume Group nhất định, Volume Group đã cấp phát hết thì Logical Volume cũng không thể tăng dung lượng được. Để kiểm tra, ta dùng lệnh sau:
# vgdisplay
Volume Group ở đây vẫn còn dung lượng để cấp phát, ta có thể nhận thấy điều này qua 2 trường thông tin là VG Status resizable
và Free PE / Size 510 / 1.99 GiB
với dung lượng Free là 510*4 = 2040 Mb
Để tăng kích thước Logical Volume ta sử dụng câu lệnh sau:
# lvextend -L +50M /dev/vg-demo1/lv-demo1
Với -L
là tùy chọn để tăng kích thước
Kiểm tra lại bằng cách dùng lệnh # lvs
Sau khi tăng kích thước cho Logical Volume thì Logical Volume đã được tăng nhưng file system trên volume này vẫn chưa thay đổi, bạn phải sử dụng lệnh sau để thay đổi:
# resize2fs /dev/vg-demo1/lv-demo1
Để giảm kích thước của Logical Volume, trước hết các bạn phải umount Logical Volume mà mình muốn giảm
# umount /dev/vg-demo1/lv-demo1
Tiến hành giảm kích thước của Logical Volume
# lvreduce -L 20M /dev/vg-demo1/lv-demo1
Sau đó tiến hành format lại Logical Volume
# mkfs.ext4 /dev/vg-demo1/lv-demo1
Cuối cùng là mount lại Logical Volume
# mount /dev/vg-demo1/lv-demo1 demo1
Kiểm tra kết quả ta được như sau:
2.4 Thay đổi dung lượng Volume Group trên LVM
Ở phần trước mình có thể tăng kích thước của Logical Volume nhưng với điều kiện Volume Group của Logical Volume đó còn dung lượng. Phần này chúng ta sẽ tìm hiểu xem làm thế nào có thể mở rộng thêm kích thước của Volume Group cũng như thu hồi dung lượng của nó.
Việc thay đổi kích thước của Volume Group chính là việc nhóm thêm Physical Volume hay thu hồi Physical Volume ra khỏi Volume Group
Trước tiên, các bạn cần kiểm tra lại các partition và Volume Group
# vgs
# lsblk
Tiếp theo, nhóm thêm 1 partition vào Volume Group như sau:
# vgextend /dev/vg-demo1 /dev/sdb3
Ở đây, muốn nhóm vào Volume Group phải là Physical Volume nên hệ thống đã tự động tạo cho mình Physical Volume và nhóm vào Volume Group.
Chúng ta có thể cắt 1 Physical Volume ra khỏi Volume Group như sau:
# vgreduce /dev/vg-demo1 /dev/sdb3
2.5 Xóa Logical Volume, Volume Group, Physical Volume
Xóa Logical Volumes
Trước tiên ta phải Umount Logical Volume
# umount /dev/vg-demo1/lv-demo1
Sau đó tiến hành xóa Logical Volume bằng câu lệnh sau:
# lvremove /dev/vg-demo1/lv-demo1
Ta kiểm tra lại kết quả
Xóa Volume Group
Trước khi xóa Volume Group, chúng ta phải xóa Logical Volume
Xóa Volume Group bằng cách sử dụng lệnh sau:
# vgremove /dev/vg-demo1
Xóa Physical Volume
Cuối cùng là xóa Physical Volume:
# pvremove /dev/sdb3
Vậy là mình đã hoàn thành một bài lab đơn giản về LVM
3. Tổng kết
Bài viết trên mình đã tổng hợp lại nhũng kiến thức cơ bản trong quá trình mình tìm hiểu về LVM, hy vọng nó có ích cho các bạn.
Bài viết đang có nhiều sai sót và chưa đầy đủ, mong các bạn góp ý cho mình để mình có thể hoàn thiện hơn.
Một số tài liệu tham khảo:
http://www.tecmint.com/extend-and-reduce-lvms-in-linux/
http://www.tecmint.com/manage-multiple-lvm-disks-using-striping-io/