มา Setup Debian Xen กัน
สิ่งที่ต้องมี
PC/Server ที่ลง OS Debian Linux
Internet (ไว้ Load Package)
อันดับแรก
Install Linux ให้พร้อมใช้งาน
โดยแนะนำให้ลงบน LVM เพื่อความง่าย ในการจัดการต่าง ๆ
และใช้ Grub ลงไว้ที่ MBR (ใช้อย่างอื่นก็ได้ แต่จะเซตต่างกันนิดหน่อย)
โดยเราจะใช้ เป็น Dom0 คือเป็นแม่ ที่เอาไว้เลี้ยงดูลูก ๆ เฉย ๆ ดังนั้นไม่ควรลง Package อะไรมากมาย แค่มี openssh-server เพื่อให้เรามาสามารถ Remote เข้ามา Maintanance ได้
# aptitude install openssh-server
อันดับที่ 2 ลง Package xen-hypervisor
# aptitude install xen-hypervisor
Debian Package ก็จะทำการ Install Package ต่าง ๆ ที่จำเป็นสำหรับ xen-hypervisor ให้ทั้งหมด
ซึ่งรวมไปถึง Kernel Image ที่ Support hypervisor ด้วย
แต่ยังใช้ไม่ได้นะ เพราะเราก็แค่ลง xen-hypervisor เพิ่มเข้าไป
ดังนั้น Grub จะยังคงไป Boot ที่ Kernel เดิมอยู่
เรายังไม่ได้ เซต เพื่อให้ Default เป็น kernel ที่ Support hypervisor
# ls -l /etc/grub.d/
total 72
-rwxr-xr-x 1 root root 9009 Dec 12 2013 00_header
-rwxr-xr-x 1 root root 5949 Nov 27 2013 05_debian_theme
-rwxr-xr-x 1 root root 11713 Dec 12 2013 10_linux
-rwxr-xr-x 1 root root 10285 Dec 12 2013 20_linux_xen
-rwxr-xr-x 1 root root 10643 Dec 12 2013 30_os-prober
-rwxr-xr-x 1 root root 1426 Dec 12 2013 30_uefi-firmware
-rwxr-xr-x 1 root root 214 Dec 12 2013 40_custom
-rwxr-xr-x 1 root root 216 Dec 12 2013 41_custom
-rw-r--r-- 1 root root 483 Dec 12 2013 README
จะเห็นว่า ลำดับในการ Boot ของ Grub จะให้ linux มาก่อน linux_xen
ดังนั้น เราก็แค่ เปลี่ยนลำดับใหม่ ให้ linux_xen มาก่อน linux
เพื่อไม่ให้ลูกทุ่งมากเกินไป ให้ใช้คำสั่ง
# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
Adding 'local diversion of /etc/grub.d/20_linux_xen to /etc/grub.d/08_linux_xen'
เป็นการสั่งให้ Debian Package เปลี่ยนชื่อ จาก 20_linux_xen เป็น 08_linux_xen
เผื่อคราวหน้า เรา Update Package มันจะได้ไม่เปลี่ยนกลับไปเป็นแบบเดิม แล้วเดี๋ยวจะใช้ไม่ได้
เช็คซะหน่อยว่า ถูกต้องปล่าว
# ls -l /etc/grub.d/
total 72
-rwxr-xr-x 1 root root 9009 Dec 12 2013 00_header
-rwxr-xr-x 1 root root 5949 Nov 27 2013 05_debian_theme
-rwxr-xr-x 1 root root 10285 Dec 12 2013 08_linux_xen
-rwxr-xr-x 1 root root 11713 Dec 12 2013 10_linux
-rwxr-xr-x 1 root root 10643 Dec 12 2013 30_os-prober
-rwxr-xr-x 1 root root 1426 Dec 12 2013 30_uefi-firmware
-rwxr-xr-x 1 root root 214 Dec 12 2013 40_custom
-rwxr-xr-x 1 root root 216 Dec 12 2013 41_custom
-rw-r--r-- 1 root root 483 Dec 12 2013 README
ลำดับของ linux_xen ไปอยู่ก่อน linux เรียบร้อย
# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.14-1-amd64
Found initrd image: /boot/initrd.img-3.14-1-amd64
Found linux image: /boot/vmlinuz-3.14-1-amd64
Found initrd image: /boot/initrd.img-3.14-1-amd64
done
ตอนนี้ Debian เราก็พร้อมจะทำงานเป็น Dom0 แล้ว
ยัง.. ไม่เสร็จนะ
เนื่องจาก Xen ใช้งาน Network ได้หลายแบบมากมาก เช่น
- Bridge (มาอยู่ Network เดียวกับ ethX)
- NAT (เป็น Private Network )
หรือท่าอื่น ๆ ก็แล้วแต่ละดวก
แต่เพื่อความง่าย เราจะใช้แบบ Bridge กัน
ให้ลบ Comment ในบรรทัด network-bridge ในไฟล์ /etc/xen/xend-config.sxp
# (network-script network-bridge)
ลบ # ออก ให้กลายเป็น
(network-script network-bridge)
แล้ว Reboot ซะ เพื่อใช้ Kernel ใหม่ ที่ Support hypervisor
และใช้ Setting Network ตามที่เราเซตไว้
# shutdown -r now
The system is going down for reboot NOW!
เช็คระบบกันหน่อยว่า xen ทำงานรึยัง
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 7352 4 r----- 6.6
เช็ค Network อีกนิด ว่ามี Bridge ให้ใช้งานรึยัง
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.00247e0247fa no peth0
เรียบร้อย Domain-0 ทำงานปกติ
เริ่มสร้าง VM (หรือ DomU) ใน Debian Xen
DomU คืออะไร ไปหาอ่านจากที่อื่นนะครับ เพื่อให้ง่าย ใช้ Package xen-tools ดีกว่า
# aptitude install xen-tools
มาลองสร้าง DomU เล่น ๆ ด้วยคำสั่ง
# xen-create-image --hostname littleDebian --memory=512M --lvm=vg1 --size=10Gb --swap=512Mb --ip 192.168.1.201
อธิบาย Option กันก่อน (จริง ๆ Option มีมากมาย แต่เอาหลัก ๆ ที่ทำให้ใช้งานได้ก่อน)
--hostname littleDebian เป็นการตั้งชื่อ DomU ตัวนี้ ว่าจะให้ชื่ออะไร โดยชื่อนี้ จะมาเป็นชื่อ file config สำหรับ DomU นั้น ๆ ผมตั้งชื่อน่ารัก ๆ ว่า เดอเบี้ยนน้อย littleDebian
--memory=512M กำหนดให้มี Ram สำหรับ DomU นี้ เป็น 512M ไปก่อน ไปแก้ใน Config file ทีหลังได้
--lvm=vg1 เป็นการบอก script ว่า ให้ไปสร้าง logical volume ไว้ใน Logical Group ชื่อว่า vg1 โดยจะสร้าง 2 lv คือ littleDebian-disk และ littleDebian-swap
--size=10Gb เป็นการกำหนดขนาด image หรือ LV ของ littleDebian-disk
--swap=512Mb เป็นการกำหนดขนาด image หรือ LV ของ littleDebian-swap
--ip 192.168.1.201 กำหนด IP ที่ DomU ต้องการใช้ (ไว้แก้ไขทีหลัง)
# xen-create-image --hostname littleDebian --memory=512M --lvm=vg1 --size=10Gb --swap=512Mb --ip 192.168.1.201
WARNING: No gateway address specified!
WARNING: No netmask address specified!
General Information
--------------------
Hostname : littleDebian
Distribution : jessie
Mirror : http://ftp.us.debian.org/debian/
Partitions : swap 512Mb (swap)
/ 10Gb (ext3)
Image type : full
Memory size : 512M
Kernel path : /boot/vmlinuz-3.14-1-amd64
Initrd path : /boot/initrd.img-3.14-1-amd64
Networking Information
----------------------
IP Address 1 : 192.168.1.201 [MAC: 00:16:3E:61:7B:5A]
Creating swap on /dev/vg1/littleDebian-swap
Done
Creating ext3 filesystem on /dev/vg1/littleDebian-disk
Done
Installation method: debootstrap
Done
Running hooks
Done
No role scripts were specified. Skipping
Creating Xen configuration file
Done
No role scripts were specified. Skipping
Setting up root password
Generating a password for the new guest.
All done
Logfile produced at:
/var/log/xen-tools/littleDebian.log
Installation Summary
---------------------
Hostname : littleDebian
Distribution : jessie
MAC Address : 00:16:3E:61:7B:5A
IP Address(es) : 192.168.1.201
RSA Fingerprint : 36:46:f6:04:6d:8c:c1:dc:bd:5f:06:23:af:a6:de:1a
Root Password : hDtZByav
เรียบร้อย DomU พร้อมใช้งาน (อาจจะยังไม่สมบูรณ์เท่าไหร่)
ไว้ค่อยปรับอีกครั้ง
เริ่มใช้งาน DomU ด้วยคำสั่ง
# xm create /etc/xen/littleDebian.cfg
Using config file "/etc/xen/littleDebian.cfg".
Started domain littleDebian (id=1)
ลองเช็คว่าทำงานได้หรือปล่าว
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 6964 4 r----- 29.7
littleDebian 1 512 1 -b---- 2.8
หากต้องการใช้ Console ของ DomU สามารถทำได้โดย
# xm console littleDebian
เท่านี้ Debian Xen ก็พร้อมใช้งานแล้ว