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 นะครับ :)



Home | Back