Logical Volume Manager (LVM) là gì ?

Logical Volume Manager (LVM) là gì ?
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
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 saufdisk /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.
CSKH 24/7
028.66828299
Kỹ thuật
0968592399
Tư vấn
0919383299
Gọi điện
SMS
 Sales
 Tech