当前位置: > 虚拟化 Virtualization > Xen >

超级简单安装xen和虚拟机以及解决其中出现的问题

时间:2016-09-22 01:06来源:linux.it.net.cn 作者:IT
我用的是centos 5.7 x64,最好是64位的,64位能够支持4G以上内存,否则你的物理机虚拟不了几个虚拟机
1.安装xen
1.1安装

点击(此处)折叠或打开

  1. yum -y install kernel-xen xen
  2. yum install audit-libs-python.i386
  3. yum install virt-viewer 
1.2配置

点击(此处)折叠或打开

  1. vi /boot/grub/grub.conf
安装完xen的rpm后,rpm会去修改grub.conf这个是控制系统登录地方(粉红色的表示系统登录入口硬盘)和多系统选择(红色的0表示默认选择多个系统中的第0个系统[大家在图形界面里经常会看到一个选择系统的地方,由于我的系统是文本界面,所以必须配置这个,第0个系统是xen系统,大家可以蓝色的文件中找到xen]),当然若是大家想不用xen系统,则修改default=1即可,另外timeout=5表示选择等待时间,这个大家可以改为0更快启动系统
把default=1改为0,

点击(此处)折叠或打开

  1. #boot=/dev/sda
  2. default=0
  3. timeout=5
  4. splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  5. hiddenmenu
  6. title CentOS (2.6.18-274.3.1.el5xen)
  7. root (hd0,0)
  8. kernel /boot/xen.gz-2.6.18-274.3.1.el5
  9. module /boot/vmlinuz-2.6.18-274.3.1.el5xen ro root=LABEL=/
  10. module /boot/initrd-2.6.18-274.3.1.el5xen.img
  11. title CentOS (2.6.18-274.el5)
  12. root (hd0,0)
  13. kernel /boot/vmlinuz-2.6.18-274.el5 ro root=LABEL=/
  14. initrd /boot/initrd-2.6.18-274.el5.img
  15. title Xen 4.1 / XenLinux 2.6
  16. kernel /boot/xen-4.1.gz dom0_mem=262144
  17. module /boot/vmlinuz-2.6.18.8-xen0 root=/dev/sda4 ro console=tty0

然后重新启动系统
1.3 测试
重新启动后,输入,uname -a,若是见到xen字样,那恭喜你安装成功了

点击(此处)折叠或打开

  1. [root@manage-vm ~]# uname -a
  2. Linux manage-vm.com 2.6.18-274.3.1.el5xen #1 SMP Tue Sep 6 20:57:11 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
2.安装xen虚拟机
 
2.1安装前准备
a.下载一个CentOS-5.5-i386-bin-DVD.iso,放到物理机上
        b.安装web软件,例如apache,这个是必须的,一会会用到
c.卸载vir客户端,这个虚拟机客户端的网卡virbr0会影响虚拟机和外网通信,这个是血淋淋的教训,我就因为这个google和budai了好多遍,尝试了无数次才发现这个问题。

点击(此处)折叠或打开

  1. yum -y intall httpd
2.2开始安装虚拟机
a.挂载光驱

点击(此处)折叠或打开

  1. mount -t iso9660 -o loop,user CentOS-5.5-i386-bin-DVD.iso /var/www/html/iso
b.启动xend服务

点击(此处)折叠或打开

  1. service xend start
c.安装
我的物理机是8核,16G内存,1TB硬盘,我估计能够装7个2GB内存,100GB的虚拟机和一个1GB内存,100GB的虚拟机
计划安装一个虚拟机交node001,内存为2G

点击(此处)折叠或打开

  1. service httpd start
  2. virt-install --name=node001 --ram=2048 --vcpus=1 --file=/vm/node001.img --accelerate --vnc --os-type=linux --file-size=100 --location=http://localhost/iso
解释:
--name:虚拟机的名字,必须是唯一,一般是xxx001最好
--ram:虚拟机的内存大小,单位为MB
--vcpus:虚拟机cpu个数
--file:虚拟机文件存放文件,注意选择放在最大的分区中
--accelerate:使用内核加速功能
--vnc:用 VNC 进行图形支持,这个可以省略,用文本模式比较好
 全虚拟客户端的操作系统类型,例如:'linux'、'unix'、'windows'
--file-size=DISKSIZE  磁盘映像大小(如果它不存在的话),以 GB 为单位
--location 安装源(例如:nfs:host:/path、http://host/path、ftp://host/path),注意必须是网络路径,不能是file://路径,这就是为什么需要apache的原因
 
执行完这个命令后就是安装系统的各个步骤了,我就不多说了
 
3.常用命令
所有的虚拟机的配置文件和xen的配置文件都在/etc/xen下

点击(此处)折叠或打开

  1. #启动虚机客户端,进入
  2. virsh console node001
  3. #开启虚机
  4. virsh start node001
  5. #关闭虚机
  6. virsh shutdown node001
  7. #克隆虚机 -o原虚拟机,-n克隆的虚拟机,-f存放位置
  8. virt-clone -o node001 -n node002 -f /vm/node002.img
  9. #列出所有虚拟机
  10. virsh list
删除虚拟机过程

点击(此处)折叠或打开

  1. #删除一个域
  2. virsh destroy node001
  3. #取消定义一个非活跃的域
  4. virsh undefine node001
  5. #删除虚拟机文件
  6. rm /vm/node001
4.安装中出现的问题
4.1
  问题:
  

点击(此处)折叠或打开

  1. [root@localhost ~]# virt-install -n vm0 -r 256 -f /vm/vm01.img -s 4 -nographics -p -l /tmp/iso/
  2. Traceback (most recent call last):
  3. File "/usr/sbin/virt-install", line 31, in ?
  4. import libvirt
  5. File "/usr/lib/python2.4/site-packages/libvirt.py", line 25, in ?
  6. raise lib_e
  7. ImportError: /usr/lib/libvirt.so.0: undefined symbol: audit_encode_nv_string

解决:
  

点击(此处)折叠或打开

  1. yum install audit-libs-python.i386
4.2
  问题:

点击(此处)折叠或打开

  1. [root@localhost ~]# xend start
  2. ERROR Internal error: Could not obtain handle on privileged command interface (2 = No such file or directory)
  3. ERROR Internal error: Could not obtain handle on privileged command interface (2 = No such file or directory)
  4. Traceback (most recent call last):
  5. File "/usr/sbin/xend", line 51, in ?
  6. from xen.xend.server import SrvDaemon
  7. File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDaemon.py", line 21, in ?
  8. import relocate
  9. File "/usr/lib/python2.4/site-packages/xen/xend/server/relocate.py", line 26, in ?
  10. from xen.xend import XendDomain
  11. File "/usr/lib/python2.4/site-packages/xen/xend/XendDomain.py", line 33, in ?
  12. import XendDomainInfo
  13. File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 40, in ?
  14. import image
  15. File "/usr/lib/python2.4/site-packages/xen/xend/image.py", line 37, in ?
  16. xc = xen.lowlevel.xc.xc()
  17. xen.lowlevel.xc.Error: (1, 'Internal error', 'Could not obtain handle on privileged command interface (2 = No such file or directory)')
解决:

点击(此处)折叠或打开

  1. 解决:没有运行xen内核
  2. uname -a检查一下
4.3
  问题:
 

点击(此处)折叠或打开

  1. root@localhost ~]# virsh list
  2. 错误:无法连接到 'localhost:8000': 拒绝连接
  3. 错误:连接到管理程序失败
解决:

点击(此处)折叠或打开

  1. 错误:无法连接到 'localhost:8000': 拒绝连接
  2. 错误:连接到管理程序失败
  3. 解决
  4. vi /etc/xen/xend-config.sxp
  5. (xend-http-server yes)
  6. (xend-unix-server yes)
  7.  
  8. (xend-port 8000)
  9. xend restart
  10. 启动虚机xend start
4.4
  问题:

点击(此处)折叠或打开

  1. 安装虚机时出现unable to find any devices
解决:

点击(此处)折叠或打开

  1. xen不支持本地iso源必须是http或者nfs,ftp
  2. virt-install --name=node002 --ram=256 --vcpus=1 --file=/vm/node002.img --file-size=4 --location=http://192.168.13.105:82/iso/iso
4.5
  问题:
 

点击(此处)折叠或打开

  1. 安装完虚拟机后,发现无法访问网络
解决:

点击(此处)折叠或打开

  1. 若是物理机能够正常上网的话,检查是否有peth0,peth0是虚拟机和物理机桥接的通道(类似于网关),每个虚拟机的的虚拟网卡为vifx.0,x为1-n
  2. [root@manage-vm network-scripts]# ifconfig
  3. eth0 Link encap:Ethernet HWaddr 14:FE:B5:CB:9F:1A
  4. inet addr:192.168.60.7 Bcast:192.168.60.255 Mask:255.255.255.0
  5. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  6. RX packets:2204442 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:1264 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:0
  9. RX bytes:238326360 (227.2 MiB) TX bytes:58256 (56.8 KiB)
  10.  
  11. eth1 Link encap:Ethernet HWaddr 14:FE:B5:CB:9F:1C
  12. inet addr:192.168.60.9 Bcast:192.168.60.255 Mask:255.255.255.0
  13. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  14. RX packets:2244978 errors:0 dropped:0 overruns:0 frame:0
  15. TX packets:23217 errors:0 dropped:0 overruns:0 carrier:0
  16. collisions:0 txqueuelen:1000
  17. RX bytes:291179866 (277.6 MiB) TX bytes:2190094 (2.0 MiB)
  18. Interrupt:26 Memory:d8000000-d8012800
  19.  
  20. lo Link encap:Local Loopback
  21. inet addr:127.0.0.1 Mask:255.0.0.0
  22. UP LOOPBACK RUNNING MTU:16436 Metric:1
  23. RX packets:322 errors:0 dropped:0 overruns:0 frame:0
  24. TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
  25. collisions:0 txqueuelen:0
  26. RX bytes:40429 (39.4 KiB) TX bytes:40429 (39.4 KiB)
  27.  
  28. peth0 Link encap:Ethernet HWaddr 14:FE:B5:CB:9F:1A
  29. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  30. RX packets:2225067 errors:0 dropped:0 overruns:0 frame:0
  31. TX packets:67624 errors:0 dropped:0 overruns:0 carrier:0
  32. collisions:0 txqueuelen:1000
  33. RX bytes:290474214 (277.0 MiB) TX bytes:6094195 (5.8 MiB)
  34. Interrupt:25 Memory:d6000000-d6012800
  35.  
  36. vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
  37. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  38. RX packets:5268 errors:0 dropped:0 overruns:0 frame:0
  39. TX packets:2204487 errors:0 dropped:40 overruns:0 carrier:0
  40. collisions:0 txqueuelen:500
  41. RX bytes:293456 (286.5 KiB) TX bytes:270094777 (257.5 MiB)
若是发现有virbr0,则表示是因为安装系统时安装了vir客户端则系统会出现virbr0,xen则没有peth0
 

点击(此处)折叠或打开

  1. brctl delbr virbr0
  2. /etc/xen/scripts/network-bridge start
  3. 从setup里禁止 libvirt,libvirt-guest服务
网桥如果可以通信,vif0.0,vifX.0,peth0必须在一个网桥之下!
brctl可以管理所有的网桥
常用的是brctl show,brctl del,brctl add
end



(责任编辑:IT)
------分隔线----------------------------