แนะนำพื้นฐานเกี่ยวกับ LVM: แนวคิด, ศัพท์เฉพาะ และการใช้งาน

LVM (Logical Volume Management) คือเทคโนโลยีจัดการอุปกรณ์จัดเก็บข้อมูลที่ให้ผู้ใช้สามารถรวมและจัดการอุปกรณ์จัดเก็บข้อมูลในรูปแบบที่ยืดหยุ่นได้มากขึ้น สำหรับเวอร์ชันปัจจุบันคือ LVM2 สามารถใช้เพื่อรวบรวมอุปกรณ์จัดเก็บข้อมูลที่มีอยู่เข้าด้วยกัน และจัดสรรหน่วยข้อมูลเชิงตรรกะ (Logical Units) จากพื้นที่รวมตามต้องการ ซึ่งทำงานบนโครงสร้างพื้นฐานของ device mapper ใน Linux kernel

ข้อดีหลักของ LVM คือ การจัดการข้อมูลที่ยืดหยุ่นและควบคุมได้มากขึ้น ผู้ใช้สามารถตั้งชื่อ Logical Volume ให้สื่อถึงการใช้งานจริง เช่น “databases” หรือ “root-backup” นอกจากนี้ยังสามารถปรับขนาดของ Logical Volumes ได้แบบไดนามิก เมื่อความต้องการพื้นที่จัดเก็บเปลี่ยนแปลง และยังสามารถย้ายข้อมูลระหว่างอุปกรณ์จัดเก็บภายใน pool ได้โดยไม่ต้องหยุดระบบ รวมถึงฟีเจอร์ขั้นสูง เช่น snapshot, striping และ mirroring

ในบทความนี้ คุณจะได้เรียนรู้พื้นฐานการทำงานของ LVM และฝึกใช้คำสั่งพื้นฐานเพื่อเริ่มต้นใช้งาน LVM บนเครื่องที่มีการติดตั้งระบบปฏิบัติการโดยตรง (bare metal machine)

โครงสร้างการจัดการการจัดเก็บข้อมูล LVM พื้นฐาน

LVM ทำงานโดยใช้ชั้นของการแยกชิ้นส่วนข้อมูล (abstractions) บนพื้นฐานของอุปกรณ์จัดเก็บข้อมูล โดยโครงสร้างพื้นฐานที่ LVM ใช้เรียงตามลำดับจากขั้นพื้นฐานที่สุด ได้แก่:

  • Physical Volumes (PV): Physical Volumes (PV) คืออุปกรณ์จัดเก็บข้อมูลจริง เช่น ฮาร์ดดิสก์ หรืออุปกรณ์อื่นที่คล้ายกัน ซึ่งเป็นส่วนประกอบพื้นฐานที่ LVM ใช้เพื่อสร้างระดับการจัดเก็บที่สูงขึ้น LVM จะเขียน header บน Physical Volume เพื่อจัดการ
  • Volume Groups (VG): Volume Groups (VG) เป็นการรวม Physical Volumes หลายตัวเข้าด้วยกันเพื่อสร้างเป็นกลุ่มการจัดเก็บข้อมูล (storage pool) ทำให้สามารถจัดการพื้นที่เก็บข้อมูลของอุปกรณ์หลายตัวเป็นเหมือนอุปกรณ์เดียวที่มีพื้นที่รวมกัน
  • Logical Volumes (LV): Logical Volumes (LV) เป็นส่วนที่ถูกแบ่งออกจาก Volume Groups โดยมีความยืดหยุ่นสูงกว่า Partition บนฮาร์ดดิสก์ทั่วไป และเป็นส่วนที่ผู้ใช้และแอปพลิเคชันจะใช้งานโดยตรง

LVM สามารถรวม Physical Volumes เข้าด้วยกันเพื่อสร้าง Volume Groups ที่เป็นเหมือนพื้นที่เก็บข้อมูลรวม จากนั้นผู้ดูแลระบบสามารถแบ่ง Volume Groups ออกเป็น Logical Volumes ได้ตามความต้องการ ซึ่งเป็นการจัดการพื้นที่จัดเก็บแบบยืดหยุ่น

การทำความเข้าใจ Extents

แต่ละ Volume ใน Volume Group จะถูกแบ่งเป็นชิ้นส่วนเล็ก ๆ ที่มีขนาดคงที่ เรียกว่า Extents ขนาดของ Extents จะถูกกำหนดโดย Volume Group และทุก Volume ในกลุ่มเดียวกันจะต้องมีขนาดของ Extents ที่เท่ากัน Extents ใน Physical Volumes เรียกว่า Physical Extents และ Extents ใน Logical Volumes เรียกว่า Logical Extents Logical Volume จะเป็นการจับคู่ระหว่าง Logical Extents และ Physical Extents ที่ LVM จัดการไว้ ขนาดของ Extents จึงเป็นหน่วยพื้นที่ที่เล็กที่สุดที่ LVM สามารถจัดการได้

Extents เป็นส่วนหนึ่งที่ทำให้ LVM มีความยืดหยุ่นและพลังในการจัดการสูง Logical Volume ที่ถูกนำเสนอโดย LVM นั้นไม่จำเป็นต้องประกอบด้วย Physical Extents ที่ต่อเนื่องกัน LVM สามารถคัดลอกหรือจัดเรียง Physical Extents ใหม่ได้โดยไม่รบกวนการใช้งานของผู้ใช้ และสามารถขยายหรือลดขนาดของ Logical Volume ได้โดยการเพิ่มหรือลบ Extents

การใช้งานที่พบบ่อย

เมื่อคุณเข้าใจคำศัพท์และโครงสร้างของ LVM แล้ว คุณสามารถสำรวจการใช้งานที่พบบ่อยได้ ตัวอย่างเช่น การใช้ดิสก์สองลูกเพื่อสร้าง Logical Volumes สี่ตัว

ขั้นตอนการใช้งาน LVM

การกำหนดดิสก์เป็น Physical Volumes เริ่มต้นด้วยการสแกนหาดิสก์ในระบบที่ LVM สามารถจัดการได้ โดยใช้คำสั่งต่อไปนี้

sudo lvmdiskscan

หลังจากที่คุณทราบแล้วว่าอุปกรณ์จัดเก็บข้อมูลใดที่ต้องการใช้ ให้ทำเครื่องหมายอุปกรณ์เหล่านั้นเป็น Physical Volumes ใน LVM โดยใช้คำสั่ง pvcreate ดังนี้

sudo pvcreate /dev/sda /dev/sdb

คำสั่งนี้จะเขียน header ของ LVM ลงไปในอุปกรณ์เพื่อเตรียมไว้สำหรับการเพิ่มไปยัง Volume Groupจากนั้น ตรวจสอบว่า LVM ได้ลงทะเบียน Physical Volumes แล้วโดยการใช้คำสั่ง pvs

sudo pvs

จะเห็นอุปกรณ์ทั้งสองปรากฏในคอลัมน์ PV (Physical Volume)

 PV     VG  Fmt Attr PSize  PFree 
 /dev/sda    lvm2 --- 200.00g 200.00g
 /dev/sdb    lvm2 --- 100.00g 100.00g

การเพิ่ม Physical Volumes ลงใน Volume Group

หลังจากที่คุณสร้าง Physical Volumes จากอุปกรณ์จัดเก็บข้อมูลแล้ว คุณสามารถสร้าง Volume Group ได้ ในระบบทั่วไป มักจะสร้าง Volume Group เพียงกลุ่มเดียวเพื่อให้จัดสรรพื้นที่ได้อย่างยืดหยุ่น ในตัวอย่างนี้เราจะตั้งชื่อ Volume Group ว่า “LVMVolGroup” แต่คุณสามารถตั้งชื่อได้ตามต้องการ

ใช้คำสั่งต่อไปนี้เพื่อสร้าง Volume Group และเพิ่ม Physical Volumes ทั้งสองเข้าไป

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb

ตรวจสอบข้อมูล Physical Volumes อีกครั้งด้วยคำสั่ง pvs เพื่อดูว่า Physical Volumes ได้เชื่อมโยงกับ Volume Group ใหม่

sudo pvs

เพื่อดูสรุปสั้นๆ ของ Volume Group ให้ใช้คำสั่ง vgs

sudo vgs
VG     #PV #LV #SN Attr  VSize  VFree 
LVMVolGroup  2  0  0 wz--n- 299.99g 299.99g

ตอนนี้ Volume Group ของคุณมีสอง Physical Volumes ไม่มี Logical Volume และมีความจุรวมของอุปกรณ์ที่เชื่อมโยงทั้งหมด

การสร้าง Logical Volumes จาก Volume Group

เมื่อคุณมี Volume Group พร้อมใช้งานแล้ว คุณสามารถจัดสรรพื้นที่จาก Volume Group เพื่อสร้าง Logical Volumes ได้ LVM จะจัดการและทำแผนที่ข้อมูลให้เอง คุณเพียงแค่กำหนดขนาดและตั้งชื่อ Logical Volume ในตัวอย่างนี้ เราจะสร้าง Logical Volumes 4 ตัวจาก Volume Group ดังนี้

  • ขนาด 10G สำหรับโวลุ่ม “projects”
  • ขนาด 5G สำหรับโวลุ่ม “www” ที่ใช้เก็บเนื้อหาเว็บ
  • ขนาด 20G สำหรับโวลุ่ม “db” ที่ใช้เก็บฐานข้อมูล

Volume “workspace” ที่ใช้พื้นที่ที่เหลือทั้งหมด ใช้คำสั่ง lvcreate เพื่อสร้าง Logical Volumes โดยระบุ Volume Group ที่ต้องการดึงพื้นที่มาใช้งาน พร้อมตั้งชื่อด้วยออปชัน -n และระบุขนาดด้วย -L

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup

คุณสามารถดูรายการ Logical Volumes และความสัมพันธ์กับ Volume Group ได้ด้วยคำสั่ง vgs พร้อมการแสดงผลเพิ่มเติม

sudo vgs -o +lv_size,lv_name
VG     #PV #LV #SN Attr  VSize  VFree  LSize LV   
LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 10.00g projects
LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 5.00g www   
LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 20.00g db

การใช้คำสั่งนี้จะเพิ่มคอลัมน์ lv_size และ lv_name เพื่อแสดงขนาดและชื่อของ Logical Volumes ที่ได้สร้างขึ้นสำหรับโวลุ่มสุดท้าย “workspace” คุณสามารถใช้พื้นที่ที่เหลือทั้งหมดได้โดยใช้ -l เพื่อระบุขนาดเป็นเปอร์เซ็นต์ ในที่นี้เราใช้ 100% ของพื้นที่ที่เหลือ

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup

ตรวจสอบข้อมูล Volume Group ด้วยคำสั่ง vgs พร้อมการแสดงข้อมูลเพิ่มเติม เพื่อดูว่าพื้นที่ทั้งหมดถูกใช้งานแล้ว

sudo vgs -o +lv_size,lv_name
 VG     #PV #LV #SN Attr  VSize  VFree LSize  LV    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  10.00g projects 
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  5.00g www   
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  20.00g db    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0 264.99g workspace

ตอนนี้ “workspace volume” ถูกสร้างขึ้น และ Volume Group “LVMVolGroup” ถูกใช้จนเต็ม

Formatting and Mounting the Logical Volumes

ตอนนี้คุณได้สร้าง Logical Volumes เรียบร้อยแล้ว คุณสามารถใช้งานพวกมันได้เหมือนกับ block devices ทั่วไปLogical Devices เหล่านี้สามารถเข้าถึงได้จากไดเร็กทอรี /dev เหมือนกับอุปกรณ์จัดเก็บข้อมูลอื่น ๆ โดยมีสองเส้นทางที่คุณสามารถเข้าถึงได้

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

เพื่อ format Logical Volumes ทั้ง 4 ด้วยไฟล์ระบบ Ext4 ให้ใช้คำสั่งต่อไปนี้

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

หรือคุณสามารถใช้เส้นทาง /dev/mapper ดังนี้

sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

หลังจาก format แล้ว ให้สร้างจุดเมานต์ (Mount Points) สำหรับ Logical Volumes แต่ละตัว

sudo mkdir -p /mnt/{projects,www,db,workspace}

จากนั้นเมานต์ Logical Volumes ไปยังจุดที่คุณสร้างขึ้น

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

เพื่อให้ระบบเมานต์ Logical Volumes โดยอัตโนมัติทุกครั้งที่บูต ให้แก้ไขไฟล์ /etc/fstab โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ ในตัวอย่างนี้เราจะใช้ nano

sudo nano /etc/fstab

หลังจากแก้ไขไฟล์เรียบร้อยแล้ว ให้บันทึกและออกจากโปรแกรม ถ้าคุณใช้ nano ให้กด CTRL+c, จากนั้น y, แล้วกด ENTER ระบบปฏิบัติการของคุณจะทำการเมานต์ LVM Logical Volumes โดยอัตโนมัติเมื่อมีการ boot



Was this article helpful?

Related Articles