Live Migration
คือ การย้าย Virtual Machine ในขณะที่ Virtual Machine ตัวนั้นๆกำลังทำงานอยู่ ซึ่งมีจุดประสงค์เพื่อที่จะให้ระบบปฏิบัติการที่กำลังทำงานอยู่บน Virtual Machine ตัวนั้นๆสามารถทำงานต่อได้
การ Live Migration บนเครื่องเดียวกัน
1. ติดตั้ง KVM (Kernel virtual machine) ด้วย command line
$ sudo apt-get install kvm libvirt-bin ubuntu-vm-builder qemu bridge-utils
รายละเอียดวิธีติดตั้ง : http://tucs51.exteen.com/installation
2. ติดตั้ง Guest OS
ของผมลงเป็น DSL (Damn Small Linux) 4.4.10
รายละเอียดวิธีติดตั้ง : http://tucs51.exteen.com/install-guest-os
3. หลังจากติดตั้ง Guest OS เสร็จแล้ว ยังไม่ต้องออก
เปิด Root Shell ของ DSL แล้วพิมพ์คำสั่ง cfdisk

จากนั้นให้สร้าง partition ขึ้นใหม่ตามขั้นตอนดังนี้
- เลือก New > เลือก Primary > กำหนดขนาดของ Partition
- เลือก Bootable
- เลือก Write
- เลือก Quit
- ปิด Root Terminal
4. เปิด dsl-hdinstall (อยู่ใน Folder Apps/Tools/)

Enter the target partition: ให้ใส่partitionที่สร้างในขั้นตอนที่ 3 (ของผมใส่ hda1)

Do you wish to support multi-user logins : (ของผมใส่ n)
Use journalized ext3 filesystem : (ของผมใส่ n)
Continue : (ใส่ y)

Proceed to install a boot loader : (ใส่ y)
Use [G]rub MBR or [L]ilo Active Partition : (ของผมใส่ g)

จากนั้น Reboot
ในกรณีที่ ขึ้นข้อความ Fetal : No bootable device ให้ออกจาก Qemu
แล้วเปิด Terminal ใน ubuntu พิมพ์คำสั่ง
$kvm -m 512 -hda /home/nuballza/os.img

5. หลังจากเปิด image file ได้แล้วระบบจะให้ตั้ง password ของ root และ user
6. Copy os.img (Image file) แล้วเปลี่ยนชื่อเป็น agent.img
7. Creat text file ใน os.img เพื่อใช้ทดสอบการ migrate
8. เปิด Terminal ใน ubuntu ขึ้นอีกหน้าต่างแล้วพิมพ์คำสั่ง
$kvm -m 512 -hda /home/nuballza/agent.img -incoming tcp:localhost:5555
*** หมายเลข port สามารถเปลี่ยนได้

จะเห็นว่า image file ที่ run ขึ้นมาใหม่นั้น อยู่ในสถานะ stopped และเปิดport 5555 รออยู่
9. กลับไปที่หน้าต่าง Qemu ตัวแรก ให้กดปุ่ม Ctrl+Alt+2 เพื่อเปลี่ยนเป็น command mode แล้วพิมพ์คำสั่ง
migrate -d tcp:localhost:5555

จะเห็นว่าหน้าต่าง Qemu ตัวแรก เปลี่ยนสถานะเป็นstopped ในขณะเดียวกัน Qemu ตัวที่สอง ก็runขึ้น
แทนตัวแรก สังเกตุได้จาก text file ที่เคยสร้างไว้ที่ตัวแรก
การ Live Migration ข้ามเครื่อง
เครื่องที่ 1 (เครื่องปลายทาง)
1. ติดตั้ง NFS Server เพื่อให้คอมพิวเตอร์ต้นทางสามารถติดต่อเข้าถึงข้อมูลของเครื่องปลายทางได้ โดยใช้
คำสั่ง
$ sudo apt-get install nfs-kernel-server nfs-common portmap
2. ตั้งค่า Portmap เพื่อไม่ให้ bind ไปที่ Loopback address โดยใช้คำสั่ง
$ sudo dpkg-reconfigure portmap

should portmap be bound to the loopback ? : เลือก No
3. Restart การทำงาของ Portmap ด้วยคำสั่ง
$ sudo /etc/init.d/portmap restart
4. สร้าง โฟรเดอร์เพื่อใช้ในการ Migration ในี่นี้สร้างโฟลเดอร์ชื่อ NFS ด้วยคำสั่ง
$ mkdir NFS
5. เปลี่ยน permission ของโฟลเดอร์นั้นเพื่อให้ เครื่องต้นทางสามารถเข้าถึงข้อมูลได้ ด้วยคำสั่ง
$ chmod 777 /home/bugonz/NFS/
6. เปิดไฟล์ exports เพื่อทำการแก้ไขด้วยคำสั่ง
$ sudo nano /etc/exports

ทำการระบุ IP ของเครื่องต้นทาง เพื่ออนุญาติให้เครื่องต้นทางสามารถเข้าถึงไฟล์
ในเครื่องปลายทางได้ โดยเพิ่มข้อความดังนี้
/home/bugonz/NFS 10.0.12.0/255.255.255.0(rw,sync,no_subtree_check,no_root_squash)
**หมายเหตุ
/home/bugonz/NFS คือ ไดเรกทอรี่ที่อนุญาตให้เข้าถึง
10.0.12.0/255.255.255.0 คือ หมายเลข IP address ที่อนุญาตให้เข้าถึงได้ ซึ่งในที่นี้
คือตั้งแต่ 10.0.12.0 ถึง 10.0.2.254
rw คือ อนุญาตให้มีการ read / write ได้
sync คือ ให้รายงานผลเมื่อเขียนไฟล์ลง Disk สำเร็จ
no_root_squash คือ อนุญาตให้ root บน remote node เข้าถึงได้ทุกสิ่ง บน NFS Server
7. สั่งshare ด้วยคำสั่ง
$ sudo exportfs -r
8. Restart การทำงานของ NFS Server เพื่อนำการตั้งค่าใหม่มาใช้งาน ด้วยคำสั่ง
$ sudo /etc/init.d/nfs-kernel-server restart
9. เริ่มการทำงานของเครื่องที่ 1 (เครื่องปลายทาง) และให้หยุดรอ ด้วยคำสั่ง
$ kvm -name HOST -hda /home/bugonz/host.img -boot c -net nic -net user -incoming tcp:0:5555
เครื่องที่ 2 (เรื่องต้นทาง)
1. ติดตั้ง NFS Client ด้วยคำสั่ง
$ sudo apt-get install nfs-client nfs-common portmap
2. สร้าง โฟลเดอร์ ด้วยคำสั่ง
$ mkdir mount
3. เปลี่ยน permission ของโฟลเดอร์นั้น ด้วยคำสั่ง
$ chmod 777 /home/nuballza/mount/
4. Mount โฟลเดอร์ "NFS" (เครื่องปลายทาง) เข้ากับ โฟลเดอร์ "mount" (เครื่องต้นทาง) ด้วยคำสั่ง
$ sudo mount 10.0.2.15:/home/bugonz/NFS /home/bugonz/mount
**หมายเหตุ
10.0.12.15 คือ IP address ของเครื่องปลายทาง
/home/bugonz/NFS คือ ไดเรกทอรี่ของเครื่องปลายทาง
5. เริ่มการทำงานเครื่องที่ 2 (เครื่องต้นทาง) ด้วยคำสั่ง
$ kvm -name SOURCE -hda /home/nuballza/source.img -boot c -net nic -net user
6. สลับเข้าสู่ Command Mode ที่เครื่องที่ 2 (เครื่องต้นทาง) โดยกด Ctrl+Alt+2 แล้วพิมพ์คำสั่ง
migrate -d tcp:10.0.2.15:5555

เมื่อกลับไปดูที่เครื่องที่ 1 (เครื่องปลายทาง) จะได้ผลลัพธ์ดังนี้

edit @ 25 Jul 2009 00:02:56 by BUGONZ
edit @ 25 Jul 2009 00:58:35 by BUGONZ
edit @ 25 Jul 2009 01:00:39 by BUGONZ