查看xl目錄的幫助:xl help
html
查看xen下安裝了哪些虛擬機:xl list
node
# xl list Domain-0 Name ID Mem VCPUs State Time(s) Domain-0 0 1024 2 r----- 53.1
ID:從0開始的編號,即便中間刪除了某個虛擬機,編號不會重用,繼續往下發。linux
Mem:分配給虛擬機多少內存ios
VCPUS:分配給虛擬機幾個CPU核心c++
State:虛擬機的狀態shell
Time:此虛擬機運行了多久了。centos
建立虛擬機domU微信
首先要指定domu的模式(pv,hvm,pv on hvm)網絡
建立pv模式的domuapp
1,指定kernel,kernel文件放到哪裏?能夠在dom0中,也能夠在domu中
2,initrd或initramfs
3,domu內核模塊
4,根文件系統
5,swap設備
將上述內容定義在domu的配置文件
注意:xm和xl命令啓動domu的配置文件略有區別。
建立domu的配置文件的具體寫法,能夠參考man xl.cfg
name:域名稱,必須惟一,必須有
builder:指明虛擬機的類型。generic表示pv;hvm表示hvm
vcpus:虛擬機使用cpu核心的數量
maxvcpus:最大的cpu核心使用數量,要大於vcpus。當vcpus數量不夠用時,就會增長到maxvcpus
cpus:指明vcpu能夠運行在哪些物理cpu核心
memory=MBYTES:虛擬機使用的內存大小
maxmem=MBYTES:最大內存大小(原理同maxvcpus)
on-poweroff=ACTION:指明當用戶輸入了關機命令後,虛擬機應該怎麼響應。不指定的話,就是關閉虛擬機。
ACTION:destroy(關機),restart(重啓),preserve等
on-reboot=ACTION:指明當用戶輸入了關機命令後,虛擬機應該怎麼響應。不指定的話,就是重啓虛擬機。
on-crash=ACTION:指明當虛擬機崩潰時,應該怎麼響應
uuid:domu的惟一標識
disk=[ "DISK_SPEC_STRING", "DISK_SPEC_STRING", ...]:指明磁盤設備列表。
有2種方式指定磁盤。一個是使用磁盤映像文件;另外一個是dom0在物理磁盤上劃分一個分區給domu使用,這種方式性能好,但不利於xen的總體遷移。
經常使用選項:[<target>, [<format>, [<vdev>, [<access>]]]],
target:磁盤映像文件
format:磁盤的種類,可使用qemu-img
命令查看,支持的種類有:raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed vhdx parallels nbd blkdebug null host_cdrom host_floppy host_device file gluster
vdev:在domu種的設備文件類型,支持hd[x], xvd[x], sd[x] 等
access:訪問權限
ro
, r
(specifies read-only)
rw
, w
(specifies read/write)
disk=[ "/images/xen/linux.img,raw,xvda,rw"]
用qemu-img
建立磁盤映像:qemu-img create [-f fmt] [-o options] filename [size]
用-o?,查看都有什麼options
# qemu-img create -f raw -o? /images/xen/busybox.img Supported options: size Virtual disk size preallocation Preallocation mode (allowed values: off, falloc, full)
下面的命令建立了一個大小爲2G的,格式爲raw的磁盤映像文件,但實際是0字節。
# qemu-img create -f raw -o size=2G /images/xen/busybox.img # qemu-img create -f raw /images/xen/busybox.img 2G Formatting '/images/xen/busybox.img', fmt=raw size=2147483648 # ll -h -rw-r--r--. 1 root root 2.0G Feb 1 11:51 busybox.img # du -sh busybox.img 0 busybox.img
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插槽的設備列表。
kernel="PATHNAME":內核文件路徑,此路徑爲dom0中的路徑
ramdisk="PATHNAME":爲kernel指定內核提供的ramdisk文件路徑
root="STRING":指明根文件系統。
extra="STRING":額外傳遞給內核引導時使用的參數。
pv模式下的專用的bootloader="PROGRAM":若是domu使用本身的kernel和ramdisk,此時須要一個dom0中的應用程序來實現其bootloader功能。
要麼使用kernel和ramdisk的組合,要麼使用bootloader。
1,建立一個磁盤映像
# qemu-img create -f raw -o size=2G /images/xen/busybox.img # qemu-img create -f raw /images/xen/busybox.img 2G Formatting '/images/xen/busybox.img', fmt=raw size=2147483648 # ll -h -rw-r--r--. 1 root root 2.0G Feb 1 11:51 busybox.img # du -sh busybox.img 0 busybox.img
2,給磁盤分區建立ext4文件系統
不給此磁盤映像分區了,就按一個分區使用。分區命令(fdisk)
# mkfs -t ext2 busybox.img mke2fs 1.41.12 (17-May-2010) busybox.img is not a block special device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 39 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
會提示【busybox.img is not a block special device.】,輸入y回車。
使用df和du命令確認一下,文件系統的類型和分區的實際大小。分區大小不是0了,變成了97M了,由於在分區裏安裝了文件系統。
# df -T busybox.img Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_c610-lv_root ext4 6795192 2644828 3782136 42% / [root@c610 xen]# du -sh busybox.img 97M busybox.img
3,掛載此文件系統到/mnt目錄。
掛載本地迴環文件(ios文件,img文件等)
# mount -o loop busybox.img /mnt [root@c610 xen]# ls /mnt/ lost+found
發現有了文件lost+found,說明掛載成功。
如今就能夠在此文件系統裏安裝操做系統了。爲了簡單起見,用busybox模擬操做系統。因此編譯安裝busybox。
到此爲止咱們發現,對domu的分區建立,文件系統建立等,都是在dom0裏操做進行的。
爲了編譯,先安裝開發環境:
# yum -y groupinstall "Development Tolls" "Server Platform Development"
下載busybox源代碼,解壓縮源代碼壓縮包
# tar xf busybox.tar.bz2
若是在操做系統上安裝busybox的話,busybox使用的庫是操做系統上的動態庫,但咱們domu上沒有操做系統,因此就沒有庫能夠供busybox使用,因此編譯busybox時,就須要把所使用的庫靜態鏈接進busybox,因此先安裝busybox所使用的靜態庫。
# yum -y install glibc-static # yum -y install gcc
配置busybox的編譯選項:
# make menuconfig
出現以下畫面:
勾選:Build Busybox as a static binary (no shared libs),保存退出
編譯:make
安裝:make install
安裝成功後,會出現[_install]目錄,把此目錄裏的全部內容,並保持原屬性,複製到掛載這domu文件系統的/mnt目錄下。
# cp -a _install/* /mnt
查看/mnt目錄:
# ll drwxr-xr-x. 2 root root 4096 Feb 1 14:17 bin lrwxrwxrwx. 1 root root 11 Feb 1 14:17 linuxrc -> bin/busybox drwx------. 2 root root 16384 Feb 1 12:30 lost+found drwxr-xr-x. 2 root root 4096 Feb 1 14:17 sbin drwxr-xr-x. 4 root root 4096 Feb 1 14:17 usr
發現已經有了幾個目錄,但還缺乏幾個目錄,在/mnt下手動建立這些目錄。最主要的是proc,sys,dev。
# mkdir proc sys dev etc var boot home
嘗試使用busybox裏的sh
# chroot /mnt /bin/sh / # ls bin dev home lost+found sbin usr boot etc linuxrc proc sys var / #
發現咱們建立的目錄都存在,說明一切正常。
到此爲止,domu的根文件系統,咱們已經準備穩當了,就差啓動文件了。
前面說過,centos6不能安裝在dom0上,可是能夠安裝在domu上,全部就直接使用原來centos上的啓動文件.
在/boot下建立一個軟鏈接。
# ln -sv vmlinuz-2.6.32-754.el6.x86_64 vmlinuz `vmlinuz' -> `vmlinuz-2.6.32-754.el6.x86_64' # ll -h lrwxrwxrwx. 1 root root 29 Feb 1 14:30 vmlinuz -> vmlinuz-2.6.32-754.el6.x86_64 -rwxr-xr-x. 1 root root 4.2M Jun 20 2018 vmlinuz-2.6.32-754.el6.x86_64
在/boot下再建立一個軟鏈接
# ln -sv initramfs-2.6.32-754.el6.x86_64.img initramfs.img `initramfs.img' -> `initramfs-2.6.32-754.el6.x86_64.img' # ll -h lrwxrwxrwx. 1 root root 35 Feb 1 14:32 initramfs.img -> initramfs-2.6.32-754.el6.x86_64.img -rw-------. 1 root root 5.9M Jan 31 14:16 initrd-2.6.32-754.el6.x86_64kdump.img
建立xl命令,建立domu所使用的配置文件,配置文件放在/etc/xen目錄。xlexample是例子。
xl.conf文件是xl命令本身的配置文件。
# cd /etc/xen # ll total 24 drwx------. 2 root root 4096 Dec 12 20:07 auto -rw-r--r--. 1 root root 661 Dec 11 20:44 cpupool drwx------. 2 root root 4096 Jan 31 14:56 scripts -rw-r--r--. 1 root root 1436 Dec 11 20:44 xl.conf -rw-r--r--. 1 root root 1386 Dec 11 20:44 xlexample.hvm -rw-r--r--. 1 root root 1250 Dec 11 20:44 xlexample.pvlinux
複製xlexample.pvlinux
# cp xlexample.pvlinux busybox.pvlinux
修改busybox.pvlinux文件
由於咱們使用的dom0裏的內核文件,dom0裏是使用SELinux功能的,咱們要關閉它。
name = "busybox001.pvlinux" kernel = "/boot/vmlinuz" #ramdisk = "/boot/initrd.gz" ramdisk = "/boot/initramfs.img" extra = "selinux=0 init=/bin/sh" memory = 256 vcpus = 2 #vif = [ '' ] disk = [ '/images/xen/busybox.img,raw,xvda,rw' ] root = "/dev/xvda ro"
建立domu# xl help create
# xl help create Usage: xl [-vfN] create <ConfigFile> [options] [vars] Create a domain from config file <filename>. Options: -h Print this help. -p Leave the domain paused after it is created. -c Connect to the console after the domain is created. -f FILE, --defconfig=FILE Use the given configuration file. -q, --quiet Quiet. -n, --dryrun Dry run - prints the resulting configuration (deprecated in favour of global -N option). -d Enable debug messages. -F Run in foreground until death of the domain. -e Do not wait in the background for the death of the domain. -V, --vncviewer Connect to the VNC display after the domain is created.
xl [-vfN]裏的v:顯示詳細信息;f:xl命令使用哪一個配置文件,不指定的話默認使用/etc/xen/xl.conf
<ConfigFile>:建立domu所使用的配置文件
options裏的-d:debug模式;-n:試驗運行
# xl -v create busybox.pvlinux -n Parsing config from busybox.pvlinux { "c_info": { "type": "pv", "name": "busybox001.pvlinux", "uuid": "23537733-95f2-44d5-84d5-07aa76282134", "run_hotplug_scripts": "True" }, "b_info": { "max_vcpus": 2, "avail_vcpus": [ 0, 1 ], "max_memkb": 262144, "target_memkb": 262144, "shadow_memkb": 4096, "sched_params": { }, "claim_mode": "True", "kernel": "/boot/vmlinuz", "cmdline": "root=/dev/xvda ro", "ramdisk": "/boot/initramfs.img", "type.pv": { }, "arch_arm": { } }, "disks": [ { "pdev_path": "/images/xen/busybox.img", "vdev": "xvda", "format": "raw", "readwrite": 1 } ], "on_reboot": "restart", "on_soft_reset": "soft_reset"
查看試驗運行的結果,若是沒有問題,就建立
[root@c610 xen]# xl -v create busybox.pvlinux
建立成功
# xl -v create busybox.pvlinux # xl list Name ID Mem VCPUs State Time(s) Domain-0 0 1024 2 r----- 748.7 busybox001.pvlinux 3 256 2 r----- 2.4