ขยาย Logical Volume (LVM) บน Linux
LVM (Logical Volume Manager) เป็นชั้นจัดการดิสก์ที่ทำให้ขยายพื้นที่ได้โดยไม่ต้องย้ายข้อมูลหรือปิดเครื่อง Ubuntu Server และ AlmaLinux/Rocky Linux ที่ติดตั้งแบบมาตรฐานมักใช้ LVM สำหรับ / อยู่แล้ว เมื่อพื้นที่ใกล้เต็มและคุณได้เพิ่มขนาดดิสก์หรือเพิ่มดิสก์ใหม่ให้เซิร์ฟเวอร์แล้ว บทความนี้จะพาขยาย Logical Volume และ Filesystem ให้ใช้พื้นที่ใหม่นั้น
LVM มี 3 ชั้น คือ Physical Volume (PV) ซึ่งเป็นดิสก์หรือพาร์ติชัน, Volume Group (VG) ซึ่งเป็นกองพื้นที่รวมจาก PV หลายตัว และ Logical Volume (LV) ซึ่งเป็นส่วนที่แบ่งจาก VG ไปสร้าง Filesystem การขยายจึงต้องทำจากล่างขึ้นบน: ขยาย PV หรือเพิ่ม PV ใหม่เข้า VG แล้วจึงขยาย LV และ Filesystem
สิ่งที่ต้องเตรียม
- เซิร์ฟเวอร์ Ubuntu 22.04/24.04 หรือ AlmaLinux/Rocky Linux 8-9 ที่ใช้ LVM และสิทธิ์ sudo
- พื้นที่ดิสก์ที่เพิ่มแล้วจากฝั่งผู้ให้บริการ (ขยายดิสก์เดิม หรือเพิ่มดิสก์ใหม่) ดู Volume Disk บน Cloud ของ TDC
- ข้อมูลสำรองหรือ Snapshot ล่าสุด แม้การขยายจะปลอดภัยโดยทั่วไป แต่การพิมพ์ชื่อดิสก์ผิดอาจทำลายข้อมูลได้ ดู การ Backup Server บน Cloud ของ TDC
หมายเหตุ: ถ้าเครื่องของคุณไม่ได้ใช้ LVM (ผลของ
lsblkไม่มีบรรทัดชนิดlvm) ให้ทำตามบทความ การขยายพื้นที่ Partition หลังเพิ่มพื้นที่ Disk Space (Linux) แทน
ขั้นตอนที่ 1: สำรวจโครงสร้างดิสก์ปัจจุบัน
lsblk
sudo pvs
sudo vgs
sudo lvs
df -hT
ตัวอย่างผลของ lsblk บน Ubuntu
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 2G 0 part /boot
└─vda3 252:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /
จากตัวอย่างนี้ ดิสก์ vda ถูกขยายเป็น 100G แล้ว แต่พาร์ติชัน vda3 ที่เป็น PV ยังมีขนาด 48G ชื่อดิสก์ในเครื่องของคุณอาจเป็น sda หรือ vda ให้ใช้ชื่อตามผลจริงเสมอ ส่วนชื่อ VG และ LV ดูได้จาก vgs และ lvs เช่น Ubuntu ใช้ ubuntu-vg/ubuntu-lv ส่วน AlmaLinux/Rocky มักเป็น almalinux/root หรือ rl/root
ให้ดูคอลัมน์ VFree ของ vgs ด้วย ถ้ามีพื้นที่ว่างเหลืออยู่แล้ว สามารถข้ามไปขั้นตอนที่ 4 ได้เลย กรณีนี้พบบ่อยบน Ubuntu เพราะตัวติดตั้งมักสร้าง LV ไม่เต็ม VG
ขั้นตอนที่ 2 (กรณี A): ขยาย PV หลังขยายดิสก์เดิม
ถ้า lsblk ยังแสดงขนาดดิสก์เดิม ให้สั่งให้ Kernel อ่านขนาดดิสก์ใหม่ (เปลี่ยน vda ตามเครื่องของคุณ)
echo 1 | sudo tee /sys/class/block/vda/device/rescan
ถ้าไม่มีไฟล์ rescan สำหรับดิสก์ชนิดนั้น ให้รีบูตเครื่องหนึ่งครั้ง จากนั้นติดตั้งเครื่องมือ growpart
# Ubuntu
sudo apt install cloud-guest-utils
# AlmaLinux / Rocky
sudo dnf install cloud-utils-growpart
ขยายพาร์ติชันที่ 3 ของดิสก์ vda ให้เต็มพื้นที่ แล้วขยาย PV ตาม (สังเกตว่า growpart ใส่ชื่อดิสก์กับเลขพาร์ติชันแยกกันด้วยช่องว่าง)
sudo growpart /dev/vda 3
sudo pvresize /dev/vda3
ผลที่คาดหวังคือ CHANGED: partition=3 ... และ 1 physical volume(s) resized จากนั้น sudo vgs ต้องแสดง VFree เพิ่มขึ้น growpart ทำงานได้ขณะระบบกำลังใช้งาน และจะขยายได้เฉพาะพาร์ติชันสุดท้ายที่มีพื้นที่ว่างต่อท้ายเท่านั้น
ขั้นตอนที่ 3 (กรณี B): เพิ่มดิสก์ใหม่เข้า Volume Group
ถ้าคุณเพิ่มดิสก์ลูกใหม่ เช่น vdb ให้ยืนยันก่อนว่าดิสก์นั้นว่างจริงและไม่มีการ Mount
lsblk -f /dev/vdb
ถ้าคอลัมน์ FSTYPE ว่างและไม่มีพาร์ติชัน จึงสร้าง PV และเพิ่มเข้า VG
sudo pvcreate /dev/vdb
sudo vgextend ubuntu-vg /dev/vdb
หมายเหตุ:
pvcreateเขียนทับส่วนหัวของดิสก์ ถ้าเลือกดิสก์ผิดลูก ข้อมูลในดิสก์นั้นจะเข้าถึงไม่ได้ ตรวจชื่อดิสก์และขนาดให้ตรงกับที่เพิ่มไปก่อนกด Enter ทุกครั้ง อีกข้อที่ควรรู้คือ LV ที่กระจายอยู่บนหลายดิสก์จะเสียหายทั้งก้อนถ้าดิสก์ลูกใดลูกหนึ่งหาย ถ้าต้องการแยกข้อมูลไว้ในดิสก์ของตัวเอง การ Mount ดิสก์ใหม่เป็นโฟลเดอร์แยกอาจเหมาะกว่า ดู Mount ดิสก์แบบถาวรด้วย /etc/fstab และ UUID
ขั้นตอนที่ 4: ขยาย Logical Volume และ Filesystem
เมื่อ VG มีพื้นที่ว่างแล้ว ขยาย LV ด้วยคำสั่งเดียวที่ขยาย Filesystem ไปพร้อมกัน
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
-l +100%FREE ใช้พื้นที่ว่างทั้งหมดของ VG ถ้าต้องการเพิ่มเป็นจำนวนแน่นอนให้ใช้ -L +20G แทน ส่วน -r สั่งให้ขยาย Filesystem ต่อทันที โดยเลือกเครื่องมือให้เองตามชนิด ผลที่คาดหวังคือ Logical volume ubuntu-vg/ubuntu-lv successfully resized ตามด้วยข้อความจาก resize2fs หรือ xfs_growfs
ถ้าขยาย LV ไปแล้วแต่ลืมใส่ -r ให้ขยาย Filesystem แยกตามชนิดที่เห็นในคอลัมน์ Type ของ df -hT
| Filesystem | คำสั่ง | สิ่งที่ระบุ |
|---|---|---|
| ext4 (ค่าเริ่มต้นของ Ubuntu) | sudo resize2fs /dev/ubuntu-vg/ubuntu-lv | อุปกรณ์ของ LV |
| XFS (ค่าเริ่มต้นของ AlmaLinux/Rocky) | sudo xfs_growfs / | Mount Point |
ทั้งสองแบบขยายได้ขณะ Mount และใช้งานอยู่ ไม่ต้องหยุด Service
ตัวอย่างบน AlmaLinux / Rocky
เครื่อง AlmaLinux 9 ที่ดิสก์ sda ถูกขยาย และ PV อยู่ที่ sda3 ใน VG ชื่อ almalinux
sudo growpart /dev/sda 3
sudo pvresize /dev/sda3
sudo lvextend -r -l +100%FREE /dev/almalinux/root
df -hT /
ตรวจสอบผลลัพธ์
sudo pvs
sudo vgs
sudo lvs
df -hT /
คอลัมน์ VFree ควรเหลือ 0 (ถ้าใช้ 100%FREE) ขนาด LV ใน lvs และคอลัมน์ Size ใน df -hT ต้องเพิ่มขึ้นตามพื้นที่ที่เพิ่ม ถ้า lvs เพิ่มแต่ df ไม่เพิ่ม แปลว่ายังไม่ได้ขยาย Filesystem
ปัญหาที่พบบ่อย
growpart: NOCHANGE: partition 3 is size ... it cannot be grown
Kernel ยังไม่เห็นขนาดดิสก์ใหม่ หรือพาร์ติชันนั้นไม่ใช่พาร์ติชันสุดท้าย ตรวจ lsblk อีกครั้ง ทำ rescan หรือรีบูต ถ้ามีพาร์ติชันอื่นต่อท้าย (เช่น Swap) จะขยายด้วย growpart ไม่ได้ ให้ใช้วิธีเพิ่มดิสก์ใหม่ตามกรณี B
Insufficient free space
VG ไม่มีพื้นที่ว่างตามที่ขอ ตรวจ VFree ด้วย vgs และตรวจว่าทำ pvresize หรือ vgextend แล้ว หรือใช้ -l +100%FREE แทนการระบุขนาดตายตัว
Can't open /dev/vdb exclusively. Mounted filesystem?
ดิสก์กำลังถูกใช้งานหรือถูก Mount อยู่ แปลว่าอาจไม่ใช่ดิสก์ว่างที่เพิ่งเพิ่ม ให้หยุดและตรวจสอบด้วย lsblk -f ก่อนดำเนินการต่อ
ต้องการลดขนาด LV
XFS ลดขนาดไม่ได้เลย ส่วน ext4 ลดได้แต่ต้อง Unmount และมีความเสี่ยงสูง ในทางปฏิบัติควรสร้าง LV ใหม่ขนาดที่ต้องการแล้วย้ายข้อมูล หรือปรึกษาทีมงานก่อน ทางที่ดีคือขยายทีละน้อยตามความจำเป็น แทนการขยายเผื่อไว้มาก ๆ
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อเซิร์ฟเวอร์ ระบบปฏิบัติการ คำสั่งที่ใช้ และข้อความ Error ที่พบ เพื่อให้ตรวจสอบได้รวดเร็วขึ้น
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


