上一篇介紹了虛拟化的基礎知識;這裡來介紹具體的虛拟化工具的配置使用:
一、Xen的安裝配置詳解:
1、配置yum源
http://mirrors.163.com/centos/6.5/xen4/x86_64/ 163或其他yum源
# cat /etc/yum.repos.d/xen4.repo
[Xen4]
name=Xen4 project
#baseurl=http://mirror.centos.org/centos/6/xen4/x86_64/
baseurl=ftp://172.16.0.1/pub/Sources/6.x86_64/xen4/x86_64 #這裡使用的是本地yum源
gpgcheck=0
cost=500
2、配置好檢視:
# yum list all | grep xen
libvirt-daemon-driver-xen.x86_64 0.10.2.8-7.el6.centos.alt @Xen4
xen.x86_64 4.2.4-30.el6.centos.alt @Xen4
xen-hypervisor.x86_64 4.2.4-30.el6.centos.alt @Xen4
xen-libs.x86_64 4.2.4-30.el6.centos.alt @Xen4
xen-licenses.x86_64 4.2.4-30.el6.centos.alt @Xen4
xen-runtime.x86_64 4.2.4-30.el6.centos.alt @Xen4
libvirt-daemon-xen.x86_64 0.10.2.8-7.el6.centos.alt Xen4
xen-devel.x86_64 4.2.4-30.el6.centos.alt Xen4
xen-doc.x86_64 4.2.4-30.el6.centos.alt Xen4
xen-ocaml.x86_64 4.2.4-30.el6.centos.alt Xen4
xen-ocaml-devel.x86_64 4.2.4-30.el6.centos.alt Xen4
xenserverjava.noarch 5.6.100.1-1.el6 epel
xenserverjava-javadoc.noarch 5.6.100.1-1.el6 epel
注意檢視kernel的版本;3.10測試是無法啟動的;需要低于3.10版本。建議安裝時直接指定核心。
3、安裝完成後修改grub檔案。
# yum -y install xen kernel-3.4.61 kernel-firmware-3.4.61
# vim /boot/grub/grub.conf #注意按照以下修改
#vmlinuz和initramfs都作為xen核心的子產品
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.4.61-9.el6.centos.alt.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-3.4.61-9.el6.centos.alt.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto
module /initramfs-3.4.61-9.el6.centos.alt.x86_64.img
....
4、重新開機進入新核心即可。
# uname -r
3.4.61-9.el6.centos.alt.x86_64
# rpm -q xen
xen-4.2.4-30.el6.centos.alt.x86_64
# xm info
host : node4.soul.com
release : 3.4.61-9.el6.centos.alt.x86_64
version : #1 SMP Wed Sep 11 15:34:17 UTC 2013
machine : x86_64
nr_cpus : 1
nr_nodes : 1
cores_per_socket : 1
threads_per_core : 1
cpu_mhz : 2399
hw_caps : 0fabfbff:28100800:00000000:00003f40:80b82221:00000000:00000001:00000000
virt_caps : hvm
......
5、設定橋接網絡;注意需要必須關閉NetworkManager和開機自啟。
# chkconfig NetworkManager off
# service NetworkManager stop
# vim bridge.sh #提供腳本自動配置橋裝置
#!/bin/bash
ip=`ifconfig eth0 | awk -F : '/inet addr:/{print $2}' | awk '{print $1}'`
brctl addbr br0
ifconfig eth0 0 up
brctl addif br0 eth0
ifconfig br0 ${ip}/16 up
brctl stp br0 on
如需機器重新開機後還生效的需要更改配置檔案:
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-br0
DEVICE=br0
BOOTPROTO=none
NM_CONTROLLED=no #需要更改no
ONBOOT=yes
TYPE=Bridge #首字元需大寫
IPADDR=192.168.0.114
NETMASK=255.255.0.0
GATEWAY=192.168.0.254
DNS1=172.16.0.1
IPV6INIT=no
USERCTL=no
# vim ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:f9:b3:df
NM_CONTROLLED=yes
ONBOOT=yes
BRIDGE=br0
TYPE=Ethernet
UUID="12058363-37d9-4857-8c22-0a0da4b52c88"
IPV6INIT=no
USERCTL=no
#重新開機網卡測試即可。
二、下面建立一個虛拟機并安裝系統測試
提供initrd.img vmlinuz這兩個檔案;repo鏡像檔案的isolinux檔案夾裡
本次直接下載下傳到root家目錄下。
1、提供配置檔案
# cd /etc/xen/
# vim centos6
kernel = "/root/vmlinuz"
ramdisk = "/root/initrd.img"
memory = 512
name = "centos6"
vif = [ 'bridge=br0' ] #指定網卡為橋接br0上
disk = [ 'file:/xen/vm1/centos6.img,xvda,w' ] #指定disk在後端和前端名稱和權限
on_reboot="destroy" #執行xm reboot指令或在目前域内部執行重新開機操作時由Xen執行的動作;destroy為關機。
建立上述disk檔案
# cd /xen/vm1/
# dd if=/dev/zero of=centos6.img oflag=direct seek=102399 bs=1M count=1
2、啟動測試
# cd /etc/xen/
# xm create centos6
# xm console centos6
┌────────┤ Choose a Language ├────────┐
│ │
│ What language would you like to use │
│ during the installation process? │ │ │
│ Catalan ↑ │
│ Chinese(Simplified) ? │
│ Chinese(Traditional) ? │
│ Croatian ? │
│ Czech ? │
│ Danish ? │
│ Dutch ? │
│ English ↓ │
│ │
│ ┌────┐ │
│ │ OK │ │ │
│ └────┘ │
測試啟動成功。可以測試安裝了...
┌───────────────┤ Formatting ├─——───────────┐ │ │
│ Creating ext4 filesystem on /dev/mapper/VolGroup-lv_root │ │ │
│ │ └──────────────────────────────────———┘
3、安裝完成後需要先關機;然後更改配置檔案
# cd /etc/xen/
# vim centos6
#kernel = "/root/vmlinuz"
#ramdisk = "/root/initrd.img"
bootloader="/usr/bin/pygrub" #添加這行;注釋上述兩行;儲存啟動虛拟機
memory = 512
name = "centos6"
vif = [ 'bridge=br0' ]
disk = [ 'file:/xen/vm1/centos6.img,xvda,w' ]
on_reboot="destroy"
重新開機後xm console centos6連接配接測試或者ssh遠端連接配接測試即可。
配置好網關測試連接配接即可。
localhost.localdomain login: #測試可以正常啟動登陸
CentOS release 6.5 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64
# ifconfig eth0 192.168.0.11/16 up
-------------------------------------------------------------------------------------------
三、基礎工具使用
1、vnc使用說明
- 安裝vnc;遠端桌面連接配接:
# yum -y install tigervnc-server
# vncserver :1
tcp LISTEN 0 5 *:5901 *:* users:(("Xvnc",9358,6)) #監聽端口:5901
#可以在windows用戶端使用vnc用戶端連接配接。
#同時也可以啟動多個vnc;且互相獨立。
# vncserver :2 ...
- 建立vnc安裝格式:
建立配置檔案:
# vim rhel6
kernel="/root/vnc/vmlinuz"
ramdisk="/root/vnc/initrd.img"
vcpus=2
memory=512
name="rhel6"
disk=['file:/xen/vm3/rhel6.qcow2,xvda,w']
vif=['bridge=br0']
vfb=['vnc=1,sdl=1'] #vnc選項;隻能Dom0下使用vnc連接配接後啟動目前視窗下打開
on_reboot="destroy"
# pwd
/xen/vm3 #該目錄下建立檔案
# qemu-img create -f qcow2 -o size=120G,preallocation=metadata rhel6.qcow
#建立完成後在連接配接Dom0的vnc下啟動虛拟機安裝即可。
2、libvirt使用方法:
- 安裝:
# yum -y install libvirt
# service libvirtd start
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29f9b3df no eth0
vif1.0
virbr0 8000.000000000000 yes
# yum -y install virt-manager #安裝上管理工具
# yum -y install virt-viewer #安裝virt-viewer工具
# virt-manager & #啟動即可安裝;需要Xmanager支援
# virt-install -n "centos-pxe" -r 512 --vcpus=1 --pxe --disk path=/xen/vm2/centos-pxe.img --network bridge=br0 --force -v
#基于pxe引導安裝;需要在啟動虛拟機是開啟CPU的虛拟化Intel VT-x/EPT...和虛拟化CPU性能...
具體用法:virt-install --help
四、xm 工具詳解
1、動态添加磁盤
# xm block-list centos6 #顯示塊裝置
Vdev BE handle state evt-ch ring-ref BE-path
51712 0 0 4 8 8 /local/domain/0/backend/vbd/1/51712
# xm block-attach
Error: 'xm block-attach' requires between 4 and 5 arguments.
Usage: xm block-attach <Domain> <BackDev> <FrontDev> <Mode> [BackDomain]
Create a new virtual block device.
#先建立一個磁盤檔案:
# cd /xen/vm1/
# ls -lh
total 3.3G
-rw-r--r-- 1 root root 100G May 22 10:30 centos6.img
# qemu-img create -f qcow -o size=10G test.qcow
Formatting 'test.qcow', fmt=qcow size=10737418240 encryption=off
[root@node4 vm1]# ls -lh
total 3.3G
-rw-r--r-- 1 root root 100G May 22 10:32 centos6.img
-rw-r--r-- 1 root root 41K May 22 10:32 test.qcow
# xm block-attach centos6 file:/xen/vm1/test.qcow xvdb w #添加
# xm block-list centos6
Vdev BE handle state evt-ch ring-ref BE-path
51712 0 0 4 8 8 /local/domain/0/backend/vbd/1/51712
51728 0 0 4 10 868 /local/domain/0/backend/vbd/1/51728
# fdisk -l /dev/xvd[a-z]
Disk /dev/xvda: 107.4 GB, 107374182400 bytes
....
Disk /dev/xvdb: 0 MB, 40960 bytes #檢視已顯示;動态添加成功
....
2、删除磁盤;删除前請確定被删除磁盤未被挂載使用;或者先解除安裝挂載使用的分區:
# xm block-detach
Error: 'xm block-detach' requires between 2 and 3 arguments.
Usage: xm block-detach <Domain> <DevId> [-f|--force]
Destroy a domain's virtual block device.
# xm block-list centos6
Vdev BE handle state evt-ch ring-ref BE-path
51712 0 0 4 8 8 /local/domain/0/backend/vbd/1/51712
51728 0 0 4 10 868 /local/domain/0/backend/vbd/1/51728
# xm block-detach centos6 51728 #移除
# xm block-list centos6
Vdev BE handle state evt-ch ring-ref BE-path
51712 0 0 4 8 8 /local/domain/0/backend/vbd/1/51712
#fdisk 檢視下
相關指令操作都是一樣; xm --help
五、其他指令說明
save/restore:儲存恢複虛拟機
# xm save
Usage: xm save [-c] <Domain> <CheckpointFile>
Save a domain state to restore later.
-c, --checkpoint Leave domain running after creating snapshot
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 985 2 r----- 1298.5
centos6 1 512 1 -b---- 25.0
# xm save centos6 /tmp/centos.save #把記憶體中的資料儲存起來
-rwxr-xr-x 1 root root 514M May 22 10:56 centos.save
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 985 2 r----- 1342.6
# xm restore /tmp/centos.save #恢複
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 985 2 r----- 1401.7
centos6 8 512 1 -b---- 0.0
pause/unpause:暫停啟動
# xm pause centos6 #暫停
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 985 2 r----- 1404.7
centos6 8 512 1 --p--- 0.5
# xm unpause centos6
具體還需要xm --help 檢視詳細。
六、虛拟機的實時遷移
1、配置兩台xen主機;并修改其配置檔案:
#啟動以下選項
# vim /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
# service xend restart
# ss -tunl | grep 8002
tcp LISTEN 0 5 *:8002 *:*
2、使用共享存儲(NFS/ISCSI)或者分布式檔案系統
這裡使用的是NFS:
# vim /etc/exports
/xen/vm1 192.168.0.0/16(rw,no_root_squash)
另台Xen挂載
# mount -t nfs 192.168.0.114:/xen/vm1/ /xen/vm1/
3、啟動測試:
# xm create -c centos6 #給虛拟機配置位址長ping測試
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 512 2 r----- 273.1
centos6 2 512 1 -b---- 12.1
# xm migrate #可以遷移到别的節點
# xm migrate -l centos6 192.168.0.114 遷移到别的節點
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 512 2 r----- 284.1
#測試遷移正常;ping值也是正常未中斷
# xm migrate -l centos6 192.168.0.113 可以再遷移回來
到此配置完成。