在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
[root@xen xen]# yum -y install lvm2 lvm2-devel
2、創建卷組和邏輯卷
[root@xen xen]# mkdir /mnt/vmdisk
[root@xen 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/秒
[root@xen xen]# losetup /dev/loop1 /mnt/vmdisk/mydisk1
[root@xen xen]# pvcreate /dev/loop1
Physical volume "/dev/loop1" successfully created
[root@xen xen]# pvs
PV VG Fmt Attr PSize PFree
/dev/loop1 lvm2 ---- 1000.00m 1000.00m
[root@xen xen]# vgcreate -s 512M myvg01 /dev/loop1
Volume group "myvg01" successfully created
[root@xen xen]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg01 1 0 0 wz--n- 512.00m 512.00m
[root@xen xen]# lvcreate -L 512M -n mylv01 myvg01
Logical volume "mylv01" created.
[root@xen xen]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv01 myvg01 -wi-a----- 512.00m
3、下載網絡啟動映像
[root@xen xen]# mkdir -p /var/lib/xen/images/ubuntu-netboot
[root@xen xen]# cd /var/lib/xen/images/ubuntu-netboot/
[root@xen 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
[root@xen 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、創建虛擬機配置文件
[root@xen ubuntu-netboot]# vi /etc/xen/ubuntu.cfg
[root@xen 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、啟動虛擬機
[root@xen ubuntu-netboot]# xl create -c /etc/xen/ubuntu.cfg
6、查看虛擬機狀態
[root@xen ~]# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 1024 1 r----- 117.0
ubuntu-vm1 1 512 1 --p--- 0.0
6、待系統安裝完成後,修改虛擬機配置文件
[root@xen xen]# vi /etc/xen/ubuntu.cfg
[root@xen 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"
[root@xen xen]# xl create /etc/xen/ubuntu.cfg
Parsing config from /etc/xen/ubuntu.cfg
[root@xen xen]# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 1024 1 r----- 465.7
ubuntu-vm1 9 512 1 r----- 4.6
[root@xen xen]# xl console 9
註意事項:
如果出現如下錯誤:
[root@xen 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創建虛擬機之前,啟用該守護進程可以解決該錯誤。
解決方法:
[root@xen ubuntu-netboot]# /usr/sbin/xenconsoled --pid-file=/var/run/xenconsoled.pid
[root@xen 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、創建虛擬機磁盤文件
[root@xen ~]# mkdir -p /images/xen/
[root@xen ~]# touch /images/xen/centos
[root@xen ~]# dd if=/dev/zero of=/images/xen/centos bs=1024M count=10
2、創建目錄並下載網絡啟動映像
[root@xen ~]# mkdir -p /var/lib/xen/images/centos
[root@xen ~]# cd /var/lib/xen/images/centos/
[root@xen centos]# wget https://mirrors.aliyun.com/centos/6/os/x86_64/images/pxeboot/vmlinuz
[root@xen centos]# wget https://mirrors.aliyun.com/centos/6/os/x86_64/images/pxeboot/initrd.img
[root@xen 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、創建虛擬機配置文件
[root@xen 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、啟動虛擬機
[root@xen centos]# xl create -c /etc/xen/centos6.5.cfg
5、安裝操作系統
6、修改虛擬機配置文件
[root@xen xen]# vi /etc/xen/centos6.5.cfg
[root@xen 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、使用新的配置文件創建虛擬機並連接
[root@xen xen]# xl create /etc/xen/centos6.5.cfg
Parsing config from /etc/xen/centos6.5.cfg
[root@xen ~]# 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
[root@xen ~]# xl console 17
在XEN虛擬化環境中創建PV模式虛擬機