How to extend LVM

Logical Volume Management ( LVM ) เป็นระบบการจัดการพื้นที่ Disk เหมือนกับ Disk Management บน Windows ซึ่งบน Windows จะเรียกว่า Partition ส่วนบน Linux จะเรียกว่า Volume แทน


LVM

  • Physical Volume ( PV ) : เวลาเราเพิ่ม HDD เข้ามา เราจะเห็นเป็น Physical ( /dev/sdd ) ซึ่งเราสามารถใช้ Physical ทั้งลูก หรือสร้างเป็น Partition ( /dev/sdd1 ) เพื่อนำมาสร้างเป็น Physical Volume ซึ่งแนะนำให้ทำเป็น Partition ก่อน
  • Volume Group ( VG ) : หลังจากที่เราสร้าง Physical Volume เปรียบเสมือนเราต่อ HDD หลาย ๆ ลูก ซึ่งหากพื้นที่เต็มเราจะไม่สามารถขยายได้ Volume Group จึงเป็นการนำ Physical Volume หลาย ๆ อันมารวมกัน เพื่อให้มองเห็นเป็นก้อนเดียว
  • Logical Volume ( LV ) : เป็นการตัดแบ่ง Volume Group ออกเป็น Logical Volume เพื่อนำไปต่อกับ File System ซึ่งโดยปกติจะแบ่งเป็น 2 Logical Volume คือ root และ swap

Get Started

  • ตรวจสอบ Disk Usage ของ File System
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol6-lv_root
                       45G   16G   28G  37% /
tmpfs                 864M  228K  863M   1% /dev/shm
/dev/sda1             477M  353M   95M  79% /boot
  • ตรวจสอบ Partition และ File System จะเห็น /dev/sdd เพิ่มเข้ามา
# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00039da3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        6528    51915776   8e  Linux LVM

Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4371fdda

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1305    10482381   83  Linux

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3fb1e686

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1305    10482381   83  Linux

Disk /dev/sdd: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
  • สร้าง Primary Partition
# fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9f1cd60c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help):n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6527, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527):
Using default value 6527
  • ทำการ Change Type Partition
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)
  • ตรวจสอบ Partition ที่สร้างขึ้นมา Print & Verify
Command (m for help): p

Disk /dev/sdd: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9f1cd60c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        6527    52428096   8e  Linux LVM
  • ทำการ Write to Disk
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
  • ตรวจสอบ Physical Volume
# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  vg_ol6 lvm2 a--u 49.51g    0
  • ทำการ Create Physical Volume จาก Partition ที่สร้าง /dev/sdd1
# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created
  • ตรวจสอบ Physical Volume อีกครั้งหนึ่ง จะเห็น /dev/sdd1 อยู่ใน Physical Volume
# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  vg_ol6 lvm2 a--u 49.51g     0
  /dev/sdd1         lvm2 ---- 50.00g 50.00g
  • ตรวจสอบ Volume Group
# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  vg_ol6   1   2   0 wz--n- 49.51g    0
  • ทำการ Add Physical Volume เข้าไปใน Volume Group
# vgextend vg_ol6 /dev/sdd1
  Volume group "vg_ol6" successfully extended
  • ตรวจสอบ Volume Group อีกครั้งหนึ่ง จะเห็นพื้นที่ VFree จาก 0 เป็น 50.00g
# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  vg_ol6   2   2   0 wz--n- 99.50g 50.00g
  • ตรวจสอบ Logical Volume
# lvs
  LV      VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vg_ol6 -wi-ao---- 45.60g
  lv_swap vg_ol6 -wi-ao----  3.91g
  • ทำการ Extend Logical Volume ที่อยู่ใน Volume Group โดยเลือกขยาย Logical Volume ที่เป็น lv_root
# lvextend -l +100%FREE vg_ol6/lv_root
  Size of logical volume vg_ol6/lv_root changed from 45.60 GiB (11674 extents) to 145.60 GiB (37273 extents).
  Logical volume lv_root successfully resized.
  • ตรวจสอบ Logical Volume อีกครั้งหนึ่ง จะเห็นพื้นที่ Logical Volume ที่เป็น lv_root เพิ่มขึ้น
# lvs
  LV      VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vg_ol6 -wi-ao---- 95.60g
  lv_swap vg_ol6 -wi-ao----  3.91g
  • ตรวจสอบ Disk Usage ของ File System อีกครั้งหนึ่ง จะเห็นว่าพื้นที่ของ vg_ol6-lv_root ยังไม่เปลี่ยน
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol6-lv_root
                       45G   16G   28G  37% /
tmpfs                 864M  228K  863M   1% /dev/shm
/dev/sda1             477M  353M   95M  79% /boot
  • ทำการ Resize พื้นที่ของ vg_ol6-lv_root บน File System
# resize2fs /dev/mapper/vg_ol6-lv_root
resize2fs 1.43-WIP (20-Jun-2013)
Filesystem at /dev/mapper/vg_ol6-lv_root is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 6
The filesystem on /dev/mapper/vg_ol6-lv_root is now 25060352 blocks long.
  • ตรวจสอบ Disk Usage ของ File System อีกครั้งหนึ่ง จะเห็นว่าพื้นที่ของ vg_ol6-lv_root เพิ่มจาก 28G เป้น 75G แล้ว
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol6-lv_root
                       94G   16G   75G  18% /
tmpfs                 864M  228K  863M   1% /dev/shm
/dev/sda1             477M  353M   95M  79% /boot

อ่านเพิ่มเติม : https://bit.ly/2MRasLD


Leave a Reply

Your email address will not be published. Required fields are marked *