How to create LVM volume group and logical volume

LVM ย่อมาจาก Logical Volume Manager ความสามารถของ LVM คือสามารถสร้าง logical partition ขยายไปบนฮาร์ดดิสก์หลายๆ ลูกได้ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำบน CentOS หรือ Oracle Linux หรือ ค่าย Redhat Enterprise Linux ส่วนฝั่ง Debian ก็สามารถใช้คำสั่งเดียวกันทำงานเหมือนกัน แต่อาจจะต้องติดตั้งโปรแกรมเพิ่ม

โดยขนาดสูงสุดที่ LVM ทำได้ขึ้นกับชนิดของ CPU และ Kernel ที่ใช้งาน

  • สำหรับ Kernel 2.4 บน CPU 32-Bit มีขนาดได้ไม่เกิน 2TB
  • สำหรับ Kernel 2.6 บน CPU 32-Bit มีขนาดได้ไม่เกิน 16TB
  • สำหรับ Kernel 2.6 บน CPU 64-Bit มีขนาดได้ไม่เกิน 8EB
  • ป้จจุบัน Kernel รุ่น ? CPU 64-Bit ยังไม่มีคำตอบ

แต่เมื่อ format ให้มีระบบไฟล์แบบ ext4 จะสร้างพาทิชั่นได้ไม่เกิน 1EB เท่านั้น

ขึ้นกับ file system ใช้งานด้วย
  • เริ่มได้
  • เข้าระบบด้วยบัญชีผู้ใช้ที่มีสิทธิ์ของ root ซึ่งอาจจะเป็น root เอง หรือ user ที่อยู่ในกลุ่ม wheel หากเข้าด้วยบัญชีผู้ใช้อื่นๆ ที่ไม่ใช่ root ให้สั่งคำสั่ง
su -
ตามด้วยรหัสผ่านของ root

หรือ

sudo -i
ตามด้วยรหัสผ่านของผู้ใช้ที่เรียกคำสั่งนี้

จึงจะสามารถทำคำสั่งต่อไปได้

  • ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง
df -h
  • ได้ผลลัพธ์ประมาณดังรูป
df
df
  • จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง
fdisk -l|grep /dev
fdsik
fdisk
  • จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่
  • จะใช้ /dev/sdb
  • เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง
fdisk /dev/sdb

กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง

กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ

fdisk
fdisk
  • สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate
pvcreate /dev/sdb1
  • สร้าง LVM volume group ชื่อ vg_u01
vgcreate vg_u01 /dev/sdb1
  • สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01
lvcreate -n lv_u01 -l 100%FREE vg_u01

ดังภาพ

pvcreate, vgcreate, lvcreate
pvcreate, vgcreate, lvcreate
  • ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง
 pvscan
pvscan
  • ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง
pvdisplay
pvdisplay
  • ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01
mkfs.ext4 -L u01 /dev/vg_u01/lv_u01
mkfs.ext4
  • สร้าง mount point ให้กับ lv_u01
mkdir /u01
  • mount lv_u01 เข้ากับ /u01
mount LABEL=u01 /u01
  • ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK
df -h
mkdir, mount, df
  • สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab
LABEL=u01       /u01    ext4    defaults 0 0
fstab
  • จบขอให้สนุก
  • อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ /u01 ซึ่งอาจจะประกอบไปด้วย /dev/sdb1, /dev/sdc1 ใน vg_u01
  • ยังมีเรื่องการเพิ่มขนาดภายหลังให้ดูที่ http://portal.psu.ac.th/blog/howto/6281 ไปพลางก่อน