หลังจากที่เราได้เรียนรู้การสร้าง Filesystem จาก Logical Volume กันไปแล้ว ในตอนนี้ จะถึงเนี้อหาที่ทุกคนรอคอยแล้วครับ คือการสร้าง snapshot ของ Filesystem กันครับ
เหมือนที่ผมเคยเกริ่นไปแล้ว การสร้าง snapshot ก็คือ การการสร้าง filesystem ขึ้นมาอีกหนึ่งอัน ซึ่งจะมีข้อมูลเหมือนกับ filesystem ต้นแบบ ณ.เวลาที่เราสร้าง snapshot หรือกล่าวอีกนัยหนึ่งก็คือ เราสร้าง filesytem อีกอันขึ้นมาที่มีข้อมูลเสมือนเราหยุดเวลาของ filesytem ตัวต้นแบบไว้ครับ
ทำไมเราต้องทำ snapshot ในกรณีของ Zimbra เราจะสร้าง snapshot ของ /opt/zimbra ในขณะที่ zimbra ถุก หยุดการทำงาน (stop) อยู่ เพื่อที่เราจะได้ backup /opt/zimbra ได้ โดย ไม่ต้อง stop zimbra เป็นเวลานาน ขึ้นตอนก็มีประมาณนี้ครับ
1) stop zimbra
2) สร้าง snapshot ของ /opt/zimbra
3) start zimbra
4) mount snapshort ของ /opt/zimbra และทำการ backup
5) ลบ snapshot ทิ้ง
ซึ่งในขึ้นตอน 2) จะกินเวลาไม่นานครับ ซึ่งถ้าเราไม่ทำแบบนี้ เราจะต้อง backup /opt/zimbra ให้เสร้จก่อนที่จะสามารถ start zimbra กลับขึ้นมาได้ ซึ่งถ้าข้อมูลใน /opt/zimbra มีขนาดใหญ่ การ backup จะ กินเวลานาน ซึ่งก็หมายถึง Zimbra จะต้องหยุดเป็นเวลานานด้วยครับ
ถึงตรงนี้ หลายคนอาจจะมีคำถามว่า แล้วเรา backup /opt/zimbra ในขณะที่ zimbra ยังทำงานอยู่ได้ไหม คำตอบก็คือ ได้ครับ แต่ ข้อมูลที่ backup ไป เมื่อ restore กลับมา โอกาสที่จะใช้งานไม่ได้มีสูง (ตัวใครตัวมัน) เพราะ zimbra เอง มีส่วนที่เป็น mysql database และ ldap ซึ่งถ้า backup file ตรงๆ ขณะที่โปรแกรมทั้งสองทำงานอยู่ อาจจะมีปัญหาได้
วิธีการสร้าง snapshot filesystem
ใช้คำสั่ง lvcreate ตามรูปแบบนี้ครับ
lvcreate -Lsize -s -n snapshot_dev_name original_lv_dev_name
size เป็นขนาดเนี้อที่ที่เราจองไว้ให้ snapshot filesystem นี้ครับระบุหน่วยด้วยได้ เช่น 500m หรือ 1G
snapshot_dev_name เป็นชื่อของ device ที่เราจะสร้างครับ ระบุชื่ออย่างเดียว ไม่ต้องระบุเป็น full pathname (ขึ้นต้นด้วย /dev/...) ก็ได้ครับ
original_lv_dev_name เป็นชื่อของ Logical Volume ตัวต้นแบบที่เราจะทำ snapshot อันนี้ต้องระบุชื่อ device แบบเต็ม (ขึ้นต้นด้วย /dev) ครับ
จากตัวอย่างในรูป ผมสร้าง snapshot ที่ชื่อ zimbra_snap จาก Logical Volume /dev/mapper/vol2-lvol0 (หรืออีกชื่อก็คือ /dev/vol2/lvol0) ผมจะได้ snapshot device ที่ชื่อ /dev/vol2/zimbra_snap
จากนั้น เราจะได้ snapshot device อยู่ใน volume group เดียวกันกับตัวต้นแบบครับ เราสามารถ mount และ backup ได้เลย โดยใช้คำสั่ง mount อยาลืมสร้าง directory ที่จะเป็น mount point กันก่อนนะครับ
หลังจากที่ backup เสร็จ เรียบร้อย เราต้องลบ snapshot logical volume นี้ทิ้งเสียครับ จะได้ไม่เปลืองเนื้อที่ โดย unmount ก่อน และใช้คำสั่ง lvremove ซึ่งมีรูปแบบตามนี้ครับ
lvremove snapshot_full_pathname
snapshot_full_pathname เป็นชื่อเต็มของ snapshot logical volume ครับ (/dev/....)
เท่านี้ก็เป็นอันเสร็จสิ้นครับ
แบ่งปันประสบการณ์ การติดตั้ง ใช้งาน แก้ปัญหา เทคนิคต่างๆ ของ Zimbra open source
สำหรับผู้ที่มีคำถาม สามารถถาม ได้ที่ ThaiZimbra Facebook ได้เลยครับ
วันศุกร์ที่ 9 สิงหาคม พ.ศ. 2556
วันจันทร์ที่ 29 กรกฎาคม พ.ศ. 2556
setup filesystemที่สร้างใหม่ ให้ mount อัตโนมัติ
ในครั้งที่แล้ว ผมได้พูดถึงวิธีการสร้าง filesystem จาก Logical Volume เหลืออีกขั้นตอนหนึ่งคือการกำหนดให้ filesystem ที่เราสร้าง mount อัตโนมัติทุกครั้งที่เครื่อง boot
วิธีการง่ายๆ ครับ คือเพิ่มบรรทัดในไฟล์ /etc/fstab ไฟล์นี้ จะเป็นที่เก็บข้อมูลที่ช่วยในเราในการ mount filesystem เข้า file structure ครับ โดย แต่ละบรรทัดใน /etc/fstab จะมีรูปแบบดังนี้ครับ
block_device mount_point filesystem_type mount_options fs_dump check_on_boot
block_device : เป็นชื่อ device ที่จะทำการ mount
mount_point : directory ที่จะ mount filsystem
filesystem_type : ชนิดของ filesystem (ต้องตรงกับ ชนิดของ block_device)
mount_options : option ของการ mount ถ้ามี option หลายตัวใช้ "," คั่นแต่ละ option ปกติเรากำหนดให้เป็น defaults
fs_dump : เป็นการระบุว่า ให้คำสั่ง dump ทำการเก็บข้อมูลของ filesystem นี้ไว้(โดยใช้คำสั่ง dump) หรือเปล่า field นี้เป็นปัจจุบันนี้ field นี้ไม่ได้ใช้แล้วครับ แต่เราต้องระบุค่าไว้
check_on_boot : เป็นการบอกลำดับของการตรวจสอบ filesystem นี้ขณะที่มีการ boot (โดยใช้คำสั่ง fsck ) ปกติ สำหรับ filesystem ทั่วไป ค่าจะเป็น 2 ยกเว้น root filesystem (mount ที่ / ) ค่าจะเป็น 1 ครับ ส่วน filesystem ที่ไม่ต้องการใช้ ตรวจสอบ ค่าจะเป็น 0
จากตัวอย่างในครั้งที่แล้ว ผมจะเพิ่มบรรทัดนี้เข้าไปใน /etc/fstab
/dev/vol2/lvol0 /opt/zimbra ext4 defaults 1 2
เป็นการบอก Linux ว่า ให้ mount /dev/vol2/lvol0 ซึ่งเป็น filesystem ชนิด ext4 ไปที่ /opt/zimbra โดยใช้ default mount option ของ ext4 ครับ ส่วนสอง field สุดท้าย ระบุเป็น 1 กับ 2 ไป
อีกอย่างนึงครับ เวลาเราจะ mount filesystem ไปที่ directory ไหน หรือที่ภาษา *nix (พวก Unix และ linux) เรียกว่า mount point ต้องดูให้ดีนะครับว่า directory นั้นต้องมีอยู่ ถ้าไม่มี ก็จัดการสร้าง directory นั้นซะ
หลังจากเพิ่มบรรทัดนี้ ทดสอบการ mount โดยใช้คำสั่ง mount -a (mount all) หรือ reboot เครื่อง ก็ได้ครับ จะเห็น filesystem ที่เราเพิ่งเพิ่มเข้าไปถูก mount โดยอัตโนมัติ
หลังจากพูดปูพื้นฐานมาซะหลายตอน ครั้งหน้าผมจะพูดถึงวิธีการทำ snapshot logical volume เพื่อ backup zimbra กันนะครับ
วิธีการง่ายๆ ครับ คือเพิ่มบรรทัดในไฟล์ /etc/fstab ไฟล์นี้ จะเป็นที่เก็บข้อมูลที่ช่วยในเราในการ mount filesystem เข้า file structure ครับ โดย แต่ละบรรทัดใน /etc/fstab จะมีรูปแบบดังนี้ครับ
block_device mount_point filesystem_type mount_options fs_dump check_on_boot
block_device : เป็นชื่อ device ที่จะทำการ mount
mount_point : directory ที่จะ mount filsystem
filesystem_type : ชนิดของ filesystem (ต้องตรงกับ ชนิดของ block_device)
mount_options : option ของการ mount ถ้ามี option หลายตัวใช้ "," คั่นแต่ละ option ปกติเรากำหนดให้เป็น defaults
fs_dump : เป็นการระบุว่า ให้คำสั่ง dump ทำการเก็บข้อมูลของ filesystem นี้ไว้(โดยใช้คำสั่ง dump) หรือเปล่า field นี้เป็นปัจจุบันนี้ field นี้ไม่ได้ใช้แล้วครับ แต่เราต้องระบุค่าไว้
check_on_boot : เป็นการบอกลำดับของการตรวจสอบ filesystem นี้ขณะที่มีการ boot (โดยใช้คำสั่ง fsck ) ปกติ สำหรับ filesystem ทั่วไป ค่าจะเป็น 2 ยกเว้น root filesystem (mount ที่ / ) ค่าจะเป็น 1 ครับ ส่วน filesystem ที่ไม่ต้องการใช้ ตรวจสอบ ค่าจะเป็น 0
จากตัวอย่างในครั้งที่แล้ว ผมจะเพิ่มบรรทัดนี้เข้าไปใน /etc/fstab
/dev/vol2/lvol0 /opt/zimbra ext4 defaults 1 2
เป็นการบอก Linux ว่า ให้ mount /dev/vol2/lvol0 ซึ่งเป็น filesystem ชนิด ext4 ไปที่ /opt/zimbra โดยใช้ default mount option ของ ext4 ครับ ส่วนสอง field สุดท้าย ระบุเป็น 1 กับ 2 ไป
อีกอย่างนึงครับ เวลาเราจะ mount filesystem ไปที่ directory ไหน หรือที่ภาษา *nix (พวก Unix และ linux) เรียกว่า mount point ต้องดูให้ดีนะครับว่า directory นั้นต้องมีอยู่ ถ้าไม่มี ก็จัดการสร้าง directory นั้นซะ
หลังจากเพิ่มบรรทัดนี้ ทดสอบการ mount โดยใช้คำสั่ง mount -a (mount all) หรือ reboot เครื่อง ก็ได้ครับ จะเห็น filesystem ที่เราเพิ่งเพิ่มเข้าไปถูก mount โดยอัตโนมัติ
หลังจากพูดปูพื้นฐานมาซะหลายตอน ครั้งหน้าผมจะพูดถึงวิธีการทำ snapshot logical volume เพื่อ backup zimbra กันนะครับ
วันอังคารที่ 16 กรกฎาคม พ.ศ. 2556
การนำ Logical Volume มาสร้างเป็น filesystem
จากตอนที่แล้ว เราได้ Logical Volume ที่พร้อมจะนำสร้างเป็น filesystem และ ไปใช้งานแล้วครับ
แต่ก่อนอื่น เราจะต้องนำ Logical Volume ที่ได้นี้ มาสร้างเป็น filesystem กันก่อนครับ วิธีการจะเหมือนกับการสร้าง filesystem จาก disk partition ทั้วไปครับ เราใช้คำสั่ง mkfs ซึ่งมีรูปแบบดังนี้ครับ
mkfs -t fs_type partition_name
fs_type คือ ชนิดของ filesystem โดยปกติ จะเป็น ext3 หรือ ext4 ใน Linux รุ่นใหม่ๆ จะใช้เป็น ext4 ครับ
partition_name คือ ชื่อของ disk partition ที่เรากำลังจะสร้างเป็น filesystem ในกรณีของเรา ก็คือชื่อของ Logical Volume โดยเราต้องระบบแบบเต็มคือขึ้นต้นด้วย /dev นะครับ โดยปกติ เป็น /dev/pv_name/lv_name
pv_name จะเป็นชื่อของ physical volume ที่ logical volume นั้นอยู่ ส่วน lv_name เป็น ชื่อของ logical volume ดังนั้นจากบทความที่แล้ว ชื่อของ disk partition จะเป็น /dev/vol2/lvol0
เมื่อ run คำสั่ง mkfs ถ้าไม่ติดอะไร จะได้ผลลัพท์คือ filesystem ที่สามารถนำไป mount (เชื่อมต่อ) เข้ากับ directory system ได้เลย จากตัวอย่างในรูป ผมสร้าง filesystem ชนิด ext4 บน /dev/vol2/lvol0 เสร็จแล้ว mount ไปที่ /opt/zimbra ครับ
รูป แบบของคำสั่ง mount คือ
mount device_name mount_point_dir
หลังจากที่เรา mount เสร้จ ต่อจากนี้ถ้าเรามีการสร้างไฟล์หรือ directory ภายใต้ mount_point_dir จะเป็นการใช้เนื้อที่บน device ที่เราเพิ่งทำการ mount เข้าไปนะครับ
แต่อย่างไรก็ตาม การ mount แบบนี้ ถ้าเครื่องมีการ reboot filesystem ที่เรา mount แบบนี้ จะไม่ถูก mount (แต่ยังอยู่) จะให้ mount อัตโนมัติเวลา boot เครื่อง จะมีขั้นตอนเพิ่มเติม ว่ากันในครั้งหน้าครับ
แต่ก่อนอื่น เราจะต้องนำ Logical Volume ที่ได้นี้ มาสร้างเป็น filesystem กันก่อนครับ วิธีการจะเหมือนกับการสร้าง filesystem จาก disk partition ทั้วไปครับ เราใช้คำสั่ง mkfs ซึ่งมีรูปแบบดังนี้ครับ
mkfs -t fs_type partition_name
fs_type คือ ชนิดของ filesystem โดยปกติ จะเป็น ext3 หรือ ext4 ใน Linux รุ่นใหม่ๆ จะใช้เป็น ext4 ครับ
partition_name คือ ชื่อของ disk partition ที่เรากำลังจะสร้างเป็น filesystem ในกรณีของเรา ก็คือชื่อของ Logical Volume โดยเราต้องระบบแบบเต็มคือขึ้นต้นด้วย /dev นะครับ โดยปกติ เป็น /dev/pv_name/lv_name
pv_name จะเป็นชื่อของ physical volume ที่ logical volume นั้นอยู่ ส่วน lv_name เป็น ชื่อของ logical volume ดังนั้นจากบทความที่แล้ว ชื่อของ disk partition จะเป็น /dev/vol2/lvol0
เมื่อ run คำสั่ง mkfs ถ้าไม่ติดอะไร จะได้ผลลัพท์คือ filesystem ที่สามารถนำไป mount (เชื่อมต่อ) เข้ากับ directory system ได้เลย จากตัวอย่างในรูป ผมสร้าง filesystem ชนิด ext4 บน /dev/vol2/lvol0 เสร็จแล้ว mount ไปที่ /opt/zimbra ครับ
รูป แบบของคำสั่ง mount คือ
mount device_name mount_point_dir
หลังจากที่เรา mount เสร้จ ต่อจากนี้ถ้าเรามีการสร้างไฟล์หรือ directory ภายใต้ mount_point_dir จะเป็นการใช้เนื้อที่บน device ที่เราเพิ่งทำการ mount เข้าไปนะครับ
แต่อย่างไรก็ตาม การ mount แบบนี้ ถ้าเครื่องมีการ reboot filesystem ที่เรา mount แบบนี้ จะไม่ถูก mount (แต่ยังอยู่) จะให้ mount อัตโนมัติเวลา boot เครื่อง จะมีขั้นตอนเพิ่มเติม ว่ากันในครั้งหน้าครับ
วันอาทิตย์ที่ 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 ได้แล้วครับ
จากตัวอย่าง ผมมี 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 กันครับ
หลังจากที่เรียกใช้ fdisk แล้ว ถ้าเป็น disk ที่ไม่เคยมี partition อยุ่ก่อน คำสั่งนี้จะแสดง warning message ขึ้นมา ไม่ต้องสนใจก็ได้ครับ ต่อจากนั้น fdisk จะขึ้นบรรทัด prompt มาให้เราป้อนคำสั่ง
Command (m for help) :
fdisk จะขึ้น prompt ให้เราป้อนคำสั่งถัดไป
ถึงตรงนี้ ถ้าเราอยากดูกว่า fdisk เตรียมจะสร้าง partition อะไรให้เราบ้าง เราสามารถกด p (print) เพื่อสั่งให้ fdisk พิมพ์ออกมาให้เราดู ในกรณีที่เรากำหนด partition ให้กับ disk ว่างๆ ในตอนแรก ถ้าถึงขั้นตอนนี้เราจะเป็น /dev/sdb1
ขั้นตอนต่อมาคือ การกำหนด partition system id หรือชนิดของ system partition ซึ่งเราต้องกด t (type)
partition ที่เราสร้างได้ จะชื่อเหมือนกับ disk ครับ แล้วตามด้วยตัวเลข partition number ที่เราระบุตอนสร้าง เช่นในกรณีนี้เราสร้าง partition บน /dev/sdb disk เราจะได้ partition ชื่อ /dev/sdb1 ครับ เอา partition นี้ไปทำอย่างอื่นต่อได้เลยครับ
หลายๆ ท่านคงจะพอทราบแล้วว่า คำสั่งทั่วไปที่ใช้ในการสร้าง 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 จะขึ้น 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 ไว้นะครับ
สิ่งแรกที่ต้องทำ คือเราต้องเตรียมหรือจัดหา 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 ครับ
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 ครับ
สมัครสมาชิก:
บทความ (Atom)







