สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

วิธีการเพิ่มขนาดของดิสก์ในเครื่อง virtual บน Linux LVM โดยการขยายดิสก์

วิธีการเพิ่มขนาดของดิสก์ในเครื่อง virtual บน Linux LVM โดยการขยายดิสก์
โดยปกติเราสร้างเครื่อง Virtual server เราจะกำหนดทรัพยากรของเครื่องตามความจำเป็นของการใช้งานโดยลักษณะของเครื่องที่เป็น Virtual  server วันหนึ่งการใช้งาน Data มีมากขึ้นเรื่อย ๆ ทำให้พื้นที่มีจำกัด วันนี้เรามาดูวิธีการการสร้าง Partition ใหม่แล้วทำการรวมการทำงานกับ Partition เก่ากันครับ พูดง่าย ๆ คือการขยายพื้นที่ partition โดยการสร้าง Virtual disk ขึ้นใหม่อีกก้อนครับ
อย่างแรกเราดู Type ของ Hard disk เราก่อนด้วยคำสั่ง
 
fdisk –l
 
   เราสามารถเห็นในภาพข้างบน  / dev/sda5 ระบุว่าเป็น "Linux LVM" และมีหมายเลขประจำตัวของ  8e รหัสฐานสิบหก 8e แสดงให้เห็นว่ามันเป็น Linux LVM  ขณะที่ 83 แสดงให้เห็นว่าเป็นพาร์ทิชัน  Linux Native  เราเห็นว่าเรากำลังทำงานกับ LVM เราสามารถดำเนินการเพิ่มขนาดของพาร์ทิชัน Linux Native ได้
โดยใช้คำสั่ง
 
df –lh
 
ด้านบน ข้อมูลดิสก์แสดงให้เห็นว่าตั้งค่าเริ่มต้นของเรามีเพียงหนึ่งดิสก์ 20gb ปัจจุบันซึ่งอยู่ภายใต้ Logical Path  /dev/mapper/Mega-root  คือ disk ที่เราต้องการขยาย คือ /dev/sda5
จากนั้นเราทำการ Crate disk บน Virtual ของเราในที่นี้ตามตัวอย่างเราสร้างเพิ่ม จาก 20G เป็น 30G
ผมขออนุญาตไม่กล่าวถึงขั้นตอนการเพิ่ม virtual disk เพราะในตัวอย่างและของผมใช้ software คนละตัวกัน
ก่อนที่เราจะดำเนินการต่อ เราจำเป็นต้องตรวจสอบว่าพื้นที่ดิสก์ที่สร้างขึ้นมาใหม่ จะถูกตรวจสอบโดยเซิร์ฟเวอร์คุณสามารถใช้  "fdisk-l" รายการดิสก์หลัก คุณมักจะเห็นว่าพื้นที่ดิสก์ที่ยังคงแสดงเป็นขนาดเดิมให้คุณ รีบูตเครื่องเซิร์ฟเวอร์เพื่อให้ Server detect  ด่าที่เปลี่ยนแปลงใหม่แล้วใช้คำสั่ง fdisk –l  อีกทีเพื่อตรวจสอบ
 
 
จากรูปจะเห็นได้ว่าเราทำงานอยู่บน Hard disk ก้อน /dev/sda  ให้เราใช้คำสั่ง fdisk ในการสร้าง Partition ใหม่ที่ต้องการเพิ่ม โดยปกติ Partition จะที่  Primary ได้ทั้งหมดมีได้แค่ 4 Partition เท่านั้น
 
fdisk /dev/sda
 
   กด n เลือกการเพิ่มพาร์ทิชันใหม่
 
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
 
กด p เพื่อเลือกเป็น Primary Partition
 
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
 
จากตัวอย่าง จะมี Partition ที่มีอยู่แล้วคือ /dev/sda1 และ /dev/sda2 เพราะฉะนั้นให้เลือกเป็น 3 คือ /dev/sda3
 
Partition number (1-4): 3
 
จากนั้นให้กด Enter 2 ครั้งเพื่อกำหนดค่า default Cylinder ที่ 2611 และจบที่ค่า 3916 ในการจัดสรรค่า size Partition ที่ถูกสร้างขึ้นเรียบร้อยแล้ว
 
First cylinder (2611-3916, default 2611): "enter"
Using default value 2611
Last cylinder, +cylinders or +size{K,M,G} (2611-3916, default 3916): "enter"
Using default value 3916
 
กด t เพื่อเปลี่ยน ID ของ Partition ในที่นี้เราเลือกเป็น 3 แล้ว
 
Command (m for help): t
Partition number (1-5): 3
 
ป้อนค่ารหัส 8e  ซึ่งเป็นค่าของ Linux LVM เพื่อการ join กันกับค่า /dev/sda5 Partition
 
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
 
กด w เพื่อเขียนลงไปในตาราง Partition
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
 
จากนั้นออกจาก fdisk
ลองใช้ คำสั่ง fdisk –l เพื่อ list partition ดูเราจะเห็นได้มี Partiton /dev/sda3 จำนวน 10G ใหม่ขึ้นมา
 
fdisk -l
 
นี้คือการขั้นตอนการสร้าง Partition ทั้งหมดบน Virtual
จากนั้นให้ Reboot Virtual host
ไม่เช่นนั้นเมื่อเราใช้คำสั่ง pvcreate  จะไม่เจอ Partition ที่สร้างขึ้น
 
root@Mega:~# pvcreate /dev/sda3
  Device /dev/sda3 not found (or ignored by filtering).
 
ใช้คำสั่ง pvcreate เพื่อสร้างค่า physical volume
 
root@Mega:~# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
 
จากนั้นเราต้องยืนยันค่า Volume group ในการค่าเพิ่ม physical volume ซึ่งในแต่ละระบบไม่เหมือนกันซึ่งเราสามารถดูได้โดยใช้คำสั่ง vgdisplay ในตัวอย่างค่า VG Name จะเป็น Mega
 
root@Mega:~# vgdisplay
  --- Volume group ---
  VG Name               Mega
...
VG Size               19.76 GiB
 
จากนั้นใช้คำสั่ง vgextend Mega /dev/sda3
 
root@Mega:~# vgextend Mega /dev/sda3
  Volume group "Mega" successfully extended
 
จากนั้นใช้คำสั่ง pvscan เพื่อสแกน disk ทั้งหมด
 
root@Mega:~# pvscan
  PV /dev/sda5   VG Mega   lvm2 [19.76 GiB / 0    free]
  PV /dev/sda3   VG Mega   lvm2 [10.00 GiB / 10.00 GiB free]
  Total: 2 [29.75 GiB] / in use: 2 [29.75 GiB] / in no VG: 0 [0   ]
 
ต่อไปเราจำเป็นต้อง extend ค่า Logical Volume ลงไปโดย ค่า Physical Partition ก่อนอื่นเราต้องดูค่าชื่อของ logical volume ก่อนโดยคำสั่ง lvdisplay  ซึ่งค่าจะแตกต่างกันไป
 
root@Mega:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/Mega/root
 
จากนั้นใช้คำสั่ง lvextend เพื่อเพิ่มพื้นที่ให้กับ Partition
 
root@Mega:~# lvextend /dev/Mega/root /dev/sda3
  Extending logical volume root to 28.90 GiB
  Logical volume root successfully resized
 
จากั้นเป็นขั้นตอนสุดท้าย คือการปรับขนาดระบบแฟ้มเพื่อที่จะสามารถใช้ประโยชน์จากพื้นที่เพิ่มเติมนี้นี้จะกระทำโดยใช้คำสั่ง resize2fs ใช้ระยะเวลาแล้วแต่จำนวนพื้นทืที่เราเพิ่ม
 
root@Mega:~# resize2fs /dev/Mega/root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Mega/root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/Mega/root to 7576576 (4k) blocks.
The filesystem on /dev/Mega/root is now 7576576 blocks long.
 
จากนั้นใช้คำสั่ง df –h เพื่อดูพื้นที่ Partition ที่เพิ่มขึ้นครับ
df -h
 
ด้วยวิธีนี้ทำให้เราจะมีการเพิ่ม virtual disk โดยการสร้าง Partition ใหม่แล้วทำการ extend ค่าใหม่ไปยัง Partition เก่าได้
ที่มา อ้างอิง url: http://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/