admin 发表于 2019-9-28 15:14:53

Linux下使用Xen搭建虚拟机

一、安装前检查
1)查看你的主机cpu是否支持虚拟化:输入命令 cat /proc/cpuinfo | grep flags ,查看结果中有没有 pae ,若有则支持半虚拟化,再看有没有 vmx(intel) 或 svm((amd) ,若有,则支持全虚拟化。
2 )查看虚拟化是否打开:
grep -E 'svm|vmx' /proc/cpuinfo

如果有返回。就说明你的cpu打开虚拟化
 
二、Xen的安装步骤如下所示
首先使用rpm –qa|grep xen检查系统是否已经安装了xen相关程序包
安装Xen 

安装有几种方式,可供选择,你只需选择其中之一即可。


方式一:类windows安装。
类似windows下的安装。具体操作为:
用鼠标点击左上角  应用程序 -> 添加或删除软件 -> 虚拟化,选中安装即可。


方式二:命令行安装。

# yum -y install xen*

安装XEN需要的服务

#yum -y install virt-manager
安装虚拟化管理程序包

# yum -y install kernel-xen*

安装XEN的相关内核

方式三:源码包安装
1,下载。可以到www.xensource.com。
2,解压。tar
3,进入目录。cd
4,make KERNELS="Linux-2.6-xen0 linux-2.6-xenU" world
这一步需要一些第三方包,如python。需要什么就安装什么就可以。编译完成后,会在dist目录生成需要安装的东西。
5,make install
如果以上步骤出错,请Google或Baidu之。安装完毕后,你会发现在/boot下新安装了三个东西:xen-3.1.0.gz,vmlinuz-2.6.18-xen0和vmlinuz-2.6.18-xenU。xen-3.1.0.gz是hyperviser,或者叫VMM;内核xen0是运行在domain0的,内核xenU运行在其它的domain。


二、检测

1、检查xen内核文件

安装是否正常:文件位于/boot

# ls -lh /boot

2、修改系统启动内核为支持xen的kernel
# vi /etc/grub.conf
把default改成0,表示启动第一个内核

3、重新启动主机(reboot)

4、检查系统是否已经成功加载支持虚拟化的kernel

(1) 执行# uname –a

Linux slave1 2.6.18-371.4.1.el5xen #1 SMP Thu Jan 30 08:58:16 EST 2015 x86_64 x86_64 x86_64 GNU/Linux 表示已安装成功

(2) xen启动停止命令 xend start|stop|restart

 
三、创建虚拟机
 
1、创建镜像文件 dd if /dev/zero of=/home/test/vm.img bs=1M count=10240
2、创建配置文件 vm.cfg
name = "test01" maxmem = 1024 memory = 1024 vcpus = 1 builder = "hvm" kernel = "/usr/lib/xen/boot/hvmloader" boot = "d" pae = 1 acpi = 0 apic = 0 arch = "x86_64" localtime = 0 on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" device_model = "/usr/lib64/xen/bin/qemu-dm" sdl = 0 vnc = 1 vncunused = 1 vncconsole = 1 vncdisplay = 4 disk = [ "file:/home/test/vm.img,hda,w","file:/root/CentOS-6.4-x86_64-minimal.iso,hdc:cdrom,r"] vif = [ "mac=00:16:3e:5d:11:22,bridge=xenbr0,script=vif-bridge" ] parallel = "none" nographic = 0 serial = "pty"
3、创建虚拟机 vm create /home/test/vm.cfg
4、xm list 查看虚拟机
5、查看防火墙状态:service iptables status
6、查看开放的端口:netstat -tunlp 将设置的端口加入到开发端口中vi /etc/sysconfig/iptables
7、service iptables restart 重新启动
8、使用vnc 登陆虚拟机安装相应的系统

admin 发表于 2019-9-28 15:15:53

1.创建虚拟机映像

dd if=/dev/zero of=xen.img bs=1M count=16000

dd if=/dev/zero of=xen2.img bs=1M count=16000

mkfs -t ext3 xen.img

mkfs -t ext3 xen2.img

mount -o loop /domU/xen.img /mnt

cp -ax /{bin,dev,etc,lib,lib64,opt,root,sbin,usr,var} /mnt

mkdir /mnt/{home,proc,selinux,srv,sys,tmp}

创建swap盘

mkswap /slview/swap1.img

vi /mnt/etc/fstab

/dev/hda1               /                     ext3    defaults      1 1

tmpfs                   /dev/shm                tmpfs   defaults,size=1024m      0 0

devpts                  /dev/pts                devptsgid=5,mode=6200 0

sysfs                   /sys                  sysfs   defaults      0 0

proc                  /proc                   proc    defaults      0 0

/dev/sdg         swap                  swap   defaults         0 0

---edit network

vi /mnt/etc/sysconfig/network

---edit ifcfg-eth0

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

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.24.210
NETMASK=255.255.255.0
NETWORK=192.168.24.0
BROADCAST=192.168.24.255

-----gen   initrd

mkinitrd -v -f --fstab /mnt/etc/fstab --with xenblk \

--with xennet --preload xenblk --preload xennet \

initrd-2.6.18-194.el5xen.wd.img `uname -r`

umount /mnt

---在/etc/inittab

co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav

>init q

>ln -s /dev/console /dev/xvc0

---创建内网网桥

vi ifcfg-xenbr2
DEVICE=xenbr2
BOOTPROTO=static
ONBOOT=yes
TYPE=Bridge
启动网桥
ifup xenbr2

----编辑虚拟机配置文件

name="oradb1"
kernel="/boot/vmlinuz-2.6.18-238.el5xen"
ramdisk="/boot/initrd-2.6.18-238.el5xen.wd.img"
memory="2048"
vcpus = 2
vif=['mac=00:16:3e:2e:40:cf,bridge=xenbr0','mac=00:16:3e:2e:a9:41,bridge=xenbr1']
disk=['tap:aio:/slview/db1.img,sda1,w','tap:aio:/slview/vot1.img,sdb,w!','tap:aio:/slview/vot2.img,sdc,w!','tap:aio:/slview/ocr1.img
,sdd,w!','tap:aio:/slview/ocr2.img,sde,w!','tap:aio:/root/data1.img,sdf,w!','tap:aio:/slview/swap1.img,sdg,w','tap:aio:/slview/ocr3.
img,sdh,w!','tap:aio:/slview/flash1.img,sdi,w!','tap:aio:/slview/flash2.img,sdj,w!','tap:aio:/root/data2.img,sdk,w!']
root="/dev/sda1 rw"

网桥配置:

修改 Xend 配置文件 /etc/xen/xend-config.sxp ,取消下面两行的注释:

(network-script network-bridge)

(vif-script vif-bridge)

使用brctl show来查看网桥

DomU的config中设置vif = ['bridge=xenbr0']

存储配置

# cat oralinux

name    = "oravm1"

kernel= "/boot/vmlinuz-2.6.18-194.el5xen"

ramdisk = "/boot/initrd-2.6.18-194.el5xen.wd.img"

memory= "256"

vcpus   = 2

vif   = [ 'ip=192.168.1.140,bridge=xenbr0','ip=192.168.100.140,bridge=xenbr1' ]

disk    = [ 'file:/domU/xen.img,hda1,w','file:/domU/sdb.img,sdb,w!','file:/domU/sdc.img,sdc,w!','phy:/dev/mapper/oradata1,sdn,w!' ]

root    = "/dev/hda1 ro "

------------------------------------------------------虚拟机-----------------

强制多虚拟机共享存储

phy:/dev/sda,sda,w!加叹号

需要让xend为两块网卡创建bridge,需要修改/etc/xen/xend-config.sxp,将(network-script 'network-bridge')

改为:

(network-script 'my_network_script')

my_network_script是我们自己的脚本,创建/etc/xen/scripts/my_network_script内容如下:

#!/bin/sh

dir=$(dirname "$0")

"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0

"$dir/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=xenbr1

将my_network_script加上执行权限:

chmod a+x /etc/xen/scripts/my_network_script

重启服务器,可以用ifconfig看到xend创建的4个网络接口

可以看到虚拟交换机上的连接如下:
# brctl show
bridge name   bridge id               STP enabled   interfaces
xenbr0          8000.feffffffffff       no            vif1.0dom1的eth0
                                                      peth0主机的物理网卡0
                                                      vif0.0Dom0的eth0
xenbr1          8000.feffffffffff       no            vif1.1Dom1的eth1
                                                      peth1主机的物理网卡1
                                                      vif0.1Dom0的eth1

编辑虚拟机配置文件:

Error: Device 2048 (vbd) could not be connected. Failed to find an unused loop device

Error: Device 2064 (vbd) could not be connected. losetup -r /dev/loop8 /domU/sdb.img failed

>losetup -a 查看loop设备使用情况

再卸载 loop 模块rmmod loop

>vi /etc/modprobe.conf

options loop max_loop=16

再重新加载 loop 模块检查是否生效

modprobe loopdmesg | grep loop               # 应当能见到 loop: loaded (max 16 devices)

最后建立 loop 设备文件

ls -d /dev/loop*

mknod -m0660 /dev/loop9 b 7 8   

chown root:disk /dev/loop9

mknod loop8 b 7 8

mknod loop9 b 7 9

Q: ADDRCONF(NETDEV_UP): vif1.0: link is not ready

A: 将/dev/sda1改为/dev/hda1

Q: 使用vnc报以下错误
# su - grid
-bash-3.2$ xclock
Xlib: connection to ":1.0" refused by server
Xlib: No protocol specified
Error: Can't open display: :1.0

A: 用root帐号执行下列命令既可
xhost + localhost

Q:fdisk分区表无法保存
A:
chmod 755 *.img
file:/slview/db1.img 改成tape:aio:/slview/db1.img

Q:mkrootdev: expected fs options
    mount: missing mount point
    setuproot: moving /dev failed No such file or directory
    setuproot: error mounting /proc: No such file or directory
    setuproot: error mounting /sys: No such file or directory
    switchroot: mount failed: No such file or directory
A:mkinitrd, /fstab内容

Q: /sbin/hwclock: error while loading shared libraries: libaudit.so.0: cannot open shared object file: Permission denied

A: 关闭selinux
页: [1]
查看完整版本: Linux下使用Xen搭建虚拟机