virt-clone -o 192.168.0.242_sw_web -n 192.168.0.163_nginx -f /data/kvm/images/192.168.0.163_nginx.img
virt-clone -o 192.168.0.235_sw_web -n 192.168.0.162_sw_web -f /data/kvm/images/192.168.0.162_sw_web.img
==========start=
1.先关闭被克隆的虚拟机;
2.克隆命令
virt-clone -o 192.168.0.242_sw_web -n 192.168.0.163_nginx -f /data/kvm/images/192.168.0.163_nginx.img
解释:a. 192.168.0.242_sw_web表示虚拟机的域名称 。
b. 192.168.0.163_nginx 表示克隆出来的域的名称。
c. /data/kvm/images/192.168.0.163_nginx.img 表示生成的镜像源存放位置以及名称。
3.启动192.168.0.163_nginx 虚拟机并连接(因为是克隆的此时连接的是被克隆的服务器ip)
修改ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0
4.reboot重启
=END========
==操作kvm虚拟机常用命令start
列出所有的虚拟机
virsh list --all
显示虚拟机信息
virsh dominfo kvm-1
显示虚拟机内存和cpu的使用情况
yum install virt-top -y
virt-top
显示虚拟机分区信息
virt-df kvm-1
关闭虚拟机(shutodwn)
virsh shutdown kvm-1
启动虚拟机
virsh start kvm-1
设置虚拟机(kvm-1)跟随系统自启
virsh autostart kvm-1
关闭虚拟及自启
virsh autostart --disable kvm-1
删除虚拟机
virsh undefine kvm-1
通过控制窗口登录虚拟机
virsh console kvm-1
virsh命令行管理工具
Libvirt有两种控制方式,命令行和图形界面
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
命令行:
virsh list #显示本地活动虚拟机
virsh list –all #显示本地所有的虚拟机(活动的+不活动的)
virsh define ubuntu.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start ubuntu #启动名字为ubuntu的非活动虚拟机
virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend ubuntu # 暂停虚拟机
virsh resume ubuntu # 启动暂停的虚拟机
virsh shutdown ubuntu # 正常关闭虚拟机
virsh destroy ubuntu # 强制关闭虚拟机
virsh dominfo ubuntu #显示虚拟机的基本信息
virsh domname 2 # 显示id号为2的虚拟机名
virsh domid ubuntu # 显示虚拟机id号
virsh domuuid ubuntu # 显示虚拟机的uuid
virsh domstate ubuntu # 显示虚拟机的当前状态
virsh dumpxml ubuntu # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem ubuntu 512000 #给不活动虚拟机设置内存大小
virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
virsh edit ubuntu # 编辑配置文件(一般是在刚定义完虚拟机之后)
libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://root@10.4.122.11。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://root@10.4.122.11 list --all
ubuntu.xml配置文件举例:
<domain type='xen'> //域类型
<name>ubuntu</name> //虚拟机的名字
<memory>1048576</memory> //虚拟机的最大内存
<currentMemory>524288</currentMemory> //虚拟机当前的内存
<vcpu>2</vcpu> //该虚拟机的cpu数
<os>
<type>hvm</type> //hvm表示全虚拟化
<loader>/usr/lib/xen/boot/hvmloader</loader> //全虚拟化的守护进程所在的位置
<boot dev='hd'/> //hd表示从硬盘启动
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator> //二进制模拟器设备的完整路径。
<disk type='file' device='disk'> //disk是用来描述磁盘的主要容器
<driver name='file'/>
<source file='/opt/awcloud/ubuntu/ubuntu.img'/> //指定磁盘上文件的绝对路径
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/opt/awcloud/ubuntu/sdb.img'/>
<target dev='hdb' bus='ide'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/opt/awcloud/forest/ubuntu-10.04.3-desktop-i386.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
<serial type='pty'> //定义串口
<target port='0'/>
</serial>
<console type='pty'> //console用来代表交互性的控制台
<target port='0'/>
</console>
<interface type='bridge'> //桥接设备
<mac address='00:16:36:1e:1d:04'/> //MAC地址
<source bridge='virbr0'/>
</interface>
<graphics type='vnc' autoport='yes' keymap='en-us'/> //图形类型
</devices>
</domain>
注:
生成一个4G大小的空文件:dd if=/dev/zero of=./disk bs=1024 count=expr 4 \* 1024 \* 1024
修改虚拟机的启动设备:从硬盘启动;从CD启动
网络参数:
如ubuntu.xml配置文件,kvm虚拟机和xen虚拟机都只需要按照下面的模板进行配置,MAC地址是必须的,bridage的名字可能在不同的主机上是不一样,可能是virbr0,也可能是br0,但类型一定要是桥接模式就可以了
<interface type='bridge'>
<mac address='00:16:36:1e:1d:04'/>
<source bridge='virbr0'/>
</interface>
KVM虚拟机迁移:
迁移命令:virsh migrate –live qemu+ssh:///system tcp://:49152
迁移完之后,本地机器可能仍是定义状态,要执行virsh undefine 清除。
注意:/dev/zero是一个输入设备,用来初始化文件。
/dev/null是个无底洞,可以向它输出任何数据,它通吃并且不会撑着。