๐ง Linux LVM ่็กฌ็ขๆดๅฎนๅฎๆดๆๅญธ:PV / VG / LV ๆดๅ 、็ธฎๆธ、็ทไธๆดๅฎนไธๆฌกๆๆ
ๅพๅคไบบๅจ Linux ไผบๆๅจไธ่ทไธ่ท,็ช็ถ็ผ็พ:/var ๅฟซ็、/data ไธๅค 、VM ็ฃ็ข่ฆๅ ๅคง,ๆๆณๅฐไธ้ๅงๅๅฒ็ฃ็ขๅๅคชๅฐ。 ้ๆๅฆๆๆฒๆไฝฟ็จ LVM(Logical Volume Manager),ๆดๅฎนๅฐฑๆ่ฎๅพ้ๅธธ็่ฆ。 ๆฌ็ฏๅพ ๆฆๅฟต → ๅปบ็ฝฎ → ๆดๅฎน → ็ธฎๅฎน → ๅธธ่ฆ้ฏ่ชคๆๆฅ ไธๆฌก่ฌๆธ ๆฅ,ไธฆ็คบ็ฏ EXT4 / XFS ็ทไธๆดๅฎน ็ๅฏฆๆฐๆต็จ。
ไธ、็บไป้บผ่ฆ็จ LVM?ๅณ็ตฑๅๅฒ vs LVM
ๅณ็ตฑๅๆณๆฏๅจ /dev/sda ไธ็จ fdisk ๆ parted ๅๅบๅฎๅคงๅฐ็ๅๅฒๅ,ไพๅฆ:
/dev/sda1 → /boot
/dev/sda2 → /
/dev/sda3 → /var
/dev/sda4 → /home
็ผบ้ปๆฏ:
- ไธ้ๅงๅคงๅฐๆฑบๅฎ้ฏไบ,ไนๅพ่ฆ่ชฟๆดๅฐฑๅพ้บป็ ฉ。
- ๆฐๅขไธ้ก็กฌ็ข,ๅช่ฝๅๆๆฐๅๅฒๅ,ๆฒ่พฆๆณ่ผ้ฌ「ไฝตๅ ฅ」ๅๆฌ็ /var ๆ /data。
LVM ๅๆฏๆ็ฃ็ขๆณๆ「็ฉๆจ」:
- PV(Physical Volume):ๅฏฆ้ซ็ฃ็ขๆๅๅฒๅ,ไพๅฆ
/dev/sda2、/dev/sdb。 - VG(Volume Group):ๅฎน้ๆฑ ,ๆๅคๅ PV ๆนๅจไธ่ตท,ๅไธๅ「ๅคง็็กฌ็ข็ๆ ฝ」。
- LV(Logical Volume):ๅจ VG ไธๅๅบไพ็「้่ผฏๅๅฒ」,ๅฏ้จๆๅขๆธๅฎน้,ๆๅพๅๆ ผๅผๅๆ EXT4 / XFS ๆ่ผ。
๐ ็ฐกๅ็คบๆๅ:ๅณ็ตฑ vs LVM
【ๅณ็ตฑๅๅฒ】
/dev/sda
├─ /dev/sda1 → /
├─ /dev/sda2 → /var
└─ /dev/sda3 → /home
【LVM ๆถๆง】
/dev/sda2 /dev/sdb
│ │
└── PVs(Physical Volume)
│
└── VG:vg_data
├── LV:lv_var → /var
└── LV:lv_home → /home
็ถ็ฉบ้ไธๅค ๆ,ไฝ ๅฏไปฅ:
- ๅๅ ไธ้ก็กฌ็ข่ฎๆๆฐ็ PV。
- ๆ PV ๅ ๅ ฅๅไธๅ VG → ๆดๅคงๅฎน้ๆฑ 。
- ๅๆๆๅ LV(ไพๅฆ
lv_var)ๅพๅค้ทไธ้ป,็ทไธๆดๅฎน ๆชๆก็ณป็ตฑๅณๅฏ。
ไบ、LVM ๆถๆง็ธฝ่ฆฝ:PV / VG / LV ้ไฟ
ไปฅไธ็จไธๅๅ ธๅไพๅญ่ชชๆ:
# ๅ่จญไฝ ๆๅ
ฉ้ก็ฃ็ข
/dev/sda2 → ่ฆๆฟไพๅ LVM
/dev/sdb → ๆฐๅข็กฌ็ข,ไน่ฆไฝต้ฒๅไธๅ LVM
# ่ฆ้ๆ็็ฎๆจ
/dev/vg_main/lv_root → /
/dev/vg_main/lv_var → /var
/dev/vg_main/lv_data → /data
้่ผฏๅๅฆไธ:
/dev/sda2 /dev/sdb
│ │
└── PV0 └── PV1
│
└────── VG:vg_main
├── LV:lv_root → /
├── LV:lv_var → /var
└── LV:lv_data → /data
ไนๅพ็ถ /data ไธๅค ็จ,ๅช่ฆ:
VG ๅขๅ ๅฎน้ → LV ๆดๅฎน → ๆชๆก็ณป็ตฑ็ทไธๆดๅฎน,ๅฐฑ่ฝๅฎๆ,่ไธ็จๆฌๅฎถๆ้ๆฐๅๅฒ。
ไธ、ๅปบ็ซ LVM:ๅพ็ฃ็ขๅฐๆ่ผ้ป(ไธๆญฅไธๆญฅ)
1️⃣ ๆฐๅข็กฌ็ข、ๅปบ็ซๅๅฒๅ(่ฅไฝฟ็จๆด้ก็ฃ็ขๅฏ็ฅ้ๅๅฒ)
ๅ่จญๆฐ็กฌ็ข็บ /dev/sdb:
# ๆนๅผไธ:ไฝฟ็จๆด้ก็ฃ็ขๅ PV(่ผ็ฐกๅฎ)
sudo pvcreate /dev/sdb
# ๆนๅผไบ:ๅ
ๅไธๅๅๅฒๅๅ็จ(่ผๅฝๆง)
sudo fdisk /dev/sdb
# ๅปบ็ซ /dev/sdb1,type ่จญ็บ 8e(Linux LVM)
sudo pvcreate /dev/sdb1
2️⃣ ๅปบ็ซ PV、VG、LV
# ๅปบ็ซ PV
sudo pvcreate /dev/sda2
sudo pvcreate /dev/sdb1 # ่ฅๆ
# ๅปบ็ซ VG(ๅฎน้ๆฑ )
sudo vgcreate vg_main /dev/sda2
sudo vgextend vg_main /dev/sdb1 # ไนๅพๆฐๅข PV ไน็จ vgextend
# ๅปบ็ซ LV(้่ผฏๅท)
sudo lvcreate -L 20G -n lv_root vg_main
sudo lvcreate -L 50G -n lv_var vg_main
sudo lvcreate -L 100G -n lv_data vg_main
3️⃣ ๆ ผๅผๅๆชๆก็ณป็ตฑไธฆๆ่ผ
ๅ่จญ่ฆไฝฟ็จ EXT4:
sudo mkfs.ext4 /dev/vg_main/lv_root
sudo mkfs.ext4 /dev/vg_main/lv_var
sudo mkfs.ext4 /dev/vg_main/lv_data
sudo mkdir -p /var /data
sudo mount /dev/vg_main/lv_var /var
sudo mount /dev/vg_main/lv_data /data
/etc/fstab ่จญๅฎ็ฏไพ:
/dev/vg_main/lv_var /var ext4 defaults 0 2
/dev/vg_main/lv_data /data ext4 defaults 0 2
ๅ、LVM ็ทไธๆดๅฎน:EXT4 / XFS ๅฏฆๆฐ็ฏไพ
้ๅธธๆๅธธ็จ็ๆ
ๅขๆฏ:
ๆฐๅข็กฌ็ข → ๅ ๅ
ฅ VG → ๆดๅ
ๆๅ LV → ็ทไธๆดๅฎนๆชๆก็ณป็ตฑ。
ไปฅไธไปฅ /data ๆ่ผๅจ /dev/vg_main/lv_data ็บไพ。
ๆญฅ้ฉ 1:็ขบ่ช็พๆณ
df -h
lsblk
sudo vgs
sudo lvs
ๆญฅ้ฉ 2:ๆฐๅข PV ไธฆๆดๅ VG
# ๆฐ็กฌ็ข /dev/sdc
sudo pvcreate /dev/sdc
# ๆ /dev/sdc ๅ ๅ
ฅ็พๆ VG
sudo vgextend vg_main /dev/sdc
# ๅ็ไธๆฌก
sudo vgs
ๆญฅ้ฉ 3:ๆดๅ LV(ไธๅธ่ผ、ไธไธญๆทๆๅ)
ๅ่จญ่ฆ่ฎ lv_data ๅๅค 100G:
# ๆนๅผไธ:ๅ ไธๅบๅฎๅฎน้(+100G)
sudo lvextend -L +100G /dev/vg_main/lv_data
# ๆนๅผไบ:็ดๆฅๅๆ VG ๅฉ้ค็ฉบ้ๅ
จ้จ
sudo lvextend -l +100%FREE /dev/vg_main/lv_data
ๆญฅ้ฉ 4:็ทไธๆดๅฎนๆชๆก็ณป็ตฑ
EXT4:
# EXT4 ๅฏไปฅๅจ็ทไธๆดๅฎน(ๆ่ผ็ๆ
ไธ)
sudo resize2fs /dev/vg_main/lv_data
df -h /data
XFS:
# XFS ็จ xfs_growfs,ไธๅฟ
้ ๅจๆ่ผไธญ็็ฎ้ไธๅท่ก
sudo xfs_growfs /data
df -h /data
ๅท่กๅฎๅพ,/data ๅฎน้ๅฐฑๆ็ดๆฅ่ฎๅคง,ๅฐๆๅๅนพไน้ถๅๆฉ。
ไบ、LVM ็ธฎๅฎน(็นๅฅๅฑ้ช):ๆต็จ่้ขจ้ช
็ธฎๅฎนๆฐธ้ ๆฏๆดๅฎนๅฑ้ช,ๅปบ่ญฐๅๅๆฏ:
- ่ฝไธ็จ็ธฎๅฎนๅฐฑไธ่ฆ็จ,ๆนๆๆฐๅขไธๅๆฐ็ LV + rsync ๆฌ่ณๆๆฏ่ผๅฎๅ จ。
- ็ธฎๅฎนๅไธๅฎ่ฆๅฎๆดๅไปฝ。
- XFS ไธๆฏๆด็ธฎๅฎน,ๆณ็ธฎๅช่ฝๆน่ตฐ「ๆฐ LV + ๆฌๅฎถ」่ทฏ็ท。
✅ EXT4 ๅฎๅ จ็ธฎๅฎนๆต็จ(/data ็บไพ)
- ๅๆญข็ธ้ๆๅ(ไพๅฆ่ณๆๅบซ、NFS、Web ๆๅ)。
- ๅธ่ผๆชๆก็ณป็ตฑ。
- ๆชขๆฅๆชๆก็ณป็ตฑ。
- ๅ ็ธฎๅฐๆชๆก็ณป็ตฑ(ๅฟ ้ ๅ ็ธฎๆชๆก็ณป็ตฑๅ็ธฎ LV)。
- ๆๅพๆ็ธฎๅฐ LV。
# 1. ๅๆญขๆๅ(ไปฅ็ฏไพไปฃๆฟ)
sudo systemctl stop nginx
sudo systemctl stop mysqld
# 2. ๅธ่ผ
sudo umount /data
# 3. ๆชขๆฅๆชๆก็ณป็ตฑ
sudo e2fsck -f /dev/vg_main/lv_data
# 4. ๅ
็ธฎๆชๆก็ณป็ตฑ(ๅ่จญ่ฆ็ธฎๅฐ 200G)
sudo resize2fs /dev/vg_main/lv_data 200G
# 5. ๅ็ธฎ LV
sudo lvreduce -L 200G /dev/vg_main/lv_data
# 6. ้ๆฐๆ่ผไธฆ็ขบ่ช
sudo mount /data
df -h /data
ๅฆๆไฝ ๅ้ไพ(ๅ ็ธฎ LV ๅ็ธฎๆชๆก็ณป็ตฑ),้ซๆฉ็็ดๆฅๆฏๆๆชๆก็ณป็ตฑ。 ้ไนๆฏๅพๅคไบบๅฐ LVM ็ธฎๅฎนๅฟ็้ฐๅฝฑ็ๅๅ 。
ๅ ญ、ๅธธ่ฆ้ฏ่ชค่ๆๆฅ:ๅฏฆๅ่ธฉ้ทๆด็
1️⃣ device is busy:็กๆณๅธ่ผ
umount: /data: target is busy.
ไปฃ่กจไปๆไบบๅจไฝฟ็จ่ฉฒๆ่ผ้ป,ๅฏ็จ:
sudo lsof +f -- /data
sudo fuser -vm /data # ๅๅบไฝฟ็จไธญ็ process
ๆพๅบ็ธ้ๆๅไธฆๅๆญข,ๆ้ๆฐ umount。
2️⃣ not enough free space in VG:VG ็ฉบ้ไธๅค
sudo lvextend -L +100G /dev/vg_main/lv_data
Insufficient free space: ...
็จ vgs ๆฅ็:
sudo vgs
sudo pvs
ๅฆๆ VFree = 0,ไปฃ่กจ VG ็็ฉบ้ๅทฒ็จๅฎ,้่ฆ:
- ๆฐๅขไธ้ก็ฃ็ขๅปบ็ซ PV,ๅ็จ
vgextendๅ ้ฒไพ。 - ๆๅช้คๅ ถไปไธๅฟ ่ฆ็ LV。
3️⃣ ๅฟ่จ่ทๆชๆก็ณป็ตฑๆดๅฎน
ๆไบไบบๅชๅไบ lvextend,็ตๆ df -h ็่ตทไพๅฎน้ๆฒ่ฎ。
้ๆฏๅ ็บ ๆชๆก็ณป็ตฑๆฌ่บซ้ๆฒ้ทๅคง。
# EXT4
sudo resize2fs /dev/vg_main/lv_data
# XFS
sudo xfs_growfs /data
4️⃣ Proxmox / ่ๆฌๆฉๆดๅฎนๆ ๅข็ฐก่ฟฐ
ๅจ่ๆฌๅ็ฐๅขๅธธ่ฆๆต็จๆฏ:
- ๅ ๅจ Proxmox ไป้ขๆ VM ็่ๆฌ็ฃ็ขๅ ๅคง(ไพๅฆ็ฑ 100G → 150G)。
- ้ฒๅ
ฅ VM ๅ
ง้จ,็จ
lsblk็ขบ่ช่ๆฌ็ฃ็ขๅทฒ่ฎๅคง。 - ๅฆๆๆฏ LVM ๆถๆง,ๅไพ็
งๆฌๆๆต็จ:
pvresize → lvextend → ๆชๆก็ณป็ตฑๆดๅฎน。
# ๅจ VM ๅ
ง้จ
sudo pvdisplay
sudo pvresize /dev/sda2 # ๅ่จญ PV ๅจ /dev/sda2
sudo lvextend -L +50G /dev/vg_main/lv_data
sudo xfs_growfs /data # ๆ resize2fs
ไธ、LVM ็ฎก็ๅธธ็จๆไปค้ๆฅ่กจ
| ็จ้ | ๆไปค็ฏไพ | ่ชชๆ |
|---|---|---|
| ๆฅ็ PV/VG/LV ็ๆ | pvs / vgs / lvs |
ๅฟซ้็ธฝ่ฆฝ LVM ็ฎๅ้ ็ฝฎ่ๅฉ้คๅฎน้ |
| ๅปบ็ซ PV | pvcreate /dev/sdb |
ๅฐๅฏฆ้ซ็ฃ็ขๆๅๅฒๅๅ ๅ ฅ LVM ไธ็ |
| ๅปบ็ซ VG | vgcreate vg_main /dev/sda2 |
ๅปบ็ซๅฎน้ๆฑ ,ไนๅพ LV ้ฝๅพ้้ๅ |
| ๆดๅ VG | vgextend vg_main /dev/sdb |
ๆๆฐ็ PV ไฝตๅ ฅๅไธๅ VG |
| ๅปบ็ซ LV | lvcreate -L 50G -n lv_data vg_main |
ๅพ VG ๆฟๅบๆๅฎๅฎน้ๅฝขๆ LV |
| ๆดๅ LV | lvextend -L +100G /dev/vg_main/lv_data |
่ฎ LV ๅพๅค้ทๆดๅคง,ๆชๆก็ณป็ตฑๅ็ทไธๆดๅฎน |
| ็ธฎๅฐ LV(EXT4) | resize2fs → lvreduce |
ๅ ็ธฎๆชๆก็ณป็ตฑๅ็ธฎ LV,ไธๅฟ ้ ๅธ่ผ |
๐งญ ๅฏฆไฝ่กๅๆธ ๅฎ
✅ ๅจๆธฌ่ฉฆ็ฐๅขไธญๅปบ็ซไธๅๅฐๅ VG + LV,็ๆๅบๆฌๆไปค(pvcreate / vgcreate / lvcreate)
✅ ็ทด็ฟไธๆฌก「ๆฐๅข็กฌ็ข → pvcreate → vgextend → lvextend → ๆชๆก็ณป็ตฑ็ทไธๆดๅฎน」
✅ ้ๅฐ EXT4 ๅจ้้้ต่ณๆ้ไธๅไธๆฌก็ธฎๅฎนๅฏฆ้ฉ,็่งฃๆญฃ็ขบ้ ๅบ่้ขจ้ช
✅ ๅจ Proxmox / ่ๆฌๆฉ็ฐๅขๅฏฆ้ๆไฝไธๆฌก:ๅ
ๅจ Hypervisor ๆด็ฃ,ๅๅจ VM ๅ
ง็จ LVM ๆดๅฎน
✅ ๅฐ็ฎๅ Production ไธปๆฉ็ LVM ๆๅฟซ็
ง่ๅไปฝ็ญ็ฅๆด็ๆๆไปถ(ๅซ rollback ๆต็จ)
๐ ็ต่ช:ๆ็ฃ็ข็ถ็ฉๆจ,ๆๆ่ชฟๅบฆ็ฉบ้
LVM ่ฝ่ตทไพๆฆๅฟตๅพๅค:PV / VG / LV、EXT4 / XFS、ๆดๅฎน่็ธฎๅฎน้ ๅบ,ไฝไธๆฆไฝ ๅจๆธฌ่ฉฆ็ฐๅขไธญ่ตฐ้ๅนพๆฌกๆต็จ, ๅฐฑๆ็ผ็พ:ๅฎๅ ถๅฏฆๅชๆฏๅคไบไธๅฑค「ๅฝๆงๆฝ่ฑก」,่ฎไฝ ๅฏไปฅไธ็จ่ขซ็ถๅ็ๅๅฒๆฑบๅฎ็ถๆญป。
ๅฐคๅ ถๅจ Proxmox ๅข้、่ณๆๅบซไผบๆๅจ、Log / Backup ็ฏ้ป้็จฎ็ฃ็ขๆ้ท้ๅบฆๅพๅฟซ็ๅ ดๆฏ, LVM ๅนพไนๆฏๅฟ ๅๆ่ฝ。ๅปบ่ญฐไฝ ๅ ๅจ้้้ต็ฐๅขๆๆฌๆ็ๆไปคๅ จ้จ่ท้ไธๆฌก,็ๆๆดๅฎน่็ธฎๅฎนๆต็จ, ๅๆ้ๅฅๆต็จๅฏซๆ่ชๅทฑ็「ๆจๆบไฝๆฅญๆไปถ(SOP)」,ไนๅพๅฐฑไธๆๆฏๆฌก้ๅฐ็กฌ็ข็ๆ้ฝๅจๆ็ซ。
๐ ๅปถไผธ้ฑ่ฎ
- ๐ง Linux ๆชๆก็ณป็ตฑๆทฑๅ ฅๅๆ:EXT4、XFS、Btrfs、ZFS ๅช็ผบ้ป่ๅฏฆๅ้ธๆๆๅ
- ๐ง Linux systemd ๆทฑๅ ฅ่งฃๆ่ๅๅๆต็จ็ฎก็
- ๐ง Linux Nginx ๅๅไปฃ็ๅฏฆๆฐ:HTTPS、่ฒ ่ผๅนณ่กก่ๅพ็ซฏๆๅๆดๅ
— WWFandy・Linux LVM ่็ฃ็ขๆดๅฎน็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ