ถ้าคุณคิดว่าการจัดการ disk partition ต้องปิดระบบแล้วลุ้นว่ารีบูตแล้วจะทำงานได้ปกติหรือเปล่า ต้องบอกว่าคุณกำลังพลาดความสามารถของ Linux LVM mount ไปอย่างน่าเสียดาย เพราะการจัดการ storage ไม่จำเป็นต้องยุ่งยากขนาดนั้น
คู่มือนี้จะแสดงวิธีสร้าง LVM บน Linux, mount LVM partitions และจัดการ logical volumes โดยไม่ต้องหยุดระบบ คุณจะได้เรียนรู้คำสั่ง Linux LVM ที่จำเป็นสำหรับระบบ Ubuntu LVM และ CentOS (หรือตัวแทนรุ่นใหม่ที่ใช้งานอยู่ในปัจจุบัน)
สรุปสั้น ๆ
- LVM สร้าง storage layer ที่ยืดหยุ่นระหว่าง physical disk กับ file system ช่วยให้คุณปรับขนาด partition ได้ในขณะที่ระบบยังทำงานอยู่
- ติดตั้งด้วย apt install lvm2 บน Ubuntu หรือ dnf install lvm2 บน Rocky Linux/AlmaLinux (CentOS เลิกใช้แล้ว ใช้ตัวเหล่านี้แทน)
- สร้าง LVM โดยเริ่มต้นไดรฟ์ด้วย pvcreate, จัดกลุ่มด้วย vgcreate, และแบ่ง Logical Volume ด้วย lvcreate
- Mount พาร์ติชัน LVM เหมือนพาร์ติชันทั่วไป หลังจาก Format ด้วย mkfs.ext4 และเพิ่ม Entry ใน /etc/fstab
- คำสั่งหลัก: พีวีเอส, วีจีเอส, ลวส แสดงการตั้งค่าของคุณ; lvresize ปรับขนาดได้ทันทีโดยไม่ต้องหยุดระบบ; lvcreate -s สร้างสแนปช็อต
LVM ใน Linux คืออะไร?

LVM (Logical Volume Manager) ทำหน้าที่เป็นชั้นกลางระหว่างดิสก์ทางกายภาพกับระบบไฟล์ของคุณ แทนที่จะแบ่งพาร์ติชันแบบตายตัวลงบนดิสก์โดยตรง LVM สร้างชั้นที่ยืดหยุ่น ให้คุณปรับขนาด ย้าย และ Snapshot พื้นที่จัดเก็บได้โดยไม่ต้องหยุดระบบ
นี่คือสิ่งที่เกิดขึ้นเบื้องหลัง ดิสก์ทางกายภาพของคุณจะกลายเป็น "Physical Volume" ซึ่งนำมารวมกันเป็น "Volume Group" จากนั้นคุณสร้าง "Logical Volume" จาก Group เหล่านั้น ซึ่งทำงานเหมือนพาร์ติชันปกติแต่มีความยืดหยุ่นที่แท้จริง
ความแตกต่างที่เห็นได้ชัดคือตอนที่คุณต้องการพื้นที่เพิ่ม พาร์ติชันแบบเดิมบังคับให้คุณปิดเครื่อง บู้ตจาก USB และลุ้นว่าข้อมูลจะไม่หาย แต่กับ LVM คุณรันคำสั่งเดียวขณะที่ระบบยังทำงานอยู่ ผมเรียนรู้สิ่งนี้ระหว่างการย้าย Server ครั้งหนึ่ง ตอนที่ต้องขยาย /home เพิ่ม 200GB ใช้เวลาแค่ประมาณ 30 วินาที แทนที่จะเสียทั้งสุดสัปดาห์
Physical Volume ทำงานอย่างไร
Physical Volume คืออุปกรณ์จัดเก็บข้อมูลใดก็ได้ที่ LVM ใช้ได้ ทั้งฮาร์ดไดรฟ์, SSD, RAID Array หรือแม้แต่ Loop Device ล้วนใช้ได้ทั้งนั้น คุณเริ่มต้นด้วย pvcreateซึ่งจะเขียน LVM Metadata และทำเครื่องหมายอุปกรณ์ว่าพร้อมใช้งานใน Volume Group
Physical Volume ไม่สนใจว่าฮาร์ดแวร์ข้างใต้เป็นอะไร ดิสก์หมุน 500GB กับ NVMe ขนาด 2TB ของคุณดูเหมือนกันในสายตาของ LVM สิ่งนี้สำคัญมากเมื่อคุณใช้พื้นที่จัดเก็บต่างประเภทผสมกัน
ทำความเข้าใจ Volume Group
Volume Group รวม Physical Volume หลายตัวเข้าเป็นหน่วยพื้นที่จัดเก็บเดียว ลองนึกภาพการนำดิสก์ 1TB สามตัวมารวมเป็น Pool ขนาด 3TB คุณสร้าง Volume Group ด้วย vgcreate และสามารถเพิ่มหรือลบ Physical Volume ได้ทุกเมื่อที่ความจุเปลี่ยนแปลง
วิธีการรวม Pool แบบนี้หมายความว่าคุณไม่ถูกจำกัดด้วยการวางแผนทีละดิสก์อีกต่อไป ต้องการพื้นที่เพิ่ม? เพิ่มดิสก์ใหม่เข้า Volume Group เปลี่ยนดิสก์เก่า? ย้ายข้อมูลออกด้วย pvmove ขณะที่ระบบยังทำงานอยู่ แล้วค่อยเปลี่ยนฮาร์ดแวร์
Logical Volume ทำหน้าที่อะไร

Logical Volume คือสิ่งที่คุณใช้งานจริง มันถูกแบ่งมาจาก Volume Group และทำงานเหมือนพาร์ติชันปกติ Format ด้วย ext4 หรือ xfs, Mount ที่ไหนก็ได้ และปรับขนาดได้ตลอดเวลา ความแตกต่างคือมันไม่ผูกติดกับขอบเขตของดิสก์ทางกายภาพ
เมื่อคุณรัน lvcreate -L 50G -n data datavgคุณกำลังจัดสรรพื้นที่ 50GB จาก pool ของ volume group พื้นที่นั้นอาจมาจากดิสก์เดียวหรือกระจายอยู่ในหลายดิสก์ก็ได้ ซึ่งไม่จำเป็นต้องสนใจ เพราะ LVM จัดการการกระจายข้อมูลให้เอง
ทำความเข้าใจ Physical Extents
Physical extents คือหน่วยการจัดสรรที่เล็กที่สุดใน LVM โดยทั่วไปมีขนาด 4MB ต่อบล็อก เมื่อสร้าง logical volume LVM จะจัดสรร physical extents จาก volume group วิธีนี้ช่วยให้ปรับขนาด volume ได้อย่างละเอียดและแม่นยำ
ขนาดของ extent มีผลต่อ volume ขนาดใหญ่ extent ที่ใหญ่ขึ้นช่วยลด metadata overhead แต่การจัดสรรพื้นที่จะหยาบกว่า ค่าดีฟอลต์ที่ 4MB เหมาะกับงานส่วนใหญ่ ผมไม่เคยเปลี่ยนค่านี้เลย ยกเว้นกับ storage array ขนาดใหญ่มากที่ตัวเลขมันคุ้มกว่าจริง ๆ
Snapshot สำหรับการสำรองข้อมูล ณ จุดเวลาที่ต้องการ
Snapshot จะบันทึกสถานะของ logical volume ในช่วงเวลาที่กำหนด โดย LVM ใช้เทคนิค copy-on-write ข้อมูลเดิมยังคงอยู่ที่เดิม เมื่อมีการเปลี่ยนแปลง LVM จะเก็บบล็อกเดิมไว้ใน snapshot ขณะที่เขียนข้อมูลใหม่ลงใน volume หลัก
อยากทดสอบการอัปเดตระบบ? ถ่าย snapshot ก่อนเลย ถ้ามีอะไรผิดพลาด? ก็ restore กลับจาก snapshot ได้ทันที ทั้งกระบวนการใช้เวลาแค่ไม่กี่วินาที เพราะ LVM ติดตามเฉพาะบล็อกที่เปลี่ยนแปลง ไม่ได้คัดลอกทุกอย่าง
ผม snapshot ฐานข้อมูล production ทุกครั้งก่อนเปลี่ยน schema ครั้งใหญ่ overhead แทบไม่มี แต่ได้ความมั่นใจคืนมาเต็ม ๆ และผมหลีกเลี่ยงการ rebuild ทั้งหมดมาแล้วสามครั้งด้วยการ rollback migration ที่ล้มเหลว
เมื่อไหร่ควรใช้ LVM Striping
Striping แบ่งข้อมูลกระจายไปยัง physical volume หลาย ๆ ตัว คล้ายกับ RAID 0เมื่อเขียนไฟล์ LVM จะส่งข้อมูลแต่ละส่วนไปยังดิสก์ต่าง ๆ พร้อมกัน การทำงานแบบขนานนี้เพิ่มความเร็วทั้งการอ่านและเขียน โดยเฉพาะกับไฟล์ขนาดใหญ่หรือฐานข้อมูล
ประสิทธิภาพที่ได้ขึ้นอยู่กับลักษณะงานของคุณ การอ่านข้อมูลแบบ sequential บนไฟล์ขนาดใหญ่ได้ประโยชน์มากที่สุด ส่วนการเข้าถึงแบบ random จะเห็นผลน้อยกว่า เซิร์ฟเวอร์ฐานข้อมูลและเครื่อง workstation ตัดต่อวิดีโอมักสังเกตเห็นความต่างได้ชัดเจน
LVM Mirroring สำหรับความซ้ำซ้อนของข้อมูล
Mirroring คือการสำเนาข้อมูลไปยัง physical volume หลายตัว ถ้าดิสก์ตัวหนึ่งเสีย ข้อมูลของคุณยังอยู่บน mirror อีกตัว LVM จัดการการซิงค์ให้อัตโนมัติ overhead ด้านประสิทธิภาพที่เสียไปนั้นคุ้มค่า เมื่อ downtime มีต้นทุนสูงกว่าค่า storage เพิ่มเติม
การตั้งค่าสมัยใหม่มักใช้ RAID สำหรับความซ้ำซ้อน และวาง LVM ไว้บนนั้นเพื่อความยืดหยุ่น คุณได้ทั้งการปกป้องระดับ hardware และการจัดการระดับ software การใช้งานทั้งสองร่วมกันให้ผลดีกว่าพึ่งพาอย่างใดอย่างหนึ่งเพียงอย่างเดียว
ถ้ากำลังเปรียบเทียบแนวทางการจัดการ storage อยู่ ลองดู LVM กับ ZFS เพื่อทำความเข้าใจว่าแต่ละแบบเหมาะกับงานของคุณเมื่อไหร่
วิธีติดตั้ง LVM บน Ubuntu และ CentOS

การติดตั้ง LVM ใช้เวลาประมาณ 60 วินาที ถ้ารู้คำสั่งที่ถูกต้อง distro Linux สมัยใหม่จัดการ dependency ให้อัตโนมัติ แค่ติดตั้ง package ตรวจสอบว่าใช้งานได้ แล้วก็พร้อมตั้งค่า storage ได้เลย
ก่อนเริ่ม มีข้อควรทราบสำคัญหนึ่งอย่าง: CentOS หมดอายุการรองรับในปี 2020 ถ้ายังใช้ CentOS อยู่ ให้เปลี่ยนไปใช้ Rocky Linux หรือ AlmaLinux แทน ทั้งสองตัวใช้แทนกันได้ทันทีและยังได้รับ security update อยู่ คำสั่งในบทความนี้ใช้งานได้เหมือนกันทุกประการบน Rocky Linux 9, AlmaLinux 9, Ubuntu 24.04 และ Debian รีลีสปัจจุบัน
อัปเดตระบบก่อนเสมอ
เริ่มด้วยการอัปเดต package list ของระบบ เพื่อให้แน่ใจว่าคุณได้ LVM2 เวอร์ชันล่าสุดพร้อม security patch และ bug fix ครบถ้วน
สำหรับระบบ Ubuntu:
sudo apt update
สำหรับระบบที่ใช้ CentOS (Rocky Linux/AlmaLinux):
sudo dnf update
ระบบที่ใช้ RHEL รุ่นใหม่ใช้ dnf เป็นตัวจัดการแพ็กเกจ หากเห็นบทความเก่าที่พูดถึง yumให้ข้ามไปได้เลย DNF เข้ามาแทนที่ yum ตั้งแต่ปี 2015 พร้อมการแก้ไข dependency และประสิทธิภาพที่ดีกว่า
ติดตั้งแพ็กเกจ LVM2
ชื่อแพ็กเกจคือ lvm2 ในทุก distribution การติดตั้งจะดึง dependency มาให้อัตโนมัติ รวมถึง device-mapper tools และ library ที่เกี่ยวข้อง
การติดตั้ง Ubuntu Logical Volume Manager:
sudo apt install lvm2
การติดตั้ง CentOS Logical Volume Manager (Rocky/AlmaLinux):
sudo dnf install lvm2
รอให้การติดตั้งเสร็จสิ้น บนฮาร์ดแวร์รุ่นใหม่ที่มีอินเทอร์เน็ตพอใช้จะใช้เวลาประมาณ 10-15 วินาที ขนาดแพ็กเกจไม่ใหญ่ ประมาณ 2-3MB บวก dependency
ตรวจสอบว่าติดตั้งสำเร็จ
ตรวจสอบว่า LVM2 ติดตั้งถูกต้องและดูเวอร์ชันที่ใช้งานอยู่:
sudo lvm version
คุณจะเห็นข้อมูลเวอร์ชันและรายละเอียด build เวอร์ชันปัจจุบันอยู่ที่ 2.03.x ขึ้นไป หากคำสั่งใช้ไม่ได้หรือขึ้น "command not found" แสดงว่ามีปัญหาในขั้นตอนติดตั้ง
distribution รุ่นใหม่ที่ใช้ systemd จะเปิดใช้งาน LVM โดยอัตโนมัติตอนบูต ไม่ต้องเปิด service เองเหมือนกับ init system รุ่นเก่า ตัว lvm2-activation-generator จัดการทุกอย่างให้ นี่คือสิ่งหนึ่งที่ไม่ต้องตั้งค่าเพิ่ม
อยากทดลอง LVM บนระบบที่ไม่มีข้อมูลสำคัญไหม? ลองเปิด Linux VPS ที่ดีที่สุด เพื่อทดสอบได้อย่างอิสระโดยไม่กระทบไฟล์ production
จะสร้าง LVM ใน Linux ได้อย่างไร?

การสร้าง LVM มีสามขั้นตอน: กำหนด physical volume, รวมเข้าเป็น volume group และแบ่งออกเป็น logical volume ฟังดูซับซ้อนกว่าที่เป็นจริง คุณใช้คำสั่งแค่ประมาณหกคำสั่งเท่านั้น
ก่อนเริ่ม ให้ระบุ drive ที่ต้องการใช้ ตัวอย่างในที่นี้ใช้ /dev/sdX ใช้เป็นชื่อตัวอย่าง ชื่ออุปกรณ์จริงในระบบของคุณจะแตกต่างออกไป รัน lsblk เพื่อดูอุปกรณ์ทั้งหมดที่เชื่อมต่ออยู่กับระบบ
สร้าง Physical Volume
Physical volume คือการบอกให้ LVM รู้ว่าใช้ไดรฟ์ใดได้บ้าง เริ่มต้นไดรฟ์ด้วยคำสั่ง pvcreate:
sudo pvcreate /dev/sdb
แทนที่ /dev/sdb แทนด้วยชื่ออุปกรณ์จริงของคุณ คำสั่งนี้จะเขียน metadata ของ LVM ลงไดรฟ์และทำเครื่องหมายว่าพร้อมใช้งาน ไม่จำเป็นต้องแบ่ง partition แบบเดิมอีกต่อไป
ต้องการสร้าง physical volume หลายตัวพร้อมกัน? ระบุทุกตัวในคำสั่งเดียว:
sudo pvcreate /dev/sdb /dev/sdc /dev/sdd
LVM จะจัดการทั้งหมดพร้อมกัน ตรวจสอบสิ่งที่สร้างไว้ด้วย:
sudo pvs
คำสั่งนี้แสดง physical volume ทั้งหมด พร้อมขนาดและ volume group ที่แต่ละตัวสังกัดอยู่ (ยังไม่มีในตอนนี้)
สร้าง Volume Group
Volume group รวม physical volume หลายตัวเข้าเป็น storage pool เดียว สร้าง volume group ชื่อ "datavg":
sudo vgcreate datavg /dev/sdb
เพิ่มหลายไดรฟ์เข้า group เดียวกันตั้งแต่ตอนสร้าง:
sudo vgcreate datavg /dev/sdb /dev/sdc
ตอนนี้ไดรฟ์ทั้งหมดทำงานเป็น pool เดียวกัน ตรวจสอบ volume group ด้วย:
sudo vgs
คุณจะเห็นขนาดรวมทั้งหมด พื้นที่ที่จัดสรรให้ logical volume ไปแล้ว และพื้นที่ที่ยังเหลือสำหรับการจัดสรรในอนาคต
สร้าง Logical Volume
Logical volume คือสิ่งที่คุณ format และ mount จริง ๆ โดยแบ่งมาจากพื้นที่ว่างใน volume group สร้าง volume ขนาด 50GB:
sudo lvcreate -L 50G -n data datavg
คำสั่งนี้สร้าง logical volume ชื่อ "data" จาก volume group "datavg" โดย device path แบบเต็มจะกลายเป็น /dev/datavg/data.
ต้องการใช้พื้นที่ว่างทั้งหมดแทนการระบุขนาดตายตัว?
sudo lvcreate -l 100%FREE -n data datavg
ค่า -l 100%FREE ตัวเลือกนี้จะจัดสรรพื้นที่ที่เหลือทุก byte เหมาะสำหรับการตั้งค่าแบบง่าย ที่ใช้ logical volume เดียวครอบคลุม volume group ทั้งหมด
จัดรูปแบบ Logical Volume
Logical volume ต้องการระบบไฟล์เหมือนกับพาร์ติชันทั่วไป ฟอร์แมตด้วย ext4:
sudo mkfs.ext4 /dev/datavg/data
ขั้นตอนนี้ใช้เวลาไม่กี่วินาทีสำหรับ volume ขนาดเล็ก และนานกว่านั้นสำหรับขนาดใหญ่ ผลลัพธ์จะแสดงจำนวน block และข้อมูล inode หากไม่มีข้อผิดพลาด ไม่จำเป็นต้องสนใจรายละเอียดเหล่านั้น
อยากใช้ xfs แทนไหม? เปลี่ยน ext4 เป็น xfs ได้เลย ใช้งานได้ทั้งคู่ Ext4 พบได้บ่อยกว่าในระบบ Ubuntu ส่วน Rocky Linux ใช้ xfs เป็นค่าเริ่มต้นสำหรับกรณีใช้งานส่วนใหญ่
ระวังคำสั่ง LVM ให้มาก คำสั่งเหล่านี้แก้ไข storage โดยตรง ครั้งหนึ่งผมพิมพ์ชื่ออุปกรณ์ผิดและลบข้อมูลของลูกค้าไป 2TB ทำการสำรองข้อมูลสำคัญก่อนรันคำสั่งที่เปลี่ยนแปลงการตั้งค่า storage เสมอ
จะ Mount LVM Partition ได้อย่างไร?
การ mount LVM partition ทำเหมือนกับการ mount พาร์ติชันอื่นทุกประการ สร้าง directory สำหรับ mount point รันคำสั่ง mount แล้วเพิ่ม entry ลงใน /etc/fstab เพื่อให้ mount อัตโนมัติตอนบูต
ความแตกต่างมีเพียงอย่างเดียวคือ path ของอุปกรณ์ ใช้ /dev/sda1คุณใช้ /dev/volumegroup/logicalvolumeแทน ส่วนอื่นทุกอย่างเหมือนเดิม
สร้าง Directory สำหรับ Mount Point
Mount point คือ directory ที่ใช้เข้าถึงระบบไฟล์ สร้างไว้ที่ไหนก็ได้ตามความเหมาะสมกับการใช้งาน:
sudo mkdir /mnt/data
ตั้งชื่อให้สื่อความหมาย /mnt/data, /mnt/backup, /home/shared ใช้ได้ทั้งนั้น ตำแหน่งไม่มีผลต่อการทำงาน บางคนนิยมใช้ /mnt สำหรับ mount ชั่วคราว และใช้ directory เฉพาะภายใต้ / สำหรับการ mount ถาวร
Mount Logical Volume
Mount logical volume ที่ฟอร์แมตแล้วไปยัง mount point ของคุณ:
sudo mount /dev/datavg/data /mnt/data
แทนที่ path ของอุปกรณ์และ mount point ด้วยค่าจริงของคุณ ตอนนี้ระบบไฟล์สามารถเข้าถึงได้ที่ /mnt/dataไฟล์ที่สร้างในนั้นจะถูกเก็บบน logical volume
ตรวจสอบว่า mount สำเร็จหรือไม่:
df -h /mnt/data
คุณจะเห็นขนาดรวม พื้นที่ที่ใช้ไป พื้นที่ที่เหลือ และ mount point ของ volume ถ้าไม่มีข้อมูลแสดงขึ้นมา แสดงว่าคำสั่ง mount ล้มเหลว ให้ตรวจสอบ device path และยืนยันว่า logical volume มีอยู่จริงด้วย ลวส.
ตั้งค่า Mount แบบถาวร
การ mount ชั่วคราวจะหายไปหลังรีบูต ให้เพิ่ม entry ใน /etc/fstab เพื่อให้ mount ถาวร:
sudo nano /etc/fstab
เพิ่มบรรทัดนี้ที่ท้ายไฟล์:
/dev/datavg/data /mnt/data ext4 defaults 0 0
รูปแบบคือ: device, mount point, ประเภท file system, mount options, dump priority, fsck order ตัวเลขศูนย์ท้ายบรรทัดใช้ได้ดีกับส่วนใหญ่ เปลี่ยน ext4 ให้ตรงกับ file system ที่คุณเลือกใช้จริง
บันทึกและออกจาก editor จากนั้นทดสอบ entry ใน fstab โดยไม่ต้องรีบูต:
sudo mount -a
คำสั่งนี้จะ mount ทุกอย่างใน fstab ที่ยังไม่ได้ถูก mount ถ้าเกิด error แสดงว่าคุณพิมพ์ข้อมูลใน fstab ผิด ให้แก้ไขก่อนรีบูต มิฉะนั้นระบบอาจบูตไม่ขึ้น
ประสิทธิภาพเป็นเรื่องสำคัญเมื่อคุณ mount volume สำหรับงาน production หลังจากตั้งค่า LVM เรียบร้อยแล้ว ทดสอบความเร็ว disk ใน Linux เพื่อวัด throughput และ latency จริง
Mount LVM ระหว่างการติดตั้ง Ubuntu
ตัวติดตั้ง Ubuntu รองรับการตั้งค่า LVM ระหว่างติดตั้งระบบ เมื่อถึงหน้าจัดการ partition ให้เลือก "Manual" partitioning แล้วเลือก "Configure the Logical Volume Manager"
วิธีนี้เหมาะสำหรับการติดตั้งใหม่ คุณตั้งค่า volume group และ logical volume ก่อนติดตั้งระบบปฏิบัติการ ตัว installer จัดการ /etc/fstab รายการโดยอัตโนมัติ
สำหรับระบบที่มีอยู่แล้ว การใช้ command line ข้างต้นให้การควบคุมที่ละเอียดกว่า และช่วยให้คุณเข้าใจทุกขั้นตอนอย่างชัดเจน
แก้ปัญหาการ Mount
ถ้า LVM partition ไม่ยอม mount ให้ตรวจสอบปัญหาที่พบบ่อยเหล่านี้ก่อน:
Volume group ไม่ได้ถูก activate:
sudo vgchange -ay
คำสั่งนี้จะ activate volume group ทั้งหมด บางครั้ง volume group จะไม่ถูก activate อัตโนมัติหลังจากเพิ่ม drive ใหม่หรือรีบูต
Device path ไม่ถูกต้อง: ตรวจสอบว่า logical volume มีอยู่จริงด้วย ลวส และใช้ full path เช่น /dev/volumegroup/logicalvolume, ไม่ใช่ทางลัด
ข้อผิดพลาดของระบบไฟล์: รัน file system check บน volume ที่ยังไม่ได้ mount:
sudo fsck /dev/datavg/data
ความเสียหายของระบบไฟล์ทำให้ mount ไม่ได้ เครื่องมือ fsck สามารถแก้ไขปัญหาหลายอย่างได้โดยอัตโนมัติ
คำสั่ง LVM ที่จำเป็นสำหรับ Linux มีอะไรบ้าง?
คำสั่ง LVM ของ Linux ช่วยให้คุณจัดการ storage ทั้งหมดได้จาก command line นี่คือคำสั่งที่ใช้งานจริงในทางปฏิบัติ ไม่ใช่คำสั่งทางทฤษฎีจากเอกสารที่ล้าสมัย
แสดง Physical Volume
ดู physical volume ทั้งหมดในระบบ:
sudo pvs
แสดงตารางสรุปพร้อมชื่ออุปกรณ์ volume group รูปแบบ attributes ขนาด และพื้นที่ว่าง สำหรับข้อมูลละเอียดของ physical volume เฉพาะรายการ:
sudo pvdisplay /dev/sdb
มุมมองแบบละเอียดแสดง physical extent size จำนวน extent ทั้งหมด extent ที่ถูกใช้ไปแล้ว และ UUID มีประโยชน์เมื่อต้องการตัวเลขที่แม่นยำสำหรับการวางแผนความจุ
แสดง Volume Group
แสดง volume group ทั้งหมด:
sudo vgs
คุณจะเห็นชื่อ volume group จำนวน physical volume จำนวน logical volume attributes ขนาดรวม และพื้นที่ว่าง สำหรับรายละเอียดครบถ้วน:
sudo vgdisplay datavg
แสดงทุกอย่าง: extent size จำนวน extent ทั้งหมด allocation policy และ UUID ใช้คำสั่งนี้เมื่อวางแผนสร้าง logical volume ใหม่ เพื่อดูว่าเหลือพื้นที่เท่าไรอยู่
แสดง Logical Volume
แสดง logical volume ทั้งหมด:
sudo lvs
ผลลัพธ์แสดงชื่อ logical volume, volume group ที่เชื่อมอยู่ attributes ขนาด และ physical extent ที่ใช้ สำหรับข้อมูลครบถ้วน:
sudo lvdisplay /dev/datavg/data
แสดง path ของ logical volume, block device เวลาสร้าง สถานะ และ segment ช่วยในการแก้ปัญหาการ mount หรือตรวจสอบความสัมพันธ์ของ snapshot
ขยาย Volume Group
เพิ่ม physical volume เข้า volume group ที่มีอยู่เมื่อต้องการความจุเพิ่มเติม:
sudo vgextend datavg /dev/sdd
นี่เพิ่มเติม /dev/sdd เข้า volume group "datavg" พื้นที่ว่างที่ได้จะพร้อมใช้งานทันทีสำหรับ logical volume ที่มีอยู่ หรือสร้าง volume ใหม่ โดยไม่ต้องรีสตาร์ทระบบ
ฉันเพิ่มไดรฟ์ขนาด 2TB เข้าไปใน backup volume group ด้วยวิธีนี้ขณะที่ backup กำลังทำงานอยู่ ทั้งหมดใช้เวลาประมาณ 5 วินาที
ปรับขนาด Logical Volume
ขยาย logical volume เพื่อเพิ่มพื้นที่:
sudo lvresize -L +50G /dev/datavg/data
คำสั่งนี้เพิ่มพื้นที่ 50GB ให้กับ logical volume หลังจากปรับขนาดแล้ว ให้ขยาย file system เพื่อใช้พื้นที่ที่เพิ่มมา:
สำหรับ ext4:
sudo resize2fs /dev/datavg/data
สำหรับ xfs:
sudo xfs_growfs /mnt/data
File system จะขยายให้เต็ม logical volume โดยที่ volume ยังคง mount และใช้งานอยู่ตลอด ผู้ใช้จะไม่รู้สึกถึงความเปลี่ยนแปลงใดๆ นอกจากพื้นที่ว่างที่เพิ่มขึ้น
ต้องการลดขนาดแทน? วิธีนั้นมีความเสี่ยงกว่าและต้อง unmount ก่อน สำรองข้อมูลเสมอก่อนลดขนาด volume
สร้าง Volume Snapshot
Snapshot จะบันทึกสถานะปัจจุบันของ logical volume เพื่อใช้สำรองข้อมูลหรือทดสอบ:
sudo lvcreate -s -L 10G -n data-snapshot /dev/datavg/data
คำสั่งนี้สร้าง snapshot ขนาด 10GB ชื่อ "data-snapshot" จาก logical volume ชื่อ "data" โดย snapshot ใช้เทคนิค copy-on-write จึงใช้พื้นที่เฉพาะส่วนที่มีการเปลี่ยนแปลง ไม่ใช่ทั้ง volume
Mount snapshot แบบ read-only เพื่อสำรองข้อมูลอย่างสมบูรณ์:
sudo mkdir /mnt/snapshot
sudo mount -o ro /dev/datavg/data-snapshot /mnt/snapshot
สำรองข้อมูลจาก /mnt/snapshot ขณะที่ volume ต้นฉบับยังคงรับการเขียนข้อมูลได้ตามปกติ วิธีนี้แก้ปัญหา "จะสำรองฐานข้อมูลที่กำลังใช้งานอยู่ได้อย่างไร" ได้อย่างตรงจุด
ลบ Logical Volume
ลบ logical volume ที่ไม่ต้องการแล้ว:
sudo lvremove /dev/datavg/old-data
คำสั่งจะขอการยืนยันก่อนลบ การลบนี้จะทำลาย logical volume และข้อมูลทั้งหมดที่อยู่ในนั้นอย่างถาวร ตรวจสอบให้แน่ใจว่าได้สำรองข้อมูลสำคัญไว้แล้ว
ย้าย Physical Extent
ย้ายข้อมูลออกจาก physical volume ก่อนถอดออก:
sudo pvmove /dev/sdb
LVM จะย้าย physical extent ทั้งหมดออกจาก /dev/sdb ไปยัง Physical Volume อื่นในกลุ่ม Volume Group โดยระบบจะทำงานในพื้นหลังและไม่มีการหยุดให้บริการ
สิ่งนี้ช่วยชีวิตผมได้เลย ตอนที่ไดรฟ์เริ่มแสดง SMART error ผมย้ายข้อมูลทั้งหมดออกจากไดรฟ์ที่มีปัญหา ถอดออกจาก Volume Group แล้วเปลี่ยนไดรฟ์ใหม่ในช่วง Maintenance Window โดยไม่มี Downtime แม้แต่วินาทีเดียว
สแกนหา Volume Group
บางครั้ง Volume Group ไม่ปรากฏขึ้นหลังจากเพิ่มไดรฟ์ใหม่หรือรีบูตเครื่อง ให้บังคับสแกนด้วยคำสั่งนี้:
sudo vgscan
sudo vgchange -ay
คำสั่งแรกสแกนหา Volume Group ส่วนคำสั่งที่สองเปิดใช้งานทุกอย่างที่พบ Logical Volume ของคุณจะกลับมาใช้งานได้อีกครั้ง
ถ้าคุณกำลังตั้งค่า Ubuntu LVM สำหรับ Development Environment อาจต้องการคู่มือเพิ่มเติมเกี่ยวกับ การติดตั้ง Hadoop บน Ubuntu, การติดตั้ง Redis บน Ubuntuหรือ การติดตั้ง XRDP บน Ubuntu สำหรับการเข้าถึงระบบที่จัดการด้วย LVM จากระยะไกล
สรุป
LVM เปลี่ยนวิธีจัดการ Storage บน Linux จากการแบ่ง Partition แบบตายตัวให้กลายเป็นการจัดสรรพื้นที่แบบยืดหยุ่น คุณได้ทั้งการปรับขนาดแบบ Dynamic, Snapshot แบบ Point-in-time และความสามารถในการรวมไดรฟ์หลายตัวเข้าเป็นพื้นที่เก็บข้อมูลเดียวกัน ทั้งหมดนี้โดยไม่ต้องหยุดระบบ
ขั้นตอนหลักเหมือนกันทุก Distribution เริ่มจาก Initialize Physical Volume ด้วย pvcreateจากนั้นรวมเข้า Volume Group ด้วย vgcreateแบ่ง Logical Volume ด้วย lvcreateจัดรูปแบบด้วย File System ที่ต้องการ แล้ว Mount เหมือน Partition ทั่วไป คำสั่งเหล่านี้ใช้ได้เหมือนกันทั้งบน Ubuntu LVM และ Rocky Linux
ถ้าคุณเพิ่งเริ่มใช้ LVM ให้เริ่มจากสิ่งเล็ก ๆ ก่อน สร้าง Volume Group ทดสอบบนไดรฟ์สำรอง ฝึกปรับขนาด Logical Volume ถ่าย Snapshot และย้ายข้อมูลระหว่าง Physical Volume ข้อผิดพลาดในช่วงฝึกกับ Storage ที่ไม่ใช่ Production จะไม่ทำให้เสียหายมาก
เตือนไว้อีกครั้งเกี่ยวกับ CentOS: หยุดพัฒนาแล้ว ใช้ Rocky Linux หรือ AlmaLinux แทน ทั้งคู่ Compatible กับ RHEL และยังคงได้รับการดูแลอย่างต่อเนื่อง คำสั่ง LVM ใช้ได้เหมือนกันทุกประการ แต่คุณได้รับ Security Update ที่สำคัญด้วย
อยากฝึกใช้ LVM โดยไม่เสี่ยงกับไฟล์ในเครื่องของคุณ? เปิด Ubuntu VPS แล้วทดลองได้อย่างอิสระ ลองผิดลองถูก เรียนรู้จากข้อผิดพลาด และฝึกจนชำนาญก่อนนำไปใช้กับระบบ Production จริง
เลือกแพ็กเกจ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับโฮสต์เว็บไซต์หรือรีโมทเดสก์ท็อป ในราคาที่คุ้มค่าที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่สูงขึ้น และติดตั้งบนฮาร์ดแวร์ที่ทรงพลังพร้อมพื้นที่จัดเก็บ NVMe SSD เพื่อความเร็วสูงสุด
อ่านเพิ่มเติม