在XEN虚拟化环境中创建PV模式虚拟机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在XEN虚拟化环境中创建PV模式虚拟机相关的知识,希望对你有一定的参考价值。
如何创建xen pv模式:
1、kernel
2、initrd或者initramfs
3、DomU内核模块
4、根文件系统
5、swap设备
将上述内容定义在DomU的配置文件
注意:xm与xl启动DomU使用的配置文件略有不同
对于xl而言,其创建DomU使用的配置指令可通过"man xl.cfg"获取
常用指令:
name:域唯一的名称
builder:指明虚拟机的类型,generic表示pv,hvm表示hvm
vcpus:虚拟cpu的个数
maxcpus:最大虚拟cpu个数
cpus:vcpu可运行于其上的物理CPU列表
memory=MBYTES:内存大小
maxmem=MBYTES:可以使用的最大内存空间
on_poweroff:指明关机时采取的action,比如destory, restart, preserve
on_reboot="ACTION":指明"重启"DomU时采取的action
on_crash="ACTION":虚拟机意外崩溃时采取的action
uuid:DomU的唯一标识
disk=[ "DISK_SPEC_STRING", "DISK_SPEC_STRING", ...]:指明磁盘设备,列表
vif=[ "NET_SPEC_STRING", "NET_SPEC_STRING", ...]:指明网络接口,列表
vfb=[ "VFB_SPEC_STRING", "VFB_SPEC_STRING", ...]:指明virtual frame buffer, 列表
pci=[ "PCI_SPEC_STRING", "PCI_SPEC_STRING", ...]:pci设备的列表
PV模式专用指令:
kernel="PATHNAME":内核文件路径,此为Dom0中的路径
ramdisk="PATHNAME":为kernel指定内核提供的ramdisk文件路径
root="STRING":指明根文件系统
extra="STRING":额外传递给内核引导时使用的参数
bootloader="PROGRAM":如果DomU使用自己的kernel及ramdisk,此时需要一个Dom0中的应用程序来实现其bootloader功能
磁盘参数指定方式:
[<target>,[<format>,[<vdev>,[<access>]]]]
<target>表示磁盘映像文件或设备文件路径,如/images/xen/linux.img, /dev/myvg/linux
<format>表示磁盘格式,如果映像文件,有多种格式,例如raw, qcow, qcow2
vdev:此设备在DomU被识别为硬件设备类型,支持hd[x], xvd[x], sd[x]
access:访问权限
ro, r:只读
rw, w:读写
例如:disk=[ "/images/xen/linux.img, raw, xvda, rw", ]
使用qemu-img管理磁盘映像:
create [-f fmt] [-o options] filename [size]
可创建sparse格式的磁盘映像文件
如何配置网络接口:
vif = [ '<vifspec>','<vifspec>', ... ]
vifspec:[<key>=<value>|<flag>,]
常用的key:
mac=:指定mac地址,要以"00:16:3e"开头
bridge=<bridge>:指定此网络接口在Dom0被关联至哪个桥接设备上
model=<model>:
vifname=:接口名称,在Dom0中显示的名称
script=:执行的脚本
ip=:指定ip地址,会注入到DomU中
rate=:指明设备传输速率,通常为"#UNIT/s"格式
UNIT: GB, MB, KB, B
Gb, Mb, Kb, b
例如:vif = [ 'bridge=xenbr0' ]
创建一个PV格式的vm:
(1) 准备磁盘映像文件
qemu-img create -f raw -o size=2G /images/xen/busybox.img
mk2fs -t ext /images/xen/busybox.img
(2) 提供根文件系统
编译busybox, 并复制到busybox.img映像中
mount -o /images/xen/busybox.img /mnt
cp -a $BUSYBOX/_install/* /mnt
mkdir /mnt/{proc,sys,dev,var}
(3) 提供DomU配置文件
name = "busybox-001"
kernel = "/boot/vmlinuz"
ramdisk = "/boot/initramfs.img"
extra = "selinux=0 init=/bin/sh"
memory = 256
vcpus = 2
disk = [ '/images/xen/busybox.img,raw,xvda,rw' ]
root = "/dev/xvda ro"
(4) 启动实例
xl [-v] create <DomU_Config_file> -n
xl create <DomU_Config_file> -c
注:因为编译busybox需要安装Linux开发库,且需要图形界面,所以这里不进行busybox的演示,有需要可以去看马哥Linux培训视频。当然,你也可以参照如下链接:https://blog.csdn.net/qq_33932782/article/details/53983726?locationNum=2&fps=1
创建PV模式的ubuntu虚拟机:
1、安装LVM
[[email protected] xen]# yum -y install lvm2 lvm2-devel
2、创建卷组和逻辑卷
[[email protected] xen]# mkdir /mnt/vmdisk
[[email protected] xen]# dd if=/dev/zero of=/mnt/vmdisk/mydisk1 bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,26.7937 秒,39.1 MB/秒
[[email protected] xen]# losetup /dev/loop1 /mnt/vmdisk/mydisk1
[[email protected] xen]# pvcreate /dev/loop1
Physical volume "/dev/loop1" successfully created
[[email protected] xen]# pvs
PV VG Fmt Attr PSize PFree
/dev/loop1 lvm2 ---- 1000.00m 1000.00m
[[email protected] xen]# vgcreate -s 512M myvg01 /dev/loop1
Volume group "myvg01" successfully created
[[email protected] xen]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg01 1 0 0 wz--n- 512.00m 512.00m
[[email protected] xen]# lvcreate -L 512M -n mylv01 myvg01
Logical volume "mylv01" created.
[[email protected] xen]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv01 myvg01 -wi-a----- 512.00m
3、下载网络启动映像
[[email protected] xen]# mkdir -p /var/lib/xen/images/ubuntu-netboot
[[email protected] xen]# cd /var/lib/xen/images/ubuntu-netboot/
[[email protected] ubuntu-netboot]# wget http://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/vmlinuz
wget http://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/initrd.gz
[[email protected] ubuntu-netboot]# ll
总用量 26404
-rw-r--r--. 1 root root 21256771 4月 16 2014 initrd.gz
-rw-r--r--. 1 root root 5778968 4月 16 2014 vmlinuz
4、创建虚拟机配置文件
[[email protected] ubuntu-netboot]# vi /etc/xen/ubuntu.cfg
[[email protected] ubuntu-netboot]# cat /etc/xen/ubuntu.cfg
name = "ubuntu-vm1"
memory = 512
disk = [ 'phy:/dev/myvg01/mylv01,xvda,w' ]
vif = [ 'bridge=br0' ]
kernel = "/var/lib/xen/images/ubuntu-netboot/vmlinuz"
ramdisk = "/var/lib/xen/images/ubuntu-netboot/initrd.gz"
extra = "debian-installer/exit/always_halt=true --console=hvc0"
5、启动虚拟机
[[email protected] ubuntu-netboot]# xl create -c /etc/xen/ubuntu.cfg
6、查看虚拟机状态
[[email protected] ~]# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 1024 1 r----- 117.0
ubuntu-vm1 1 512 1 --p--- 0.0
6、待系统安装完成后,修改虚拟机配置文件
[[email protected] xen]# vi /etc/xen/ubuntu.cfg
[[email protected] xen]# cat /etc/xen/ubuntu.cfg
name = "ubuntu-vm1"
memory = 512
disk = [ 'phy:/dev/myvg01/mylv01,xvda,w' ]
vif = [ 'bridge=br0' ]
#kernel = "/var/lib/xen/images/ubuntu-netboot/vmlinuz"
#ramdisk = "/var/lib/xen/images/ubuntu-netboot/initrd.gz"
bootloader = "/usr/lib/xen/bin/pygrub"
#extra = "debian-installer/exit/always_halt=true --console=hvc0"
[[email protected] xen]# xl create /etc/xen/ubuntu.cfg
Parsing config from /etc/xen/ubuntu.cfg
[[email protected] xen]# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 1024 1 r----- 465.7
ubuntu-vm1 9 512 1 r----- 4.6
[[email protected] xen]# xl console 9
注意事项:
如果出现如下错误:
[[email protected] ubuntu-netboot]# xl create -c /etc/xen/ubuntu.cfg
Parsing config from /etc/xen/ubuntu.cfg
xenconsole: Could not read tty from store: Success
问题原因:
xenconsoled守护进程未启动,在指定-c创建虚拟机之前,启用该守护进程可以解决该错误。
解决方法:
[[email protected] ubuntu-netboot]# /usr/sbin/xenconsoled --pid-file=/var/run/xenconsoled.pid
[[email protected] ubuntu-netboot]# ps -ef|grep xenconsoled
root 4793 1 0 23:58 ? 00:00:00 /usr/sbin/xenconsoled --pid-file=/var/run/xenconsoled.pid
root 4796 3194 0 23:58 pts/0 00:00:00 grep xenconsoled
参照:https://tipstricks.itmatrix.eu/ubuntu-16-10-xenconsole-could-not-read-tty-from-store-success/ (国外站点)
创建PV模式的CentOS虚拟机:
1、创建虚拟机磁盘文件
[[email protected] ~]# mkdir -p /images/xen/
[[email protected] ~]# touch /images/xen/centos
[[email protected] ~]# dd if=/dev/zero of=/images/xen/centos bs=1024M count=10
2、创建目录并下载网络启动映像
[[email protected] ~]# mkdir -p /var/lib/xen/images/centos
[[email protected] ~]# cd /var/lib/xen/images/centos/
[[email protected] centos]# wget https://mirrors.aliyun.com/centos/6/os/x86_64/images/pxeboot/vmlinuz
[[email protected] centos]# wget https://mirrors.aliyun.com/centos/6/os/x86_64/images/pxeboot/initrd.img
[[email protected] centos]# ll
总用量 36636
-r--r--r--. 1 root root 33383679 7月 17 2017 initrd.img
-r-xr-xr-x. 1 root root 4128368 7月 17 2017 vmlinuz
3、创建虚拟机配置文件
[[email protected] centos]# cat /etc/xen/centos6.5.cfg
name = "centos6.5"
vcpus = 1
memory = 512
disk = [ 'file:/images/xen/centos,xvda,w' ]
vif = [ 'bridge=br0' ]
on_reboot = "restart"
on_poweroff = "destroy"
on_crash = "restart"
kernel = "/var/lib/xen/images/centos/vmlinuz"
ramdisk = "/var/lib/xen/images/centos/initrd.img"
4、启动虚拟机
[[email protected] centos]# xl create -c /etc/xen/centos6.5.cfg
5、安装操作系统
6、修改虚拟机配置文件
[[email protected] xen]# vi /etc/xen/centos6.5.cfg
[[email protected] xen]# cat /etc/xen/centos6.5.cfg
name = "centos6.5"
vcpus = 1
memory = 512
disk = [ 'file:/images/xen/centos,xvda,w' ]
vif = [ 'bridge=br0' ]
on_reboot = "restart"
on_poweroff = "destroy"
on_crash = "restart"
#kernel = "/var/lib/xen/images/centos/vmlinuz"
#ramdisk = "/var/lib/xen/images/centos/initrd.img"
bootloader = "pygrub"
7、使用新的配置文件创建虚拟机并连接
[[email protected] xen]# xl create /etc/xen/centos6.5.cfg
Parsing config from /etc/xen/centos6.5.cfg
[[email protected] ~]# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 1024 1 r----- 1277.9
centos6.5 17 512 1 -b---- 13.0
ubuntu-vm1 18 512 1 -b---- 8.5
[[email protected] ~]# xl console 17
以上是关于在XEN虚拟化环境中创建PV模式虚拟机的主要内容,如果未能解决你的问题,请参考以下文章