Ảo hóa với KVM trên máy chủ CentOS 6.0

Cập nhật lúc 07h00' ngày 13/10/2011

Quản Trị Mạng - Từ lâu, KVM (Kernel-based Virtual Machine) được rất nhiều người biết đến là một cơ sở hạ tầng ảo hóa cho nhân Linux dành cho những CPU hỗ trợ công nghệ ảo hóa như Intel VT hoặc AMD-V... Trước đây chúng tôi đã từng hướng dẫn các bạn ảo hóa với KVM trên nền tảng Fedora 12 Server. Hôm nay chúng tôi sẽ tiếp tục giúp các bạn có thể cài đặt, sử dụng KVM để khởi tạo và chạy các máy ảo trên máy chủ CentOS 6.0.

1. Một số lưu ý

Phần minh họa sau chúng tôi sử dụng máy chủ CentOS 6.0 với hostname server1.example.com, địa chỉ IP của KVM host là 192.168.0.100.

SELinux cần được vô hiệu hóa trên hệ thống CentOS 6.0 để có thể làm việc tốt nhất (nếu bạn để SELinux ở chế độ on nó vẫn hoạt động nhưng chúng tôi không chắc chắn về những sự cố có thể xảy ra).

vi /etc/selinux/config
Set SELINUX=disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Sau đó khởi động lại:

reboot

Ngoài ra chúng ta cần hệ thống desktop được cài đặt virt-manager để kết nối tới giao diện điều khiển đồ họa của máy ảo mà chúng ta sẽ tạo. Ở đây sử dụng Fedora 15.

2. Cài đặt KVM

Trước khi tiến hành, bạn cần xác định xem CPU của mình có hỗ trợ ảo hóa phần cứng hay không:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Nếu màn hình hiển thị thông tin dạng như sau:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
[root@server1 ~]#

Như vậy là CPU của bạn có hỗ trợ, ngược lại nếu không hiển thị gì thì bạn hãy dừng lại ở đây.

Bây giờ chúng ta import các key GPG cho các gói phần mềm:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Tiến hành cài đặt KVM và virtinst (một công cụ để tạo máy ảo):

yum install kvm libvirt python-virtinst qemu-kvm

Sau đó khởi động libvirt daemon:

/etc/init.d/libvirtd start

Kiểm tra xem KVM đã cài đặt thành công hay chưa, chạy lệnh:

virsh -c qemu:///system list

Nếu màn hình hiển thị thông tin sau đây chứng tỏ bạn đã thành công:

[root@server1 ~]# virsh -c qemu:///system list
 Id Name                 State
----------------------------------

[root@server1 ~]#

Ngược lại, bạn hãy thực hiện thêm lần nữa.

Tiếp theo chúng ta cần thiết lập một cầu nối cho mạng trên máy chủ (network bridge) để có thể truy cập máy ảo từ xa bằng các host khác nhau như hệ thống vật lý trong mạng.

Để làm điều này, cài đặt gói bridge-utils:

yum install bridge-utils

Và cấu hình một bridge. Tạo file /etc/sysconfig/network-scripts/ifcfg-br0 (hãy sử dụng các giá trị IPADDR, PREFIX, GATEWAY, DNS1 DNS2 từ tập tin /etc/sysconfig/network-scripts/ifcfg-eth0); bạn cũng cần chắc chắn rằng mình đang dùng giá trị TYPE=Bridge, không phải TYPE=Ethernet:

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br0"

Chỉnh sửa /etc/sysconfig/network-scripts/ifcfg-eth0 như sau (các giá trị BOOTPROTO, IPADDR, PREFIX, GATEWAY, DNS1, DNS2 để ở dạng chú thích và thêm dòng BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=00:1E:90:F3:F0:02
TYPE=Ethernet
#BOOTPROTO=none
#IPADDR=192.168.0.100
#PREFIX=24
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
#DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BRIDGE=br0

Khởi động lại mạng:

/etc/init.d/network restart

Và chạy lệnh:

ifconfig

Network bridge (br0) sẽ hiển thị như sau:

[root@server1 ~]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:103 errors:0 dropped:0 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:7434 (7.2 KiB)  TX bytes:21398 (20.8 KiB)

eth0      Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:19511 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11592 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25980124 (24.7 MiB)  TX bytes:1104371 (1.0 MiB)
          Interrupt:28 Base address:0x6000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3608 (3.5 KiB)  TX bytes:3608 (3.5 KiB)

virbr0    Link encap:Ethernet  HWaddr 6A:12:69:18:2B:05
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@server1 ~]#

3. Cài đặt virt-viewer hoặc virt-manager trên Fedora 15 Desktop

Tiếp theo chúng ta cần một phương tiện để kết nối tới giao diện điều khiển đồ họa của các guest. Ở đây sử dụng virt-manager cho Fedora 15.

Bắt đầu bằng sử dụng tài khoản root

su

Và chạy:

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

Sau đó cài đặt virt-manager (trong trường hợp bạn đang dùng Ubuntu 11.04).

sudo apt-get install virt-manager

4. Tạo một Debian Squeeze Guest từ dòng lệnh

Bây giờ quay trở lại CentOS 6.0 KVM host.

Và xem:

man virt-install

Để tìm hiểu cách sử dụng virt-install.

Chúng ta sẽ tạo một máy ảo dựa trên hình ảnh trong thư mục /var/lib/libvirt/images/ đã được tạo ra khi cài đặt KVM ở phần 2.

Để tạo một Debian Squeeze guest (trong chế độ bridging) với tên vm10, dung lượng RAM 512MB, hai CPU ảo và file ảnh đĩa cứng /var/lib/libvirt/images/vm10.img (kích thước 12GB). Cho đĩa CD Debian Squeeze Netinstall vào ổ CD và chạy:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Tất nhiên, bạn cũng có thể tạo file ảnh ISO của Debian Squeeze Netinstall CD (khuyến cáo nên tạo trong /var/lib/libvirt/images/ bởi khi tạo máy ảo thông qua virt-manager từ Fedora sẽ tìm kiếm file ISO trong thư mục này).

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso

Và sử dụng file ISO đó bằng lệnh virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Kết quả sẽ hiển thị như sau:

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm


Starting install...
Allocating 'vm10.img'              |  12 GB     00:00
Creating domain...                 |    0 B     00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
[root@server1 ~]#
Trang: 
Đ.Hải (Nguồn HowtoForge )
Đánh giá(?):
META.vn | Mua sắm trực tuyến
Bài viết mới nhất
Xem tất cả
Bài viết cũ hơn cùng chủ đề
Xem tất cả