OpenVZ เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ที่ใช้กับลินุกซ์เท่านั้น
มีข้อแตกต่างจาก xen ตรงที่ใช้เพียงเคอร์เนลเดียว
ข้อดีคือ เร็วและพร้อมใช้
ข้อเสียคือ ไม่มีการ swap หน่วยความจำ ถ้าหน่วยความจำเต็ม โปรเซสที่มาทีหลังจะตายหมด
(แต่ก็ยังมีข้อดีในข้อเสีย คือ openvz จะบริหารการสลับหน่วยความจำระหว่าง guest os อย่างมีประสิทธิภาพ และโปรเซสที่รันอยู่ก่อนที่หน่วยความจำจะเต็ม จะยังคงได้ความเร็วที่เกือบคงที่)
กำหนด
cpu: Intel E2140
mb: ECS P4M890T-M V2.0
ram: 4GB
debian: Lenny
host: server1.example.com, 192.168.1.31, 2.6.26-2-openvz-686
guest-101: test.example.com, 192.168.1.131
vz-partition: /dev/sda9
ติดตั้ง
เริ่มบน lenny
# aptitude install linux-image-2.6.26-2-openvz-686 vzctl vzquota
แก้ไขระบบตามคู่มือ
# vi /etc/sysctl.conf
... #openvz net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 ...
สั่งปรับให้มีผลทันที
# sysctl -p
แก้ระบบเน็ตเวิร์คสำหรับ guest ตามคำแนะนำ
# vi /etc/vz/vz.conf
... # Controls which interfaces to send ARP requests and modify APR tables on. #NEIGHBOUR_DEVS=detect NEIGHBOUR_DEVS=all ...
บูตใหม่
# shutdown -r now
ตรวจผลหลังการบูต
# uname -r
2.6.26-2-openvz-686
สมมุติว่าจะติดตั้งระบบ openvz container ไว้ที่ /dev/sda9 ที่ฟอร์แมตเป็น ext3 ไว้เรียบร้อยแล้ว
สั่งหยุดเพิ่อปรับระบบ
# /etc/init.d/vz stop
แก้ไข fstab เพื่อให้เมานต์ที่ /var/lib/vz อัตโนมัติ
# vi /etc/fstab
... /dev/sda9 /var/lib/vz ext3 defaults 0 2 ...
ย้ายไฟล์ที่ติดตั้งแล้วมาที่ /dev/sda9 แล้วเริ่ม openvz ใหม่
# mkdir /mnt/tmp # mount /dev/sda9 /mnt/tmp # mv /var/lib/vz/* /mnt/tmp # umount /mnt/tmp # mount -a # /etc/init.d/vz start
เนื่องจากค่าไฟล์คอนฟิกของ openvz นั้น ปรับต้้งยากมาก เราเลยจะเอา util ของเขามาใช้เป็นตัวอย่าง
ไปที่ที่เก็บไฟล์คอนฟิก
# cd /etc/vz/conf
สร้างตัวอย่างไฟล์คอนฟิก โดยสมมุติว่าเราจะแบ่งให้เซิร์ฟเวอร์เครื่องนี้มี 4 guest os โดยให้ชื่อไอดี (ของอันแรก) ว่า 101
# vzsplit -n 4 > 101.conf
ปรับแต่งค่าอื่น ๆ ของ guest ตามการกำหนดข้างต้น
# vzctl set 101 --onboot yes --save # vzctl set 101 --hostname test.example.com --save # vzctl set 101 --ipadd 192.168.1.131 --save # vzctl set 101 --nameserver ns1.example.com --save
ติดตั้ง guest os โดยไปดาวน์โหลด template มาจาก debian.systs.org
# cd /var/lib/vz/template/cache/ # wget http://debian.systs.org/ostemplates/debian-5.0-i386-minimal.tar.gz
ติดตั้ง
# vzctl create 101 --ostemplate debian-5.0-i386-minimal
หากต้องการคัดลอก apt source-list ก็สามารถคัดลอกจาก host ไปใช้ได้
# cp /etc/apt/sources.list /var/lib/vz/private/101/etc/apt
เริ่มระบบ
# vzctl start 101
ตั้งรหัสผ่านของ guest ให้ root
# vzctl exec 101 passwd
ใช้งานผ่าน vzctl
# vzctl enter 102
(ออกด้วย exit)
หรือใช้งานผ่าน ssh
# ssh root@test.example.com
ติดตั้งส่วนของ guest ที่ยังเหลืออยู่
# aptitude update # aptitude install console-data locales # dpkg-reconfigure locales # aptitude upgrade
เสร็จแล้วครับ
ที่มา
WebVZ เป็นโปรแกรมจัดการ OpenVZ แบบ web based
ตอนนี้ยังทำอะไรไม่ได้มาก แต่ติดตั้งไว้ก็ดี เผื่อทำงานอะไรเล็ก ๆ น้อย ๆ
สมมุติว่าเครื่องหลักมีไอพี 192.168.1.31
# aptitude install ruby rubygems libsqlite3-ruby sqlite3 rails # gem install -v=2.1.0 rails #รอ 1 เพลิน # ln -sf /var/lib/vz / # cd /usr/local # wget http://downloads.sourceforge.net/project/webvz/webvz/webvz%202.0/webvz.2.0.tar.gz # tar xfz webvz.2.0.tar.gz # ln -sf webvz.2.0 webvz # cd webvz # ruby script/server -b 192.168.1.31
เครื่องอื่น ๆ ในวง สามารถใช้งานผ่าน url: http://192.168.1.31:3000
user: admin
pass: admin123
เสร็จแล้ว
ที่มา
บันทึกการทำ container ใช้เอง ด้วย debootstrap
# aptitude install debootstrap # cd /var/lib/vz/private # mkdir 1001 # debootstrap --arch=amd64 lenny 1001 http://server1.example.com:9999/debian # cp /etc/apt/sources.list 1001/etc/apt/ # chroot 1001 # aptitude install console-data locales ssh screen less vim # dpkg-reconfigure locales # passwd # aptitude update # aptitude upgrade # vi /etc/inittab
... ตัดทิ้ง--------8<--------------------- # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 จบตัดทิ้ง--------->8-------------------- ...
(อาจติดตั้งแพกเกจ หรือปรับแต่งค่าอื่น ๆ ที่จำเป็นเพิ่มได้)
# exit
เก็บไว้ใช้ในโอกาสต่อไป
# cd 1001 # tar cfz ../debian.tar.gz *
เที่ยวหลังก็สามารถแตกไฟล์ออกมาใช้งานได้ เช่น
# mkdir 1002 # cd 1002 # tar xfz ../debian.tar.gz
เป็นต้น