xen操作搜集
1,登陆物理机器2,查看物理机建立虚拟机的列表
root:~ # xm li
Name ID Mem VCPUs State Time(s)
Domain-0 0 49450 8 r-----52615.6
vm0001 832048 2 -b---- 86.7
vm0004 14096 8 -b---- 3545138.5
vm1001 32048 2 -b---- 625.1
3,查看物理机对应各自虚拟机存放的路径(比如我想查看vm1001具体存放在哪个磁盘)
root:~ # xm li -l |grep "vm1001"
(name vm1001)
(uname file://opt/xen/image/vm1001.img)
(uname file://opt/xen/image/vm1001.log.img)
可以看到具体的存放路径
4,如果么台机器挂死,想重启该机器
root:~ # xm shutdown vm1001 或者直接用ID号来取代名字 比如vm1001对应的id号就是3xm shutdown 3
5,如果机器想强制重启,将上面的步骤由shutdown 换成 destroy 即可
6,如果创建虚拟机,创建脚本示例如下
Usage: ./createvm.sh hostname ip disksize memory(./createvm.sh vmtest 10.6.2.199 10 512)
脚本内容
#!/bin/bash
function mk_img_log() {
dname=$1
ddsize=$2
if [ -e "$dname" ] ; then
echo "$dname exist"
exit -1
fi
if [ "$ddsize" -gt "0" ] ; then
dd if=/dev/zero of="$dname" bs=1G count=0 seek=$ddsize
mkfs -t reiserfs -f -q "$dname"
fi
}
function mk_img_disk() {
dname=$1
ddsize=$2
if [ -e "$dname" ] ; then
echo "$dname exist"
exit -1
fi
if [ "$ddsize" -gt "0" ] ; then
dd if=/dev/zero of="$dname" bs=1G count=$ddsize
mkfs -t reiserfs -f -q "$dname"
sed -i "s/^#//" $diskpath/etc/vm*.sxp
fi
}
hostname=$1
vmip=$2
dsize=$3
msize=$4
vcpus=2
logsize=50
pfvmip=`echo "$vmip" | awk -F. '{print $4}'`
[ "$#" -ne "4" ] && echo "Usage: $0 hostname ip disksize memory" && exit
diskpath=`pwd`
gw=$(echo $vmip|sed 's/*$/1/')#局域网网关
vmmac=00:16:$(echo $vmip|awk -F'.' '{printf("%02X:%02X:%02X:%02X",$1,$2,$3,$4)}')
vmname=vm$(echo $vmip|awk -F'.' '{print ($2* 1000 + $4)}')
os_disk="/$diskpath/image/${vmname}.img"
data_disk="/$diskpath/image/${vmname}.disk.img"
log_disk="/$diskpath/image/${vmname}.log.img"
mkdir -p etc image mnt
#下面一直到End-of-sxp为sxp文件内容
cat > etc/${vmname}.sxp <<End-of-sxp
name="${vmname}"
memory=$msize
vcpus=$vcpus
on_poweroff="destroy"
on_reboot="restart"
on_crash="destroy"
localtime=0
builder="linux"
bootloader="/usr/bin/pygrub"
bootargs=""
extra=" "
disk=[ 'file:$os_disk,xvda,w',
#'file:$data_disk,xvdd1,w',
'file:$log_disk,xvde1,w',
'file:/vm/iso/SLES-11-SP1-x86_64.iso,xvdb:cdrom,r',
]
vif=[ 'mac=${vmmac}',]
vfb=['type=vnc,vncunused=1']
End-of-sxp
tar zxvf /vm/suse11-x64.img.tar.gz
mv `pwd`/vm/suse11-x64.img $diskpath/image/$vmname.img
mk_img_disk "$diskpath/image/$vmname.disk.img" $dsize
mk_img_log "$diskpath/image/$vmname.log.img" $logsize
mount -o loop,offset=1069286400 image/$vmname.img mnt
sed -e "s/\(^IPADDR=.*\)/IPADDR=\"$vmip\"/" -i mnt/etc/sysconfig/network/ifcfg-eth0
echo "xen.independent_wallclock = 1" >> mnt/etc/sysctl.conf
sed -e "/\(^## server xx.*\)/a server 10.0.0.3\nserver pool.ntp.org" -i mnt/etc/ntp.conf
echo "default $gw - -" > mnt/etc/sysconfig/network/routes #默认网关
echo $hostname > mnt/etc/HOSTNAME
umount mnt
rm -r mnt
其中mount -o loop,offset=? image/$vmname.img mnt是把虚拟系统磁盘挂载到mnt目录下,进入mnt目录下可以直接操作虚拟机的系统文件。loop代表光盘格式,offset计算方法如下,为系统分区所在img的偏移。
root:/xen # fdisk -lu suse11-x64.img
You must set cylinders.
You can do this from the extra functions menu.
Disk suse11-x64.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks IdSystem
suse11-x64.img1 63 2088449 1044193+82Linux swap / Solaris
suse11-x64.img2 * 2088450 18860309 8385930 83Linux
Partition 2 has different physical/logical endings:
phys=(1023, 254, 63) logical=(1173, 254, 63)
#2088450 * 512 = 偏移
7,创建成功后,要启动虚拟机,找到对应的配置文件,默认在当前创建脚本目录的etc 目录下
xm create vm1001.sxp 或者后面直接跟全路径
8,创建成功后,发现网络不通 或者其他什么原因 导致远程ssh 连不上该机器
先用xm li 查看系统虚拟机对应的ID 号
xm console ID号 或者名字(输入Ctrl+']'跳出)
9,sxp 文件详解
name="vm1001" #虚拟机名字
memory=1024#虚拟机内存1G
vcpus=1#虚拟机cpu个数
on_poweroff="destroy"#强制关闭虚拟机指令
on_reboot="restart" #重启虚拟机指令
on_crash="destroy"
localtime=0
builder="linux"
bootloader="/usr/lib/xen/boot/domUloader.py"
bootargs="--entry=xvda2:/boot/vmlinuz-xen,/boot/initrd-xen"
extra=" "
disk=[ 'file://disk/62b53a33-e8d9-49ae-b7b9-97024d64ef1c/image/vm1001.img,xvda,w',
'file://disk/62b53a33-e8d9-49ae-b7b9-97024d64ef1c/image/vm1001.log.img,xvde1,w',
'file:/vm/iso/SLES-11-SP1-x86_64.iso,xvdb:cdrom,r',
]
vif=[ 'mac=00:16:0A:06:02:6D',] #虚拟机MAC地址,保证局域网内唯一性
vfb=['type=vnc,vncunused=1']
参考网页如下:
使用 Virtual Machine Manager 管理虚拟机
如何快速创建 Xen 虚拟机镜像
XEN配置参数解释
页:
[1]