ทำไมถึงต้อง Migration ? ที่ต้องนำคำถามนี้มาใส่ที่ตรงนี้เพราะ ตอนที่ได้เลือกทำ Assignment ข้อนี้มีคนถามว่าจะทำไปเพื่ออะไร และการ Migrate มีประโยชน์อย่างไร ? นี่ก็เป็นเหตุผลที่ต้องนำมากล่าวถึงสักหน่อยก่อนเข้าสู่กระบวนการทำ Migration ในส่วนของการทำ Migration นี้ เป็นการทำ Live Migration
โดย ทั่วไปแล้วบริษัทที่ทำธุรกิจ Hosting หรือที่เราเช่าพื้นที่เพื่อวางเวปไซด์ของเราโดยทั่วไปเขาไม่ได้ให้เราใช้แบบ 1 คนต่อ 1 เครื่องหรอกครับ เพราะ บาง Host เขาคิดค่าเช่าปีละ 2,000 บวก ลบ คูณ หาร ยังไงก็คงไม่คุ้มกับค่า Server ที่เขาซื้อมาลงระบบ ซึ่งในความเป็นจริงในการทำธุรกิจเหล่านี้เขาจะนำเอา Virtual Machine มาใช้ ซึ่งอธิบายคร่าวๆ ก็คือ เป็นการจำลองให้มีเครื่องหลายๆ เครื่อง ทำงาน อยู่บน Server เครื่องเดียว ซึ่งก็มีโปรแกรมหลายตัวที่สามารถทำ Virtual Machine ได้ ซึ่งในที่นี้เราจะใช้โปรแกรมที่มีชื่อว่า KVM (Kernel-Base Virtual Machine) ซึ่งทำงานบน Ubuntu
เมื่อมี Virtual Machine หลายๆ ตัวทำงานอยู่บนเครื่องๆ เดียวในบางครั้งทางบริษัทอาจต้องการเปลี่ยนเครื่อง Server ใหม่ หรือ ย้าย Virtual Machine ของลูกค้าบางคนให้ไป Run บนเครื่องอีกเครื่องหนึ่ง ซึ่งแน่นอน ถ้าเป็นการที่เราต้องย้ายเครื่องจริงๆ เราต้องมาติดตั้ง OS และโปรแกรมใหม่ก่อนแล้วก็ Copy ข้อมูลของลูกค้ามาใส่เครื่องใหม่ แต่สำหรับการ Migration ไม่ใช่แบบนั้นมันเป็นการย้ายเอา Virtual Machine ทั้งเครื่องไปใส่ใน Server ตัวใหม่เลย ซึ่งการทำ Live Migration ก็หมายถึงการย้าย Virtual Machine ขณะที่ Virtual Machine ตัวนั้นกำลังทำงานอยู่ รูปด้านล่าง คือ รูปแสดงการทำงานของการ Migration
เริ่มต้นด้วยการติดตั้ง Guset OS ลงบน KVM
ก่อนที่จะมาทำการ Migrate ขอให้ท่านสามารถศึกษาวิธีการใช้งาน KVM ที่ https://help.ubuntu.com/community/KVM จากนี้จะอธิบายขั้นตอนการทำ Live Migration โดยละเอียด เป็น Step
1. หลังจากที่ติดตั้ง Ubuntu เสร็จเรียบร้อยแล้วให้เปิด Terminal ขึ้นมาแล้วลองตรวจสอบว่าในเครื่องของเราได้ติดตั้ง KVM ไว้หรือยังโดยพิมพ์ Command
$ kvm
The Program 'kvm' is currents not installed. You can install it by type: sudo apt-get install kvm
bash: kvm: command not found
2. จากรูปจะเห็นว่า KVM ยังไม่ได้ถูกติดตั้งเราทำการติดตั้งโดยพิมพ์ Command ดังรูปด้านล่างเพื่อ Install KVM
$ sudo apt-get install kvm qemu
3. ในกรณีที่เราจะลง OS(ในตัวอย่างจะติดตั้ง WindowsXP) บน Virtual Machine เราต้องมีไฟล์ ISO Image ก่อนหากไม่มีให้ใส่แผ่นติดตั้งในช่อง CD หรือ DVD แล้วสั่งสร้าง ISO Image
$ dd if=/dev/cdrom of=/home/tong/vm/xp.iso
of = ให้ระบุ PATH และชื่อไฟล์ .ISO ที่เราต้องการจะ Save
4. เมื่อเราได้ ISO Image มาแล้วก็เริ่มทำการสร้าง Disk Image สำหรับติดตั้ง WindowsXP
$ qemu-img create -f qcow xp_hosp.img 5G
(ตัวอย่าง)
5. ติดตั้ง WindowsXP จากไฟล์ ISO ที่เราสร้างขึ้นมา
$ kvm -m 512 -cdrom /home/tong/vm/xp.iso -boot d /home/tong/vm/xp_host.img
-m 512 หมายถึง ขอใช้ Memory 512K
Live Migartion บนเครื่องเดียวกัน
ใน ขั้นตอนของการ Live Migration นั้นไม่ว่าจะเป็นการ Migrate บนเครื่องเดียวกัน หรือ ข้ามเครื่อง ก็จะใช้หลักการเหมือนๆกันแตกต่างกันเพียงหากจะ Migrate ข้ามเครื่องนั้นต้องทำการติดตั้ง NFS (Network File System) ก่อนซึ่งจะกล่าวถึงในหัวข้อ Live Migration ข้ามเครื่อง หากยังไม่เข้าใจว่าทำไมต้องทำ Live Migration แค่เรา Copy Image Disk ไปวางอีกเครื่องหนึ่งแล้ว Run Virtual Machine ขึ้นมาก็น่าจะ OK แล้ว แต่ในความเป็นจริงให้ลองนึกถึงหากเราเป็นเจ้าของเวปไซด์ที่มีคนเข้าชมตลอด ทั้งวัน แล้ววันหนึ่งต้องย้าย Virtual Machine ที่บรรจุเวปไซด์ของเราจากกรุงเทพฯ ไปวางบน Server ที่เชียงใหม่ อยากให้ท่านลองจิตนาการดูว่าเราต้องใช้เวลาปิดบริการนานเท่าใด แล้วถ้าเวปไซด์นั้นเป็นเรื่องที่เกี่ยวกับเรื่องของเงินๆทองๆ เช่น เวปการจองตั๋วเครื่องบิน หรือ เวปซื้อขายหุ้น ซึ่งเวลาแต่ละวินาทีเป็นเรื่องเงินๆทองๆทั้งนั้น
ดังนั้น Live Migration จึงเป็นวิธี Migrate ที่นำมาใช้เพื่อลดเวลาในการที่เราต้องปิดบริการ Server ให้น้อยที่สุด ซึ่งในการ Live Migrate นั้นเป็นการ Migrate ขณะที่ Virtual Machine กำลังทำงานอยู่ซึ่งจะมี Down Time ที่ต่ำมาก ในการทดสอบในครั้งนี้เราจะสมมติเหตุการณ์ขึ้นมาดังนี้
– xp_host.img คือ Virtual Machine ที่เป็น Server ตัวเดิม (OS คือ WindowsXP)
– xp_agent.img คือ Virtual Machine ที่เราต้องการจะ Migrate ไป (ในการ Migrate Virtual Machine ปลายทางต้องเป็น OS ตัวเดียวกันกล่าวคือเราต้อง Copy Disk Image ตัวเดิมไปวางไว้ที่ใหม่ก่อนโดยที่ตัวเก่ายังคงเปิดทำงานอยู่สมมติว่าต้อง เปิดให้บริการตลอดเวลา)
– ในการ Migrate บนเครื่องเดียวกันนี้จะ Copy ไฟล์ xp_host.img ออกมาอีก 1 ไฟล์ แล้วเปลี่ยนชื่อเป็น xp_agent.img (ในการ Migrate ข้ามเครื่องอาจไม่จำเป็นต้องเปลี่ยนชื่อไฟล์ก็ได้แต่ในที่นี้จะเปลี่ยนชื่อ เพื่อไม่ให้เกิดความสับสน)
– ใน WindowsXP ของ Virtual Machine ทั้ง 2 เครื่องจะไม่มีไฟล์ชื่อ Test.txt ที่ Desktop
– เราจะเปิด xp_agent.img ขึ้นมาเพื่อรอการ Migrate
– จากนั้นจะเปิด xp_host.img ขึ้นมาแล้วสร้างไฟล์ชื่อ Test.txt ขึ้นมาที่ Desktop
– ทำการ Live Migration
– ทดสอบดูว่าใน xp_agent.img ไฟล์ Test.txt ถูก Migrate มาหรือไม่ สามารถเปิดดูไฟล์ได้หรือไม่ และ เมื่อ Stop Virtual Machine ไปแล้วเปิดขึ้นมาใหม่ไฟล์ Test.txt ยังคงอยู่หรือไม่
เริ่มการทดสอบ Live Migration
1. Terminal ใหม่ขึ้นมา Run KVM เรียก xp_host.img ขึ้นมา
$ kvm -m 512 -hda xp_host.img
2. Copy ไฟล์ xp_host.img อีก 1 Copy แล้วเปลี่ยนชื่อเป็น xp_agent.img
3. Run KVM เรียก xp_agent.img ขึ้นมารอการ Migrate
$ kvm -m 512 -hda xp_agent.img -incoming tcp://0:5678
-incoming tcp://0:5678 หมายถึง ให้ Viturl Machine ของ xp_agent รอการ Migrate ที่ Port 5678
ติดตามตอนต่อไป