Mô hình: disk/partition → PV (pvcreate) → gom vào VG (vgcreate/vgextend) → cắt thành LV (lvcreate/lvextend) → filesystem → mount. Ubuntu Server cài mặc định thường để LV ubuntu-vg/ubuntu-lv chỉ dùng một phần VG: kiểm tra vgs trước khi thêm disk. Ổ đầy cần dọn trước: Ổ đĩa đầy.
Xem hiện trạng
| Mục đích | Lệnh |
|---|---|
| Cây disk/partition/LV, filesystem, UUID, mount | lsblk -f |
| Kích thước, model, loại (disk/part/lvm) | lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL |
| UUID và type của một device | blkid /dev/sdb1 |
| Tóm tắt PV / VG / LV | pvs / vgs / lvs |
| VG còn trống bao nhiêu | vgs -o vg_name,vg_size,vg_free |
| Chi tiết | pvdisplay / vgdisplay ubuntu-vg / lvdisplay |
| Dung lượng filesystem | df -hT |
| Disk mới gắn nóng (VM) chưa thấy | echo 1 | sudo tee /sys/class/scsi_device/*/device/rescan hoặc echo '- - -' | sudo tee /sys/class/scsi_host/host*/scan |
Mở rộng
| Mục đích | Lệnh |
|---|---|
| Dùng nốt chỗ trống trong VG + resize filesystem | lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv |
| Thêm đúng 20G | lvextend -r -L +20G /dev/ubuntu-vg/ubuntu-lv |
| Thêm disk mới vào VG | pvcreate /dev/sdb rồi vgextend ubuntu-vg /dev/sdb |
| Disk ảo được tăng size: nới partition | growpart /dev/sda 3 (gói cloud-guest-utils, có khoảng trắng giữa disk và số partition) |
| Báo LVM PV đã lớn hơn | pvresize /dev/sda3 |
Resize filesystem thủ công (nếu quên -r) |
ext4: resize2fs /dev/ubuntu-vg/ubuntu-lv; XFS: xfs_growfs / (theo mount point) |
# Quy trình hay gặp: disk VM tăng từ 50G lên 100G, LV root nằm trên /dev/sda3
lsblk # xác nhận sda đã 100G, sda3 vẫn nhỏ
sudo growpart /dev/sda 3
sudo pvresize /dev/sda3
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
df -h /Mở rộng ext4/XFS làm online được. Thu nhỏ (lvreduce) thì XFS không hỗ trợ, ext4 phải umount và resize filesystem trước LV; sai thứ tự là mất dữ liệu. Backup trước khi làm.
Tạo volume mới và mount
| Mục đích | Lệnh |
|---|---|
| Tạo VG từ disk mới | pvcreate /dev/sdc && vgcreate data-vg /dev/sdc |
| Tạo LV 50G / dùng hết VG | lvcreate -n data -L 50G data-vg / lvcreate -n data -l 100%FREE data-vg |
| Tạo filesystem | mkfs.ext4 /dev/data-vg/data hoặc mkfs.xfs /dev/data-vg/data |
| Mount thử | mkdir -p /srv/data && mount /dev/data-vg/data /srv/data |
| Snapshot LV (trước khi nâng cấp) | lvcreate -s -n data-snap -L 5G /dev/data-vg/data |
| Gỡ mount / thấy ai đang giữ | umount /srv/data / fuser -vm /srv/data |
# <device> <mount> <fs> <options> <dump> <pass>
UUID=3f1c2a9e-0000-4000-8000-000000000001 /srv/data ext4 defaults,nofail 0 2sudo blkid -s UUID -o value /dev/data-vg/data # lấy UUID
sudo findmnt --verify # kiểm tra fstab trước khi reboot
sudo systemctl daemon-reload # systemd sinh lại mount unit từ fstab
sudo mount -a && findmnt /srv/dataDisk dữ liệu (không phải root) nên có nofail: disk hỏng/thiếu thì máy vẫn boot thay vì rơi vào emergency mode. Fstab sai làm máy không boot: xem Linux không boot.