ลด 50% ทุกแพ็กเกจ เวลาจำกัด เริ่มต้นที่ $2.48/mo
17 นาทีที่เหลือ
เซิร์ฟเวอร์และ OS

คำสั่ง Mount ของ Linux LVM: สร้างและ Mount LVM บน Ubuntu และ CentOS

เคลลี่ วัตสัน By เคลลี่ วัตสัน 17 นาทีอ่าน อัปเดตเมื่อ ๒๖ ตุลาคม ๒๐๒๕
ภาพดาต้าเซ็นเตอร์ที่มีความปลอดภัยสูง พร้อมเซิร์ฟเวอร์เรืองแสงสีน้ำเงินทางด้านขวา และพื้นที่ว่างทางด้านซ้ายสำหรับบทความเกี่ยวกับ Linux LVM

ถ้าคุณคิดว่าการจัดการ 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 ในฐานะชั้นกลางที่ยืดหยุ่นระหว่างดิสก์ทางกายภาพและระบบไฟล์ พร้อมการปรับขนาดแบบไดนามิกและการจัดการพื้นที่จัดเก็บ

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" ดิจิทัลที่ไหลอยู่

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

ภาพมือพิมพ์บนแป้นพิมพ์พร้อมหน้าจอ terminal แสดงผลการติดตั้ง LVM2 สำเร็จและการตรวจสอบ version

การติดตั้ง 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 ได้อย่างไร?

ภาพแสดงขั้นตอนการนำ drive ดิบมารวมกันเป็น volume group แล้วแบ่งออกเป็น logical volume สำเร็จรูป

การสร้าง 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

เลือกแพ็กเกจ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับโฮสต์เว็บไซต์หรือรีโมทเดสก์ท็อป ในราคาที่คุ้มค่าที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่สูงขึ้น และติดตั้งบนฮาร์ดแวร์ที่ทรงพลังพร้อมพื้นที่จัดเก็บ NVMe SSD เพื่อความเร็วสูงสุด

อ่านเพิ่มเติม

คำถามที่พบบ่อย

ข้อดีหลักของการใช้ LVM เทียบกับการแบ่ง Partition แบบเดิมคืออะไร?

LVM ให้คุณปรับขนาด Storage ได้ในขณะที่ระบบยังทำงานอยู่ Partition แบบเดิมจะล็อกขนาดไว้ตั้งแต่ติดตั้ง ต้องการพื้นที่ /home เพิ่มขึ้น? ด้วย LVM แค่รัน lvresize และ resize2fs ไม่ต้องรีบูต ไม่ต้องย้ายข้อมูล ไม่มี Downtime

ใช้ LVM กับ SSD และไดรฟ์ NVMe ได้ไหม?

ได้ LVM ทำงานร่วมกับ Block Device ทุกประเภท ทั้ง SSD, ไดรฟ์ NVMe, RAID Array และ Hard Drive แบบเดิม คำสั่งและการทำงานเหมือนกันทุกอย่างไม่ว่าจะใช้ Hardware ประเภทใด

LVM ทำงานร่วมกับ RAID ได้ไหม?

LVM ทำงานบน RAID ได้ ตั้งค่า RAID Array ก่อนเพื่อความซ้ำซ้อนของข้อมูล แล้วใช้ LVM บน RAID Device นั้นเพื่อการจัดการ Volume แบบยืดหยุ่น คุณได้ทั้งการป้องกันระดับ Hardware และความยืดหยุ่นระดับ Software ในเวลาเดียวกัน

ควรจัดสรรพื้นที่เท่าไหร่สำหรับ LVM snapshots?

สำหรับงานทั่วไป ควรจัดสรรพื้นที่ประมาณ 10-20% ของขนาด volume ต้นฉบับ Snapshot จะเก็บเฉพาะบล็อกที่เปลี่ยนแปลงโดยใช้ copy-on-write หากมีการเขียนข้อมูลบ่อยครั้ง ควรจัดสรรพื้นที่ snapshot ให้มากขึ้น แต่ถ้าส่วนใหญ่เป็นการอ่านข้อมูล ก็ใช้พื้นที่น้อยกว่า

สามารถย้าย logical volume ระหว่าง physical drive ต่างกันได้ไหม?

ได้ ใช้คำสั่ง pvmove เพื่อโยกย้ายข้อมูลจาก physical volume หนึ่งไปยังอีก volume หนึ่งขณะที่ระบบยังทำงานอยู่ เหมาะสำหรับการเปลี่ยน drive หรือจัดสมดุล storage ใหม่บน hardware ที่เร็วกว่า

มี GUI tool สำหรับจัดการ LVM ไหม?

GNOME Disks แสดง LVM volume ที่มีอยู่ได้ แต่ไม่สามารถสร้างหรือปรับขนาดได้ KDE Partition Manager รองรับการทำงาน LVM ได้ครบ สำหรับการควบคุมเต็มรูปแบบ เครื่องมือ command-line ยังคงเชื่อถือได้มากที่สุดในทุก distribution

แชร์

บทความอื่นจากบล็อก

อ่านต่อ

ภาพหน้าปกบทความแอปที่โฮสต์เองที่ดีที่สุดสำหรับ Cosmos Cloud พร้อมแผงแอปรอบ Cosmos dashboard
เซิร์ฟเวอร์และ OS

แอปที่โฮสต์เองที่ดีที่สุดสำหรับ Cosmos Cloud: ไฟล์, มีเดีย, รหัสผ่าน, ระบบอัตโนมัติ และอื่น ๆ อีกมาก

Maybe คุณตั้งค่า Cosmos Cloud เรียบร้อยแล้วและอยากรู้ว่าแอปไหนเข้ากันได้ดี หรืออาจยังไม่แน่ใจเรื่อง Cosmos และแค่อยากดูว่ามันเหมาะกับเวิร์กโฟลว์ของคุณแค่ไหน

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 16 นาที
Portainer vs Cosmos Cloud สำหรับการจัดการแอป Docker พร้อมไดอะแกรม Hybrid Setup และบล็อก Ops กับ Access แบบ Neon
เซิร์ฟเวอร์และ OS

Portainer vs Cosmos Cloud: ตัวเลือกไหนเหมาะกับการจัดการแอป Docker

ถ้าคุณรู้จัก Docker อยู่แล้วและต้องการวิธีที่ดีกว่าในการรัน App Stack ที่กำลังขยาย นี่คือคำตอบสั้นๆ สำหรับ Portainer vs Cosmos Cloud: Portainer เป็นตัวเลือกที่แข็งแกร่งกว่าสำหรับการควบคุมโดยตรง

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 14 นาที
Cosmos Cloud vs CasaOS vs Umbrel กราฟิกประกอบที่แสดงสามเส้นทาง Self-Hosted ภายในเครือข่ายคลาวด์แบบนามธรรม
เซิร์ฟเวอร์และ OS

Cosmos Cloud vs CasaOS vs Umbrel: แพลตฟอร์ม Self-Hosted ไหนเหมาะกับการใช้งานของคุณ?

คำตอบสั้นๆ คือ CasaOS ยังเป็นจุดเริ่มต้นที่ง่ายที่สุด Umbrel มีอินเทอร์เฟซที่เรียบร้อยและดูแลการคัดสรรได้ดีที่สุด ส่วน Cosmos Cloud เหมาะกว่าเมื่อคุณต้องการควบคุม Domain ได้แน่นขึ้น

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 11 นาที

พร้อม Deploy แล้วหรือยัง? เริ่มต้นที่ $2.48/เดือน

Cloud อิสระ ให้บริการมาตั้งแต่ปี 2008. AMD EPYC, NVMe, 40 Gbps. คืนเงินภายใน 14 วัน