xen虚拟机操作整理
1,登陆物理机器
2,查看物理机建立虚拟机的列表
root:~ # xm li
Name ID Mem VCPUs State Time(s)
Domain-0 0 49450 8 r----- 52615.6
centos1 83 2048 2 -b---- 86.7
centos5 1 4096 8 -b---- 3545138.5
centos3 3 2048 2 -b---- 625.1 其中
State:
r -> 运行状态
b -> 阻塞状态,未占用cpu时间片(如等待IO)或不可运行(启动失败)
p -> 暂停状态(一般是xm pause),仍消耗内存,但不会被虚拟机调度
s -> 正在关闭状态(reboot/destroy/shutdown)
d -> dying state,没有完全关闭
3,查看物理机对应各自虚拟机存放的路径(比如我想查看centos1具体存放在哪个磁盘)
root:~ # xm li -l |grep "centos1"
(name centos1)
(uname file://opt/xen/image/centos1.img)
可以看到具体的存放路径
4,如果某台虚拟机挂死,想重启该机器
root:~ # xm shutdown centos1 或者直接用ID号来取代名字 比如centos1对应的id号就是83 xm shutdown 83
5,如果想强制重启机器,将上面的步骤由shutdown 换成 destroy 即可,这个可以在sxp文件配置
6,如果想创建虚拟机,可用创建脚本如下
Usage: ./createvm.sh hostname ip disksize[G] memory[M](./createvm.sh vmtest 127.0.0.1 10 512) 脚本内容
#!/bin/bash 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
pfvmip=`echo "$vmip" | awk -F. '{print $4}'` [ "$#" -ne "4" ] && echo "Usage: $0 hostname ip disksize[G] memory[M]" && exit diskpath=`pwd`
gw=$(echo $vmip|sed 's/[0-9]*$/1/') #局域网网关
vmmac=00:16:$(echo $vmip|awk -F'.' '{printf("%02X:%02X:%02X:%02X",$1,$2,$3,$4)}') #配置mac地址
vmname=$hostname
os_disk="/$diskpath/image/${vmname}.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" #全虚拟化和半虚拟化的bootloader配置不同!
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 mount -o loop,offset=1069286400 image/$vmname.img mnt
sed -e "s/\(^IPADDR=.*\)/IPADDR=\"$vmip\"/" -i mnt/etc/sysconfig/network/ifcfg-eth0 #配置ip echo "xen.independent_wallclock = 1" >> mnt/etc/sysctl.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 Id System
suse11-x64.img1 63 2088449 1044193+ 82 Linux swap / Solaris
suse11-x64.img2 * 2088450 18860309 8385930 83 Linux
Partition 2 has different physical/logical endings:
phys=(1023, 254, 63) logical=(1173, 254, 63) #2088450 * 512 = 偏移
7,创建成功后,要启动虚拟机,找到对应的配置文件,默认在当前创建脚本目录的etc 目录下
xm create vmtest.sxp 或者后面直接跟全路径
8,创建成功后,发现网络不通 或者其他什么原因 导致远程ssh 连不上该机器
先用xm li 查看系统虚拟机对应的ID 号
xm console ID号 或者名字(输入Ctrl+']'跳出)
9,sxp 文件详解
name="vmtest" #虚拟机名字
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:/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']
10,其中虚拟镜像img文件的制作方法有好几种
方法1,参照“如何快速创建 Xen 虚拟机镜像”中提到的打包一个现有系统解压到空img文件
tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media /
dd if=/dev/zero of=centos.img bs=1 count=1 seek=10G
mount centos.img /mnt
然后解压centos.tar.gz到/mnt目录,然后umount即可
方法2,在linux图形界面使用virt-manager或命令行virt-install创建虚拟机,最终生成centos.img文件(推荐)
方法3,在linux/mac/windows上用qemu创建虚拟机(qemu性能比较差,该项目后来发展为virtualbox,很久未更新了)
#创建虚拟磁盘
qemu-img.exe create f:\vm\centos.img 8G
#加载安装操作系统
qemu.exe -kernel-kqemu -L . -m 512 -hda f:\vm\centos.img -cdrom f:\TDDOWNLOAD\CentOS-6.4-i386-minimal.iso -boot d
#启动检查
qemu.exe -kernel-kqemu -L . -m 512 -hda f:\vm\centos.img -boot c
参考网页如下:
使用 Virtual Machine Manager 管理虚拟机
如何快速创建 Xen 虚拟机镜像
XEN配置参数解释
the_book_of_xen.pdf
xen虚拟机操作整理的更多相关文章
- Xen虚拟机磁盘镜像模板制作(四)—CentOS 7
在<Xen虚拟机磁盘镜像模板制作(三)—CentOS 7>一文中,我们已经成功制作出了 CentOS7 磁盘镜像.下面我们说明下如何通过它来生成目标虚拟机,同时测试下之前制作好的虚拟机磁盘 ...
- Xen虚拟机磁盘镜像模板制作(二)—Windows Server 2008(2012)
在<Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)>一文中,我们已经成功制作出了Windows Server磁盘镜像.下面我们说明下如何通过它来生成 ...
- xen虚拟机安装实践
xen虚拟机环境安装,用了2天的时间摸索,终于出来了,给大家分享一下. 1.安装宿主环境,我使用的是Centos6.3 2.安装xend,参考了一篇老外的文章,基本比较顺利. 地址:http://xe ...
- Linux 桌面玩家指南:07. Linux 中的 Qemu、KVM、VirtualBox、Xen 虚拟机体验
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 给xen虚拟机添加硬盘分区格式化
给xen虚拟机添加硬盘磁盘分区----xenserver .添加硬盘500G .fdisk -l #在虚拟机上查看一下是否添加上 .fdisk /dev/xvdb(n-p--w) #开始分区,xvdb ...
- SQL不同服务器数据库之间的数据操作整理(完整版)
---------------------------------------------------------------------------------- -- Author : htl25 ...
- 在 Xen 虚拟机下修改系统当前时间
在 Xen 虚拟机下修改系统当前时间 Xen 虚拟机默认不允许不同的虚拟机使用不同的系统时间,因此所有虚拟机的系统时间都会同宿主机的系统时间严格同步,用 date 命令修改虚拟机系统时间时虽然提示成功 ...
- Xen虚拟机克隆实战
导读 在我们使用Xen虚拟化的时候,会经常创建虚拟机(VM),每次安装创建步骤比较繁琐,本文介绍通过virt-clone命令克隆xen虚拟机实战. 查看virt-clone命令是否存在 rpm -qa ...
- Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)
这段时间一直在研究如何制作一个适合Xen虚拟化的Windows Server 2008(2012)磁盘镜像,中间虽然遇到了一些阻挠,不过最终还是顺利解决,成功制作出了Xen Windows Serve ...
随机推荐
- 电脑技巧---完全控制面板---上帝模式(God Mode)
简介 上帝模式,即"God Mode”,或称为“完全控制面板”.是Windows 系统中隐藏的一个简单的文件夹窗口,但包含了几乎所有Windows系统的设置,如控制面板的功能.界面个性化.辅 ...
- Ubuntu14.04 64bit安装Android-Studio
用PPA安装Android-Studio炒鸡简单,墙内亲测可用,就是速度慢了点.(睡觉时开着电脑装-) 安装Android-Studio 打开Terminal,执行: sudo add-apt-rep ...
- PHP查询MYSQL表的主键
$sql = "SELECT * from Person"; $result = mysql_query($sql,$con); while ($property = mysql_ ...
- IronPython初体验和实战集合等类型转换和类型匹配
人老了,做什么都累~学到了这么多技术,从最早C到C++再到JAVA再到C#,最终都是为了改善产品,改善系统的可维护性.众所周知C#,C++,C都是强类型语言,什么情况都得定义一些实体类来改变业务模型, ...
- 一个简单的web框架实现
一个简单的web框架实现 #!/usr/bin/env python # -- coding: utf-8 -- __author__ = 'EchoRep' from wsgiref.simple_ ...
- java基础-修饰符
下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?(B) A:private B:无修饰符 C:public D:procted 名称 说明 备注 public 可以被 ...
- PADS Layout怎样放置间距一样的同一种元件
少数元件的话,栅格设置是最好的,即将栅格设置成你要放置元件的间距,然后逐个移动元件放置.如果元件几十上百个,这样做就累死人了,此时就得设置阵列.按顺序选择你要放置的元件-右键-create arry, ...
- 浅谈qt 布局器
在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是 ...
- 老生常谈--Js继承小结
一直以来,对Js的继承有所认识,但是认识不全面,没什么深刻印象.于是,经常性的浪费很多时间重新看博文学习继承,今天工作不是特别忙,有幸看到了http://www.slideshare.net/stoy ...
- C语言数据结构----栈与递归
本节主要说程序中的栈函数栈的关系以及栈和递归算法的关系. 一.函数调用时的栈 1.程序调用时的栈是也就是平时所说的函数栈是数据结构的一种应用,函数调用栈一般是从搞地质向低地址增长的,栈顶为内存的低地址 ...