14 July 2011LV on RAID

วันนี้เฮี้ยนอยากลองใช้ LVM (Logical Volume Management) บน Software RAID (RAID5) ดู
โดยผมลองใน VMware นะครับ เพื่อความปลอดภัย อิอิ

VM configuration
- Fedora 9.0
- SCSI disk 8GB x 3

ขั้นที่ 1 สร้าง RAID Array ขึ้นมาก่อน โดย
1. เนื่องจากผมไม่ได้ใช้ทั้ง Disk จึงต้องแบ่ง Partition เอาครับ โดยใช้ fdisk
แบ่ง Harddisk ทั้ง 3 ลูกให้มี Partition ขนาด 1000MB (จะลอง RAID 5 จึงต้องใช้ขนาดเท่ากันเป๊ะ ๆ)
เป็น /dev/sda5, /dev/sdb5, /dev/sdc5

2. สร้าง RAID Array ชื่อ /dev/md0

[root@localhost ~]# mdadm -Cv /dev/md0 -l5 -n3 /dev/sda5 /dev/sdb5 /dev/sdc5

3. ตรวจสอบสถานะของ RAID Array ได้โดย

[root@localhost ~]# mdadm --detail /dev/md0

ขั้นที่ 2 สร้าง Logical Volume (LV) บน /dev/md0
1. กำหนดให้ /dev/md0 เป็น Physical Volume (PV) ของ LVM

[root@localhost ~]# pvcreate /dev/md0

ตรวจสอบสถานะของ PV โดย

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               mainvolume
  PV Size               2.83 GB / not usable 1.88 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              723
  Free PE               685
  Allocated PE          38
  PV UUID               WJFb6g-pLu9-43nw-Bn1F-Ki0g-PBZf-D82EYt

2. สร้าง Volume Group (VG) ชื่อ mainvolume บน PV /dev/md0

[root@localhost ~]# vgcreate mainvolume /dev/md0

ตรวจสอบสถานะของ VG โดย

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               mainvolume
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               2.82 GB
  PE Size               4.00 MB
  Total PE              723
  Alloc PE / Size       38 / 152.00 MB
  Free  PE / Size       685 / 2.68 GB
  VG UUID               SeF41p-EkAk-xmNB-Wcy6-17ae-8KBl-3nHr4n

3. สร้าง Logical Volume (LV) home บน VG mainvolume

[root@localhost ~]# lvcreate -L100M -nhome mainvolume

ตรวจสอบสถานะของ LV โดย

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/mainvolume/home
  VG Name                mainvolume
  LV UUID                vyHnOz-PR2y-fe05-0zq1-GCNE-1N5d-ocJgvG
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                152.00 MB
  Current LE             38
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

4. Format LV /dev/mainvolume/home เป็น File system ตามต้องการ

[root@localhost ~]# mkfs.ext3 /dev/mainvolume/home

5. จากนั้นก็ mount และใช้งานได้เลย

[root@localhost ~]# mount /dev/mainvolume/home /data/virtualhome

ขั้นที่ 3 ทำให้ระบบ mount LV อัตโนมัติตอน boot
1. แก้ไข file /etc/mdadm.conf ให้เป็นดังนี้ เพื่อให้ Service mdmonitor เตรียม RAID Array ให้พร้อม mount

DEVICE /dev/sd*

ARRAY /dev/md0 uuid=9e10ec61:bde4e7ac:90c708b4:8dd1ef17

โดยค่า uuid ดูจาก mdadm -D

2. แก้ไข /etc/fstab เพื่อให้ mount อัตโนมัติ

/dev/mainvolume/home    /data/virtualhome       ext3    defaults        0 0

ขั้นที่ 4 ทดลองขยายขนาดของ Logical Volume
1. unmount Logical Volume

[root@localhost ~]# umount /data/virtualhome

2. เพิ่มขนาดของ Logical Volume

[root@localhost ~]# lvresize -L 200M /dev/mainvolume/home

3. Run e2fsck บน Logical Volume ก่อน

[root@localhost ~]# e2fsck -f /dev/mainvolume/home

4. เพิ่มขนาดของ File system

[root@localhost ~]# resize2fs /dev/mainvolume/home 200M

Note: ในการเพิ่มขนาดของ Filesystem ถ้าไม่กำหนดขนาดไว้ ระบบก็จะเพิ่มให้เท่ากับ LV พอดี

5. mount เพื่อใช้งาน

[root@localhost ~]# mount /dev/mainvolume/home /data/virtualhome

ขั้นที่ 5 ทดลองเพิ่ม Device เข้ามาใน RAID Array เพื่อขยายขนาดของ Logical Volume เนื่องจากพื้นที่ใกล้เต็มแล้ว
0. แอบสร้าง Partition เพิ่มขึ้นมา 1 Partition ขนาด 1000MB (/dev/sdb6)
1. เพิ่ม Device /dev/sdb6 เข้าไปใน RAID Array /dev/md0

[root@localhost ~]# mdadm --add /dev/md0 /dev/sdb6

2. สั่ง Grow เพื่อขยายขนาดของ RAID Array

[root@localhost ~]# mdadm -G /dev/md0 -n4

เพิ่ม Disk ขนาด 1GB ยังทำน้านนาน ถ้าเพิ่ม 1TB นี่สงสัยจะได้รอเป็นสัปดาห์ – -”

3. Resize Physical Volume

[root@localhost ~]# pvresize -v -d /dev/md0
    Using physical volume(s) on command line
    Archiving volume group "mainvolume" metadata (seqno 10).
    Resizing physical volume /dev/md0 from 723 to 964 extents.
    Resizing volume "/dev/md0" to 7902336 sectors.
    Updating physical volume "/dev/md0"
    Creating volume group backup "/etc/lvm/backup/mainvolume" (seqno 11).
  Physical volume "/dev/md0" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

4. Volume Group จะถูกขยายโดยอัตโนมัติ

5. ขยาย Logical Volume ตามวิธีในขั้นที่ 4 ได้เลย

ขอขอบคุณแหล่งความรู้ใน Internet ดังนี้ครับ
http://vuthi.blogspot.com/2005/12/mdadm-lvm-honey.html
http://www.opentle.org/th/node/8155
http://ubuntuforums.org/archive/index.php/t-348176.html
http://archives.devshed.com/forums/linux-97/pvresize-after-extending-rai…
http://itknow.exteen.com/20080621/reduce-a-non-root-lvm
http://www.tldp.org/HOWTO/LVM-HOWTO/
http://man-wiki.net/index.php/8:mdadm
http://man-wiki.net/index.php/5:mdadm.conf


Leave a Reply