วันศุกร์ที่ 9 สิงหาคม พ.ศ. 2556

สร้าง lvm snapshort

หลังจากที่เราได้เรียนรู้การสร้าง  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/....)



เท่านี้ก็เป็นอันเสร็จสิ้นครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น