หลังจากที่กล่าวถึงเหตุผลว่าทำไมต้องใช้ LVM ในบทความที่แล้ว คราวนี้เราจะลองคอนฟิกกันดู
ระบบที่ทดสอบ
- Fedora 8
คำเตือน!!! สำหรับการเรียนรู้และทดสอบ ขอแนะนำให้ลองบนฮาร์ดดิสก์ที่ไม่ได้ใช้งาน หรือใช้ Disk Partition เปล่าๆ ที่ไม่มีข้อมูลใดๆ อยู่ เพราะว่าหลังจากคอนฟิกไปแล้วโดยเฉพาะขึ้นตอนที่มีการสร้าง filesystem ใหม่ ข้อมูลเก่าจะถูกลบแทนที่ทั้งหมด ซึ่งก็เหมือนกับการ format บน Windows นั่นเอง
ขั้นตอนการทำ LVM บนฮาร์ดดิสก์มีขั้นตอนดังต่อไปนี้
เตรียม Disk Partition เพื่อใช้ทำเป็น LVM
เริ่มต้นเราต้องเลือก parition ที่จะใช้ทำเป็น LVM โดยใช้คำสั่ง fdisk ในการสร้าง ตัวอย่างเช่นสมมติว่าเรามีฮาร์ดดิสก์อยู่สองตัว ซึ่งเป็นตัวใหม่ที่ยังไม่เคยถูกใช้งานเลยต่ออยู่เป็น /dev/sdb และ /dev/sdc เราต้องสร้าง partition ขึ้นมาใหม่แล้วเปลี่ยนชนิดของ partition ให้เป็นแบบ “Linux LVM” ได้ตามตัวอย่างต่อไปนี้
ตัวอย่างการเตรียม Disk Partition บนฮาร์ดดิสก์ตัวใหม่ /dev/sdb ที่ไม่มีข้อมูลใดเลย สำหรับทำ LVM
[root@server ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 10443. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 85.8 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x6ca4ca9c
Device Boot Start End Blocks Id System
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-10443, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-10443, default 10443): Using default value 10443
Command (m for help): p
Disk /dev/sdb: 85.8 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x6ca4ca9c
Device Boot Start End Blocks Id System /dev/sdb1 1 10443 83883366 83 Linux
Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 85.8 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x6ca4ca9c
Device Boot Start End Blocks Id System /dev/sdb1 1 10443 83883366 8e Linux LVM
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks. ตัวอย่างข้างบนนี้จะสร้างแต่ partition เดียวเท่านั้นบนฮาร์ดดิสก์ลูกนี้ ที่สำคัญอย่าลืมตั้งค่าให้เป็น “Linux LVM” ส่วนก้อน /dev/sdc เราก็สามารถทำได้ในรูปแบบเดียวกันคือสร้างให้มีแค่ /dev/sdc1 เท่านั้น
สร้าง Physical Volume บน Disk Partition
ขั้นตอนนี้เราจะทำการสร้าง Physical Volume ขึ้นมาบน Disk Partition ที่เราเพิ่งสร้างไปคือ /dev/sdb1 และ /dev/sdc1 โดยเราสามารถทำได้โดยใช้คำสั่ง pvcreate ในการสร้างและใช้คำสัง pvdisplay ในการตรวจสอบได้ ตามตัวอย่างต่อไปนี้
ตัวอย่างการสร้าง Physical Volume บน Disk Partition
[root@server]# pvcreate /dev/sdb1 /dev/sdc1 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created
[root@server ~]# pvdisplay --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 80.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID DE2WGx-ENyz-oxlv-jZ20-Le5l-pnvV-GzMeJ2
--- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 80.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID s0Wuj0-AYVd-jIZa-gmQp-n05o-MinM-xDQKVh
รวม Physical Volume ทำเป็น Volume Group
ขั้นตอนนี้เราจะนำ Physical Volume ที่เราสร้างมารวมกันเป็นก้อนๆ เดียวเป็น Volume Group โดยเราสามารถตั้งชื่อได้เพื่อสะดวกในการดูแลระบบต่อไป ในขั้นตอนนี้เราจะใช้คำสั่ง vgcreate ในการสร้างและ vgdisplay ในการตรวจสอบ ตามตัวอย่างต่อไปนี้
ตัวอย่างการสร้าง Volume Group
[root@server ~]# vgcreate VG_HOME /dev/sdb1 /dev/sdc1 Volume group "VG_HOME" successfully created
[root@server ~]# vgdisplay --- Volume group --- VG Name VG_HOME System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 159.99 GB PE Size 4.00 MB Total PE 40958 Alloc PE / Size 0 / 0 Free PE / Size 40958 / 159.99 GB VG UUID ivjNHc-GdhD-58jD-0b9H-LK8J-pY59-9Lj140
ตัวอย่างด้านบนนี้จะเป็นการรวม Physical Volume /dev/sdb1 และ /dev/sdc1 รวมเป็น Volume Group เดียวที่ชื่อ VG_HOME
แบ่ง Volume Group ออกเป็น Logical Volume
เมื่อเราได้ Volume Group แล้ว เราจะนำมาแบ่งออกเป็นส่วนต่างๆ คือ Logical Volume เพื่อนำไปใช้งานอีกที สมมติว่าเราต้องการสร้าง Logical Volume สำหรับทำเป็น /home ขนาด 50GB สามารถทำได้โดยคำสั่งต่อไปนี้
ตัวอย่างการสร้าง Logical Volume ขนาด 50GB [root@fc8-a ~]# lvcreate -L 50G -n LV_HOME VG_HOME Logical volume "LV_HOME" created
[root@fc8-a ~]# lvdisplay --- Logical volume --- LV Name /dev/VG_HOME/LV_HOME VG Name VG_HOME LV UUID VldIjI-LyUr-raDW-Of5Z-Hwes-Sl1P-Hu2juQ LV Write Access read/write LV Status available # open 0 LV Size 50.00 GB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:0
ตัวอย่างด้านบนจะเป็นการสร้าง Logical Volume ที่ชื่อ LV_HOME ขนาด 50GB ซึ่งเป็นส่วนหนึ่งของ VG_HOME เวลานำไปใช้งานสร้าง filesystem เราสามารถอ้างอิงโดยใช้ชื่อเป็น /dev/VG_HOME/LV_HOME
สร้าง filesystem บน Logical Volume
หลังจากที่ได้ Logical Volume แล้ว เราต้องทำการสร้าง filesystem ขึ้นมาก่อนที่จะนำไป mount ใช้งานได้ คำสั่งที่ใช้ในการสร้างก็เหมือนกับเราสร้างบน partition ทั่วไปนั่นเอง คือคำสั่ง mke2fs ในที่นี้เราจะสร้าง ext3 filesystem
ตัวอย่างการสร้าง ext3 filesystem บน Logical Volume
[root@server ~]# mke2fs -j /dev/VG_HOME/LV_HOME mke2fs 1.40.2 (12-Jul-2007) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 6553600 inodes, 13107200 blocks 655360 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 400 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424
Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
ทำการ mount filesystem
สุดท้ายเราต้อง mount filesystem บน path ที่เราต้องการเช่น /home แต่สำหรับการทดสอบการก่อนใช้งานจริง แนะนำให้ mount เป็น path อื่นก่อนเช่น /mnt/home
ตัวอย่างการ mount filesystem [root@server ~]# mkdir /mnt/home [root@server ~]# mount /dev/VG_HOME/LV_HOME /mnt/home [root@server ~]# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 9196792 3850748 4871324 45% / tmpfs 225064 0 225064 0% /dev/shm /dev/mapper/VG_HOME-LV_HOME 51606140 184272 48800428 1% /mnt/home
จากตัวอย่าง เราจะสร้าง path ขึ้นมาใหม่สำหรับทดสอบ ขอแนะนำให้ทำความเข้าใจและมั่นใจก่อนที่จะนำไป mount เป็น /home จริงๆ
ในตอนต่อไปจะแนะนำถึงวิธีการปรับ เพิ่ม ลด ขนาดของ LVM ที่เราสร้างได้
ข้อมูลอ้างอิง
อยากได้วิธีการแก้ไขเมื่อ lvm มีปัญหาด้วยครับ
ขอบคุณมากครับ มีประโยชน์มากๆเลยครับ
อยากรู้วิธีแก้ปัญหา เมื่อทำ lvm แล้วฮาร์ดดิสมีปัญหาด้วยครับ
เยี่ยมเลยครับ ผมเห็นภาพเลย