Home | Back
LVM ใน Debian
Thursday, 11 September 2008
LVM เป็นระบบพาติชั่นแบบ logical ซึ่งมีความสามารถในการลดขนาดหรือเพิ่มขนาดของพาติชั่น ได้อย่างง่ายดาย และที่สำคัญเราสามารถนำฮาร์ดดิสก์หลาย ๆ ก้อนมาต่อกันแล้วสร้างเป็นพาติชั่น เดียวกันได้ ทำให้การใช้งานและการบริหารพื้นที่เก็บข้อมูลของเครื่อง server มีความคล่องตัวและ ยืดหยุ่นมาก เอาล่ะเรามาดูกันนะครับว่า เราต้องทำอย่างไรบ้าง ข้อมูลทั้งหมดผมเอามาจากลิ้งค์ ข้างล่างนี้นะครับ ถ้าใครเก่งภาษาอังกฤษก็สามารถอ่านเพิ่มเติมเองได้นะครับ :)
http://www.tldp.org/HOWTO/LVM-HOWTO/index.html
เริ่มแรกสำหรับ debian เราต้องลง package ของ LVM2 ก่อนดังนี้ครับ
$ aptitude install lvm2
ต่อมาเราจะสร้างพาติชั่นเรามาดูองค์ประกอบของ LVM กันก่อนนะครับว่ามีอะไรบ้าง โดยสิ่งแรก ที่เราต้องรู้จักคือ Physical volume (PV) ซึ่งหมายถึง ตัวพื้นที่ที่เป็นฮาร์ดแวร์ เช่น ฮาร์ดดิสก์ หรือพาติชั่นจริง ๆ ในฮาร์ดดิสก์ โดยเราจะมีคำสั่งในการกำหนด pv ขึ้นในระบบด้วยคำสั่งดังนี้
$ pvcreate /dev/hdb1 $ pvcreate /dev/hdb2
จากคำสั่งข้างต้นจะเป็นการกำหนดพาติชั่น hdb1 และ hdb2 ให้เป็น pv เราสามารถดูว่าในระบบ ของเราได้มีการกำหนด pv ไว้แล้วหรืออย่างไร เราสามารถดู pv ในระบบได้ด้วยคำสั่ง
$ pvdisplay
หลังจากนั้นเราก็ต้องสร้าง Volume group (VG) โดยถ้าเราจะเปรียบเทียบกัน vg ก็เป็นดิสก์ จำลองนั่นเอง โดยเราสร้างดิสก์จำลองโดยเอาพื้นที่จาก pv ที่เราได้กำหนดไว้แล้ว โดยการสร้าง vg นั้นเราสามารถสร้างได้ดังนี้
$ vgcreate myvol /dev/hdb1 /dev/hdb2
จากคำสั่งข้างต้นจะเป็นการสร้าง vg ที่ชื่อ myvol โดยใช้พื้นที่จาก hdb1 และ hdb2 นั่นเอง ซึ่งเราสามารถดู vg ที่ถูกสร้างในระบบได้ด้วยคำสั่ง
$ vgdisplay
หลังจากนั้นเราก็ต้องทำการ activate vg ที่เราสร้างขึ้นได้คำสั่ง
$ vgchange -a y myvol
ในกรณีที่เราต้องการเพิ่ม pv เข้าใน vg ที่เราได้สร้างไว้ก่อนแล้ว เราสามารถทำได้ด้วยคำสั่ง
$ vgextend myvol /dev/hdb3
จากคำสั่งข้างต้นเป็นการนำ pv ที่กำหนดจาก hdb3 มาเพิ่มเข้าไปใน vg ที่ชื่อ myvol นั่นเอง และถ้าหากเราต้องการนำ pv ที่กำหนดไว้ใน vg แล้วนั้นออกจาก vg นั้น ๆ เราสามารถ ทำได้ด้วยคำสั่ง
$ vgreduce myvol /dev/hdb3
จากคำสั่งข้างต้นจะเป็นการนำ pv ที่กำหนดจาก /dev/hdb3 ออกจาก vg ที่ชื่อ myvol จะเห็นว่า เราสามารถปรับเพิ่มหรือลดขนาดของดิสก์จำลองของเราได้ง่ายดายโดยการนำ pv เข้าหรือออก จาก vg ได้ตลอด แต่ในทางปฏิบัติการนำ pv เข้า vg จะไม่มีปัญหาอะไรแต่ในกรณีที่นำ pv ออก จาก vg นั้น จริง ๆ จะมีขั้นตอนที่ต้องทำมากกว่านี้ ซึ่งเราจะมาดูกันภายหลัง และเมื่อเราต้องการ ลบ vg ออกจากระบบเราทำได้ โดยการ Deactivate vg นั้นก่อนด้วยคำสั่ง vgchange หลังจาก นั้นก็ลบ vg ด้วยคำสั่ง vgremove ดังนี้
$ vgchange -a n myvol $ vgremove myvol
หลังจากที่เราได้สร้าง vg แล้ว ขั้นตอนต่อมาก็คือการสร้าง Logical volume (LV) จาก vg ซึ่งเรา จะเปรียบเทียบได้คือ lv ก็คือพาติชั่นที่อยู่ใน vg หรือดิสก์จำลองนั่นเอง โดยเราสามารถสร้าง lv ได้ดังนี้
$ lvcreate -L1500 -npar1 myvol
จากคำสั่งข้างต้นจะเป็นการสร้าง lv ขนาด 1500Mb และมีชื่อ lv คือ par1 และสร้างจาก vg ที่ชื่อ myvol นั่นเอง โดยเราจะได้พาติชั่นใหม่ในชื่อ /dev/myvol/par1 นั่นเอง ที่เหลือเรา ก็ทำการ format พาติชั่นด้วยคำสั่ง mkfs.ext3 และ mount พาติชั่น lv นี้ด้วยคำสั่ง mount ดังนี้
$ mkfs.ext3 /dev/myvol/par1 $ mount /dev/myvol/par1 /data
ในกรณีที่ต้องการลบ lv ออก เราทำได้โดยการ umount ก่อนหลังจากก็ลบ lv ด้วย lvremove
$ umount /dev/myvol/par1 $ lvremove /dev/myvol/par1
เอาล่ะ….เราได้รู้ถึงคำสั่งพื้นฐานในการทำ LVM แล้วนะครับ โดยเริ่มจากการกำหนด pv หลังจากนั้นก็สร้าง vg และ lv ทีนี้เรามาดูในส่วนของการจัดการในเรื่องของการเพิ่มขนาด lv และลดขนาดของ lv กันนะครับ เรามาเริ่มที่การเพิ่มขนาดของ lv กันก่อนนะครับ ในการเพิ่มขนาดของ lv ที่มีการใช้งานอยู่แล้วนั้น เราสามารถเพิ่มได้โดยเราต้องเพิ่ม pv ใน vg ก่อน จากนั้นเราก็ใช้คำสั่ง lvextend ในการเพิ่มขนาดของ lv จากนั้นจึงปรับขนาด ของ file system ดังนี้ครับ
$ pvcreate /dev/hdb3 ;กำหนด pv ตัวใหม่เข้ามา $ vgextend myvol /dev/hdb3 ;นำ pv เข้าสู่ vg ที่ชื่อ myvol $ lvextend -L+1G /dev/myvol/par1 ;ขยายขนาดของ lv ที่ชื่อ par1 ที่อยู่ใน vg ที่ชื่อ myvol เพิ่มอีก 1Gb $ umount /dev/myvol/par1 ;ทำการ umount lv ออกจากระบบ $ resize2fs /dev/myvol/par1 ;ปรับขนาดของ file system $ mount /dev/myvol/par1 /data ;ทำการ mount lv เข้าสู่ระบบ
ส่วนในการลดขนาดของ lv นั้นค่อนข้างอันตรายกว่าเพราะข้อมูลอาจจะมีการเสียหายได้ จึงควรทำการสำรองข้อมูลก่อนนะครับ โดยขั้นตอนคือ umount lv นั้นออกจากระบบก่อน จากนั้นจึงทำการปรับขนาดของ file system สุดท้ายจึงลดขนาดของ lv ด้วย lvreduce
$ umount /dev/myvol/par1 ;umount lv ออกจากระบบ $ resize2fs /dev/myvol/par1 524288 ;ลดขนาดของ filesystem ตามจำนวน block $ lvreduce -L-1G /dev/myvol/par1 ;ลดขนาดของ lv $ mount /dev/myvol/par1 /data ;mount lv เข้าสู่ระบบ
เท่านี้เราก็สามารถลดขนาดของ lv ได้แล้วครับ ส่วน config ทั้งหมดของ lvm จะอยู่ใน
/etc/lvm
บางครั้งเวลาเครื่องมีการ reboot ใหม่หรือเกิดเหตุขัดข้องทำให้ lvm partition หายไปเรา อาจจะกู้กลับมาได้ด้วยคำสั่งดังนี้
$ pvscan $ vgscan $ lvscan
ทั้งหมดนี้เป็นเพียงข้อมูลสำหรับการเริ่มต้นใช้งาน lvm นะครับ ก่อนจะใช้งานจริง ขอให้ทำการ ศึกษาทดลองให้เข้าใจอย่างถ่องแท้ก่อนนะครับ เพราะการใช้งาน lvm อาจจะมีข้อผิดพลาด ที่อ่อนไหวอยู่เหมือนกัน และข้อมูลของเราก็มีความสำคัญ ขอให้สนุกกับ lvm นะครับ :)