1. 程式人生 > >在XEN虛擬化環境中創建PV模式虛擬機

在XEN虛擬化環境中創建PV模式虛擬機

build rest builder 可以使用的最大內存 新的 pid des 文件路徑 all

如何創建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模式虛擬機