Home | Back


การใช้ qemu เพื่อทำ Virtualization บนระบบ Ubuntu 13.04

Saturday, 13 July 2013



ปัจจุบันเทคโนโลยี Virtualization นิยมนำมาใช้กันมากเพราะสามารถช่วยประหยัดทรัพยากรต่าง ๆ และง่ายต่อการบริหารจัดการ โดยเฉพาะในเรื่องของการพัฒนาระบบเครื่องแม่ข่ายต่าง ๆ ซึ่งในการพัฒนาระบบ Cloud นั้น ระบบ Virtualization จัดเป็นหัวใจสำคัญเลยทีเดียว ในระบบ Ubuntu 13.04 เราสามารถใช้ qemu เพื่อสร้าง Virtual Computer ได้ง่าย ๆ ดังนี้

1. ลง package ที่เกี่ยวข้องดังนี้

$ sudo aptitude install qemu-kvm bridge-utils spice-client

โดย qemu-kvm คือตัวระบบ Virtualization ของเรา bridge-utils จะเป็น package สำหรับการสร้าง Bridge Network Interface ให้กับระบบ Virtualization ของเรา และสุดท้าย spice-client จะเป็นโปรแกรมสำหรับทำ remote console เข้าไปยังระบบ Virtualization ของเรานั่นเองครับ

2. สร้าง Bridge Network Interface ให้กับเครื่อง Host

ขั้นตอนต่อไปเราจะสร้าง Bridge Network Interface เพื่อใช้งานแทน eth0 เนื่องจากตัวระบบ Virtualization ของเราจะใช้ bridge เป็น Network Interface สำหรับติดต่อกับโลก Internet โดยเราสามารถแก้ไฟล์ /etc/network/interfaces เพื่อใช้ bridge ในกรณีที่ใช้ dhcp ได้ดังนี้

File : /etc/network/interfaces

auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
  bridge_ports eth0

จากตัวอย่างเป็นการนำ eth0 มาทำเป็น bridge ที่ชื่อ br0 และรับ config เครือข่ายทาง dhcp นั่นเอง แต่หากเราต้องการทำ static ip ทำได้ดังนี้ครับ

File : /etc/network/interfaces

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
  address 172.16.9.10
  network 172.16.9.0
  netmask 255.255.255.0
  gateway 172.16.9.254
  dns-nameservers 8.8.8.8
  dns-nameservers 8.8.4.4
  dns-search example.com
  bridge_ports eth0

จากนั้นทำการ restart ระบบ network ใหม่ดังนี้ครับ

$ sudo service networking restart

3. สร้างไฟล์สำหรับจำลองเป็น harddisk ของระบบ Virtualization

ต่อไปเราจะทำการสร้างไฟล์เพื่อจำลองเป็น harddisk สำหรับใช้งานในระบบ Virtualization ของเราโดยสมมุติว่าเราจะสร้างไฟล์ไว้ในโฟลเดอร์ /home/moo/virtual เราสามารถสร้างไฟล์จำลองได้ด้วยคำสั่ง qemu-img โดยผมจะทำการสร้างไฟล์ขนาด 10G โดยจะตั้งชื่อว่า hd1.img ผมจะสร้างได้ดังนี้ครับ

$ cd /home/moo/virtual
$ qemu-img create hd1.img 10G
Formatting 'hd1.img', fmt=raw size=10737418240

4. รันระบบ Virtualization เพื่อติดตั้ง OS

จากนั้นเราจะรันระบบ Virtualization ของเรา เพื่อทำการติดตั้ง OS โดยสมมุติว่าผมได้ดาวน์โหลดไฟล์ Ubuntu server 13.04 มาแล้วและอยู่ในโฟล์เดอร์เดียวกัน ผมจะสามารถรันระบบเพื่อติดตั้ง OS ได้ดังนี้ครับ

$ sudo qemu-system-x86_64 -enable-kvm -hda hd1.img -cdrom ubuntu-13.04-server-amd64.iso -m 512M -vga qxl -boot d -spice port=5900,addr=0.0.0.0,password=moo -net nic,macaddr="0a:00:00:00:0a:01" -net tap -smp 2 -usbdevice tablet

เราจะใช้คำสั่ง qemu-system-x86_64 เพื่อรันระบบ Virtualization เนื่องจาก Host ของผมเป็น Ubuntu รุ่น 64 บิต แต่หากใช้ OS รุ่น 32 บิต ก็ให้ใช้คำสั่ง qemu-system-i386 โดยจะมีการใช้พารามิเตอร์ดังนี้ครับ

-hda hd1.img หมายถึงระบบของเราจะมี harddisk ก้อนแรกที่เป็น hda คือไฟล์จำลองที่ชื่อว่า hd1.img ถ้าหากมี harddisk หลายก้อนก็สามารถใช้ hdb hdc และ hdd ต่อไปได้ครับ

-cdrom ubuntu-13.04-server-amd64.iso จะเป็นการเชื่อมต่อไฟล์ iso ที่เป็นตัวติดตั้ง OS ของเรา ให้เชื่อมต่อเป็น cdrom นั่นเองครับ

-m 512M เป็นการกำหนด RAM ให้กับระบบของเราขนาด 512M นั่นเองครับ

-vga qxl เป็นการกำหนดชนิดของการ์ดจอของระบบเรา ซึ่งหากใช้ remote protocol แบบ spice ที่ผมใช้ก็ควรกำหนดเป็นชนิด qxl ครับ

-boot d เป็นการกำหนดให้มีการบูตระบบจากไดร์ฟ d ซึ่งหมายถึง cdrom หรือไฟล์ติดตั้ง OS ของเรานั่นเอง

-spice port=5900,addr=0.0.0.0,password=moo เป็นการกำหนดการ remote console โดยใช้ spice protocol โดยกำหนดให้เชื่อมต่อที่พอร์ต 5900 รอรับฟังจากทุก address และกำหนดรหัสผ่านคือ moo ครับ

-net nic -net tap กำหนดให้มีระบบ network โดยจะมีการเชื่อมต่อกับภายนอกด้วย bridge ที่เราสร้างขึ้นมาครับ

-smp 2 กำหนดให้ระบบมีจำนวน cpu เท่ากับ 2 ซีพียูครับ โดยในระบบ linux จะอนุญาตให้กำหนดได้สูงสุดแค่ 4 ซีพียูครับ

5. เปิด remote console ด้วย spicec

เมื่อเราทำการรันระบบ Virtualization แล้ว เราจะต้องใช้โปรแกรม remote console เพื่อทำการเปิดดูหน้าจอของระบบ Vitualization ของเรา โดยเราจะเปิด remote console ได้ดังนี้ครับ

$ spicec -h 127.0.0.1 -p 5900 -w moo

เราใช้คำสั่ง spicec เพื่อเปิดหน้า console ขึ้นมา โดยจะมีพารามิเตอร์ดังนี้ครับ

-h 127.0.0.1 เป็นการกำหนด ip ของเครื่องที่เป็น host ให้กับระบบ Virtualization ของเราครับ

-p 5900 เป็นการกำหนดหมายเลขพอร์ตที่ใช้ทำการเชื่อมต่อ

-w moo เป็นการกำหนดรหัสผ่านเพื่อทำการเชื่อมต่อและเปิด console

จากนั้นหน้าจอ console จะปรากฏขึ้นเพื่อให้เราใช้งาน โดยหากเราคลิ๊กเมาส์ที่หน้าจอ console จะเป็นการเข้าไปใช้งาน หากต้องการดึงเมาส์คืนเพื่อกลับมาให้กด shift+F12 หากต้องการให้แสดงผลแบบ Full Screen ให้กด shift+F11 ครับ ที่เหลือก็ทดลองปรับใช้ดูนะครับ :)



Home | Back