ทดลองติดตั้ง Xen บน Lenny

Xen เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ในทางทฤษฎีสามารถรัน guest OS ใด ๆ ก็ได้ โดยมีข้อแม้คือ ซีพียูต้องรองรับการทำ virtualization ด้วย แต่ถ้าซีพียูไม่รองรับ ต้องใช้กับ OS ที่ดัดแปลงให้ใช้กับ Xen เท่านั้น

ข้อดีคือ เร็วพอควร และสามารถ swap หน่วยความจำได้ ทำให้ใช้งานได้เหมือนในระบบลินุกซ์ปกติ

ข้อเสียคือ เนื่องจากแยกเคอร์เนลและฮาร์ดแวร์กันอย่างเด็ดขาด จึงทำให้ต้องการฮาร์ดแวร์มากกว่าปกติ และหากหน่วยความจำที่แบ่งให้แต่ละ guest OS ไม่พอ Xen ก็จะสลับหน่วยความจำลงดิสก์ ทำให้ระบบทำงานช้ามาก (ซึ่งจะมีผลกับทุก ๆ โพรเซสที่ยังค้างอยู่ในหน่วยความจำ คือช้าทั้งระบบ)

ข้อกำหนด

CPU: Intel E2140
M/B: ECS P4M890T-M V2.0
RAM: 4GB
host: server1.example.com, 192.168.1.31
guest-101: test.example.com, 192.168.1.131, bridged
xen-physical-partition: /dev/sda10,xvda
apt-proxy: 192.168.1.3:9999

ติดตั้ง Xen - dom0

เริ่มติดตั้งบน lenny

# aptitude install xen-hypervisor-3.2-1-i386 xen-linux-system-2.6.26-2-xen-686\
 xen-utils-3.2-1 xenstore-utils xen-shell

จะใช้เน็ตเวิร์กแบบ bridge

# vi /etc/xen/xend-config.sxp
...
# (network-script network-dummy)
(network-script network-bridge)
...

บูตใหม่

# shutdown -r now

ตรวจผลหลังการบูต

# uname -r
2.6.26-2-xen-686

ติดตั้ง domU

สมมุติว่าจะติดตั้ง xen-domU ไว้ที่ฮาร์ดดิสก์จริง /dev/sda10 ที่แบ่งพาร์ทิชันเป็น ext3 ไว้เรียบร้อยแล้ว โดยจะเมานท์ /dev/sda10 เป็น /dev/xvda ใน xen และแบ่งพาร์ทิชันต่าง ๆ ของ domU ใน /dev/xvda

# xm block-attach 0 phy:/dev/sda10 xvda w

ใช้ fdisk แบ่งพาร์ทิชันตามใจชอบ

# fdisk /dev/xvda

ในที่นี้สมมุติว่า /dev/xvda5 เมานท์เป็น / และ /dev/xvda6 ใช้เป็น swap

ฟอร์แมต ext3 และ swap ตามลำดับ

# mkfs.ext3 /dev/xvda5
# mkswap /dev/xvda6

ใช้วิธีติดตั้งแบบ debootstrap เนื่องจากเร็วกว่าวิธีอื่น

ติดตั้ง debootstrap

# aptitude install debootstrap

ติดตั้ง lenny บน /dev/xvda5 ผ่าน apt-proxy 192.168.1.3:9999 และเนื่องจากซีพียูไม่รองรับการทำ virtualize จึงต้องติดตั้งเคอร์เนลที่แปลงมาใช้กับ xen แล้ว

# mkdir /mnt/tmp
# mount /dev/xvda5 /mnt/tmp
# debootstrap lenny /mnt/tmp http://192.168.1.3:9999/debian
# mount -t proc none /mnt/tmp/proc
# mount -o bind /dev /mnt/tmp/dev
# mount -t sysfs none /mnt/tmp/sys
# cp /etc/apt/sources.list /mnt/tmp/etc/apt/
# ehco 'test.example.com' > /mnt/tmp/etc/hostname
# chroot /mnt/tmp
test# vi /etc/network/interface
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.1.131
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.3
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.1.3
        dns-search example.com
test# vi /etc/fstab
...
#                
proc            /proc           proc    defaults        0       0
/dev/xvda5      /               ext3    errors=remount-ro 0       1
/dev/xvda6      none            swap    sw              0       0
test# aptitude update
test# aptitude install console-data locales ssh
test# dpkg-reconfigure locales
test# aptitude upgrade
test# aptitude install linux-image-2.6.26-2-xen-686
test# passwd
test# exit
# umount /mnt/tmp/sys
# umount /mnt/tmp/dev
# umount /mnt/tmp/proc
# umount /mnt/tmp
# xm block-detach 0 xvda

สร้างไฟล์คอนฟิก

# vi /etc/xen/101.cfg
#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-2.6.26-2-xen-686'
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-686'
memory      = '1024'
#
#  Disk device(s).
#
root        = '/dev/xvda5 ro'
disk        = [ 'phy:sda10,xvda,w' ]
#
#  Hostname
#
name        = 'test.example.com'
#
#  Networking
#
vif         = [ 'bridge=eth0' ]
#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

เริ่ม domU - 101.cfg

# xm create 101.cfg

ตรวจสถานะ

# xm list

เข้าใช้งาน domU ด้วย ssh

# ssh root@test.example.com

เสร็จแล้วครับ

ที่มา

Comments

ต้องลองกับ ซีพียู ที่ มี intel-VT หรือ AMD-V รึเปล่าครับ

ไม่จำเป็นครับ แต่ถ้าใช้กับซีพียูดังกล่าว จะสามารถใช้กับโอเอสที่ไม่ต้องปรับแต่งได้ครับ

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้