การใช้งาน LVM เพื่อจัดการพื้นที่ฮาร์ดดิสก์ ตอนที่ 2

หลังจากที่กล่าวถึงเหตุผลว่าทำไมต้องใช้ 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 ที่เราสร้างได้

ข้อมูลอ้างอิง

4 thoughts on “การใช้งาน LVM เพื่อจัดการพื้นที่ฮาร์ดดิสก์ ตอนที่ 2”

  1. อยากได้วิธีการแก้ไขเมื่อ lvm มีปัญหาด้วยครับ

  2. ขอบคุณมากครับ มีประโยชน์มากๆเลยครับ

  3. อยากรู้วิธีแก้ปัญหา เมื่อทำ lvm แล้วฮาร์ดดิสมีปัญหาด้วยครับ

Leave a Reply