วันอาทิตย์ที่ 30 มิถุนายน พ.ศ. 2556

สร้าง Volume Group และ Logical Volume

หลังจากที่เราสร้าง partition บน disk  เป็น ชนิด Linux LVM เรียบร้อยแล้ว  ขั้นตอนถัดมาของการสร้าง logical volume ก็คือ เอา partition หรือ disk ทั้งลูก add เข้าไปใน Volume Group  สำหรับตัวอย่างนี้ ผมจะสร้าง Volume Group ใหม่ก่อนก็แล้วกันนะครับ

จากตัวอย่าง ผมมี  disk /dev/sdb อยู่ ซึ่งมี partition /dev/sdb1 และ /dev/sdb2  ทีถูกกำหนด type เป็น Linux LVM เรียบร้อยแล้ว

คำสั่งทีใช้ในการสร้าง Volume Group ก็คือ vgcreate (ย่อมาจาก Volume Group Create) รูปแบบการเรียกใช้พื้นฐานก็คือ

vgcreate VolumeGroupName  PhysicalDevicePath

โดย VolumeGroupName คือชื่อ ของ Volume Group ที่เราจะสร้าง จากตัวอย่างผมจะให้ชือว่า vol2
ส่วน PhysicalDevicePath จะเป็นชื่อของ disk  หรือ partition  โดยต้องระบุแบบ full path name หรือต้องอ้างถึงแบบมี /dev นำหน้าชื่อด้วย ในตัวอย่าง ผมใช้ /dev/sdb1

ในกรณีนี้ คำสั่งที่เราเรียกใช้คือ

vgcreate  vol2  /dev/sdb

หลังจากที่คำสั่งนี้ทำงานเสร็จเรียบร้อย เราจะได้ Volume Group ชื่อ vol2  โดยจะถูกสร้างเป็น device file อยู่ที /dev/vol2

ต่อจากนั้น เราจะสร้าง Logical Volume จากเนื้อที่ใน  Volume Group  vol2 ที่เพิ่งถูกสร้างมาหมาดๆ โดยใช้คำสั่ง lvcreate (logical volume create) โดยมีรูปแบบก็คือ

lvcreate -L LogicalVolumeSize  VolumeGroupName|VolumeGroupPath

LogicalVolumeSize  :  เป็นขนาดของ  Logical Volume ที่เราจะสร้าง  เราสามารถระบบุหน่วยเป็น  K,M,G (kilobyte, Megabyte, Gigabyte) ได้ด้วย ตามตัวอย่าง ผมใส่เป็น 5G

VolumeGroupName|VolumeGroupPath : ตรงนี้เราระบุชื่อของ  Volume Group โดยจะระบุแค่ชื่อ หรือ ระบุแบบชื่อ device เต็มๆ คือมี /dev นำหน้าได้ด้วยครับ  จากตัวอย่าง ผมใช้ vol2

คำสั่งที่เรียกใช้จะเป็น

lvcreate -L 5G  vol2



เมื่อคำสั่งทำงานเสร็จ มันจะบอกชื่อของ Logical Volume ทีถุกสร้างขึ้นมา ซึ่งในกรณีนี้ผมไม่ได้ระบุชื่อ Logical Volume ที่จะสร้าง ระบบจะกำหนดชื่อให้เราเอง ในกรณีนี้คือ  lvol0  โดยจะมือชื่อ  device แบบเต็มๆ คือ /dev/vol2/lvol0  ซึ่งเป็น symbolic link ชี้ไปยังชื่อ device คือ /dev/dm-6 (บน CentOS 6) แต่ผมแนะนำให้ใช้ /dev/vol2/lvol0 ในการอ้างถึง Logical Volume นะครับ เพราะบางกรณี ถ้าเครื่องมีการ reboot ชื่อ device /dev/dm-N นี้ระบบอาจจะมีการกำหนดตัวเลข N กันใหม่ ซึ่งอาจจะเปลี่ยนแปลงไปได้

ถึงจุดนี้เราได้ Logical Volume ที่สามารถนำไปสร้างเป็น filesystem ได้แล้วครับ

วันศุกร์ที่ 21 มิถุนายน พ.ศ. 2556

การสร้าง Linux Partition เพื่อเป็น Physical Volume

ครั้งที่แล้วเราพูดถึงวิธีหาว่า disk ในระบบมีอะไรบ้าง ครั้งนี้ เราจะพูดถึงการสร้าง Linux Partition เพื่อจะใช้เป็น Physical Volume กันครับ
หลายๆ ท่านคงจะพอทราบแล้วว่า คำสั่งทั่วไปที่ใช้ในการสร้าง partition บน Linux คือ fdisk  รูปแบบพื้นฐานการเรียกใช้คำสั่งนี้ คือ  fdisk ตามด้วยชื่อ device  โดยชื่อ device นี้ต้องระบุแบบเต็มคือระบุ /dev ด้วย เช่น 

# fdisk /dev/sdb

อีกอย่างที่ไม่ควรลืมก็คือ การเรียกใช้คำสั่งนี้ ต้อง Login หรือ su เป็น root นะครับ


หลังจากที่เรียกใช้ fdisk แล้ว ถ้าเป็น disk ที่ไม่เคยมี partition อยุ่ก่อน คำสั่งนี้จะแสดง warning message ขึ้นมา ไม่ต้องสนใจก็ได้ครับ ต่อจากนั้น fdisk จะขึ้นบรรทัด prompt มาให้เราป้อนคำสั่ง

Command (m for help) :

ถึงตรงนี้ เราสามารถเรียกดูว่า มีคำสั่งอะไรให้ใช้ได้บ้าง โดยการกด  m ครับ 

คำสั่งที่ใช้สร้าง partition ใหม่ คือ n (new partition) ถ้าเรากด n จากนั้น  fdisk จะให้เราใส่ข้อมูลของ partition ที่เราจะสร้างตามนี้ครับ 
  • ชนิด partition สร้าง primary  (กด p ) หรือ extend partition (กดปุ่ม e)  เราเลือก p ครับ 
  • กำหนด partition number ใส่ค่าแรกที่ fdisk แนะนำ (1-4) คือ 1 ในกรณีที่มี  partition อื่นอยู่แล้ว เราก็ใส่หมายเลขต่อไปเลยครับ 
  • เลือก cylinder แรก ของ partition นี้ ปกติใช้ค่า default ที่ fdisk เลือกให้ ก็กด enter เลย
  • เลือก cylinder สุดทัายของ partition นี้ หรือเลือกขนาดของ  partition ปกติ ผมกำหนดขนาดของ partition ง่ายกว่า ในกรณีนี้เราต้องใส่เครื่องหมาย + ตามด้วยขนาด และตามด้วยหน่วยของขนาด (K,M,G) ครั้บ ถ้าไม่ใส่หน่วย fdisk จะเข้าใจว่าขนาดที่เราระบุ เป็น byte ครับ 
ถึงจุดนี้ fdisk จะทราบข้อมูลทั้งหมดที่จะใช้ในการสร้าง partition แล้ว แต่ยังไม่ได้สร้างจริงๆ
fdisk จะขึ้น prompt ให้เราป้อนคำสั่งถัดไป

ถึงตรงนี้ ถ้าเราอยากดูกว่า fdisk เตรียมจะสร้าง partition อะไรให้เราบ้าง เราสามารถกด p (print) เพื่อสั่งให้ fdisk พิมพ์ออกมาให้เราดู ในกรณีที่เรากำหนด partition ให้กับ  disk ว่างๆ ในตอนแรก ถ้าถึงขั้นตอนนี้เราจะเป็น /dev/sdb1


ขั้นตอนต่อมาคือ การกำหนด partition system id หรือชนิดของ system partition  ซึ่งเราต้องกด t (type)
จากนั้น fdisk จะให้เราป้อนเลขฐานสิบหก (hex code) ตามชนิดของ partition system id ที่เราจะระบุ ในกรณีของเรา ต้องป้อนค่า 8e ซึ่งก็คือ Linux LVM เสร็จแล้ว fdisk จะกลับมาที่  prompt 

ถ้าเราไม่สร้าง partition อื่นต่อ ขั้นตอนสุดท้ายคือ บอกให้ fdisk สร้าง partition ตามที่เราระบุไว้ โดยการป้อนคำสั่ง w (write) ซึ่งเป็นการบอก fdisk  ให้เขียนข้อมูลที่เรากำหนดไว้ทั้งหมด ลงไปใน disk เป็นอันเสร็จขั้นตอนครับ 

partition ที่เราสร้างได้ จะชื่อเหมือนกับ disk ครับ แล้วตามด้วยตัวเลข partition number ที่เราระบุตอนสร้าง เช่นในกรณีนี้เราสร้าง partition บน /dev/sdb  disk เราจะได้ partition ชื่อ /dev/sdb1 ครับ เอา partition นี้ไปทำอย่างอื่นต่อได้เลยครับ 

วันอังคารที่ 18 มิถุนายน พ.ศ. 2556

LVM : การเตรียม Physical Volume

หลังจากที่พูดถึงทฤษฏีของ LVM ไปกันแล้ว มาเข้าภาคปฏิบัติกันนะครับ

     สิ่งแรกที่ต้องทำ คือเราต้องเตรียมหรือจัดหา physical volume กันก่อน ตัว physical volume จะเป็น disk partition  หรือเป็น harddisk ทั้งลูกก็ได้ครับ ถ้าจะใช้  harddisk ทั้งลูก  harddisk ต้องไม่มี  partition อยู่เลยครับ ถ้ามีต้องลบออกให้หมด แต่ถ้าเป็น disk partition เราต้องกำหนดชนิดของ partition ให้เป็น Linux LVM ครับ
    คำสั่งทีใช้จัดการ partition บน Linux คือ fdisk แต่ก่อนที่จะจัดการ harddisk เราต้องรู้ว่าในเครื่องเราจะอ้างถึง harddisk ได้อย่างไร
    ใน Linux เราจะอ้างถึง  harddisk  โดยใช้ชื่อไฟล์ ปกติ จะอยู่ใน directory /dev  โดย harddisk ชื่อจะขึ้นต้นด้วย hd ถ้า Linux เห็นเป็น ATA disk และจะขึ้นต้นด้วย sd ถ้า Linux เห็นเป็น SATA disk และชื่อ disk จะลงท้ายด้วยตัวอักษร a-z  เรียงกันไปเรื่อยๆครับ  แต่ถ้าเราไม่ทราบจริงๆ เราสามารถใช้คำสั่ง lsblk (list block) เพื่อดูว่ามี block device (disk) อะไรอยู่ในระบบบ้าง ในกรณีที่ disk มีการแบ่งเป็น partition ไว้แล้ว คำสั่งนี้จะแสดงถึง  partition ที่ถูกแบ่งไว้ด้วย ลองดูตัวอย่างในรูปครับ


      จากตัวอย่างนี้ มี disk อยู่สองลูกครับ ดูที่บรรทัดที่คอลัมน์ TYPE เป็น disk จะเห็นว่ามีสองบรรทัดคือ sda และ sdb โดย sda มีการแบ่ง partition อยู่แล้ว ส่วน sdb เป็น disk เปล่าๆ ยังไม่มีแบ่ง  partition  ครับ สำหรับคำสั่งนี้จะละ /dev/ ที่อยู่หน้าชื่อ disk ไว้นะครับ
     จากตัวอย่างนี้เราสามารถนำ /dev/sdb ไปสร้างเป็น volume group ได้เลยครับ ในครั้งต่อไป ผมจะพูดถึงวิธีการสร้าง partition ของ disk ที่จะนำไปใช้เป็น physical volume กันครับ

วันจันทร์ที่ 3 มิถุนายน พ.ศ. 2556

Logical Volume Manager(LVM): Concept

ครั้งที่แล้ว ผมได้พูดถึงการเพิ่มเนื้อที่ในระบบของ filesystem ก่อนที่จะมี LVM กันไปแล้ว เรามาดูกันว่า LVM คืออะไร ทำงาน และ ช่วยแก้ปัญหาอย่างไร

Logical Volume Manager (LVM) เป็นโปรแกรมระบบ (system software) ทำหน้าที่ช่วย map disk partition ที่กระจัดกระจาย อยู่ใน disk ลูกเดียวกัน หรือ อยู่ข้ามลูกกัน นำมายำรวมกันแล้วสร้างเป็น partition จำลอง ที่เสมือนมีเนื้อที่ติดกัน ที่พร้อมจะนำไปสร้างเป็น filesystem


เราเริ่มจาก มี disk ซึ่งมีที่ว่างอยู่ อาจจะว่างทั้งลูกเหมือนในรูป หรือว่างเป็นส่วนๆ ก็ได้ครับ เนื้อที่ว่างเหล่านี้แต่ละอันเรียกว่า physical volume (PV) เราเอาเนี้อที่เหล่านี้ มารวมกันสร้างเป็น disk จำลองก้อนใหญ่ หรือ ศัพท์ของ LVM  เรียกว่า volume group (VG) โดย เนื้อที่ใน PV จะถูกแบ่งย่อยออกเป็นส่วนย่อยๆอีก เรียกว่า physical extent (PE) ซึ่งปกติมีขนาด 4M ตัว PE นี้จะเป็น unit ย่อยของเนื้อ disk ที่เราจะสามารถจองให้กับ volume group ได้ ดังนั้น physical volume แต่ละอันต้องมีขนาดเป็นจำนวนเท่าของ physical extent  ด้วย

พอได้แบบนี้ เราก็ตัดแบ่งเนื้อที่ใน volume group มาสร้างเป็น partition ย่อยๆ โดยจะดึงจาก volume group มาเป็นส่วนๆ เท่ากับขนาดของ physical extent มาประกอบกัน เป็น partition จำลองหนึ่งอัน ศัพท์ของ LVM จะเรียก partition  นี้ว่า logical volume (LV)  เราก็เอา logical volume นี้หละครับ ไปสร้างเป็น filesystem แทน เนื้อที่แต่ละ partition จริงๆ บน disk

ถ้าเราสามารถดูในรายละเอียดย่อยในระดับ PE  ของ LV  ได้ จะพบว่า LV หนึ่งก้อน ประกอบด้วย PE ซึ่งอาจจะมาจากหลากหลาย  PV ครับ