KVM虚拟化之命令行管理虚拟机
vrish命令
命令 | 功能 |
---|---|
virsh | 进入KVM交互操作 |
virsh nodeinfo | 查看物理机 信息 |
virsh list / virsh list –all | 查看虚拟机列表 |
virsh dominfo 虚拟机名 | 查看指定虚拟机信息 |
virsh start 虚拟机名 | 开启指定虚拟机 |
virsh destroy 虚拟机名 | 强制关闭虚拟机 |
virsh shutdown 虚拟机名 | 关机虚拟机 |
virsh autostart 虚拟机名 | 开机自启指定虚拟机 |
virsh autostart –disable 虚拟机名 | 取消指定虚拟机到开机自启 |
virsh dumpxml 虚拟机名 | 查看指定虚拟机的配置文件 |
virsh define 配置文件 | 从指定文件导入一台虚拟机 |
virsh undefine 虚拟机名 | 移除一台虚拟机,但不删除虚拟机的磁盘文件 |
virsh edit 虚拟名 | 编辑一台虚拟机配置,在修改title和uuid的情况下重新生成新的虚拟机 |
UUID生成工具uuidgen
kvm虚拟机配置文件
/etc/libvirt/qemu/虚拟机名.xml
调整虚拟机设置
导出虚拟机配置
virsh dumpxml 虚拟机名 > /dirname/filename
修改导出后的配置
vim /dirname/filename
导入修改后的配置文件
virsh define /dirname/filename
改名虚拟机rh6_n1为rhel6_node1
1 | virsh dumpxml rhel_n1 > /root/new.xml |
复制虚拟机rhel6_node1
1 | virsh dumpxml rhel6_node1 > /root/copy.xml |
kvm虚拟机操作
virsh edit 虚拟机
virt-clone -o 已有虚拟机名 -n 新虚拟机名 -f 克隆的虚拟机磁盘文件
virsh net-edit 网卡名
virsh net-destroy 网卡名
virsh net-start 网卡名
虚拟机磁盘类型
- raw 原始类型
- qcow2
qcow磁盘操作
qemu-img create -f qcow2 /data/images/disk1.img 100G
转换虚拟机磁盘类型
转换磁盘文件类型
qemu-img convert -O qcow2 -c /data/images/node2.img /data/images/node2.qcow2
修改虚拟机配置文件
1
2
3
4
5
6
7virsh edit rhel6_node2
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/> //更改type的raw为qcow2
<source file='/data/images/node2.qcow2'/> //更改file的磁盘文件路径
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>删除旧虚拟机磁盘文件
rm -rf /data/images/node2.img
快速创建虚拟机
准备硬盘,使用copy on write方式
qemu-img create -f qcow2 -b oldimg newimg
修改虚拟机配置文件
1
2virsh edit oldgues
修改uuid title disk interface 参数
qemu磁盘快照
qemu最对qcow格式的磁盘文件建立快照
qemu-img snapshot -c 快照名 磁盘名
创建快照qemu-img snapshot -l 磁盘名
查看磁盘对应的快照qemu-img snapshot -a 快照名 磁盘名
恢复快照qemu-img snapshot -d 快照名 磁盘名
删除指定快照
从命令创建虚拟机
qemu-img create -f qcow2 /data/images/muban.qcow2
virt-install --name vpcname --vcpus=1 --ram=1024 --diks path=/data/images/vpcname.qcow2,format=qcow2 --network netowrk=private1 --pxe
从模板快速创建虚拟机
最后附上我自己写的脚本,用于从模板快速克隆虚拟机1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 使用此脚本之前需要先创建一个KVM虚拟机,
# 磁盘格式为qcow2。并且把模板虚拟机的xml
# 拷贝到$basedir目录下,命名为base.xml
if [ $# -lt 1 ]
then
echo "不告诉我虚拟机名字,我给你克隆到哪?"
exit 2
fi
basedir=/home/mk/kvm_img
for vmname in $@
do
if [ -f $basedir/$vmname.qcow2 ]
then
echo "大哥!有这个虚拟机的磁盘文件,我可不给你克隆!"
exit 1
fi
vmxml=/tmp/$vmname.xml
uuid=`uuidgen`
let mac=$RANDOM%100
if [ $mac -lt 10 ]
then
mac="0$mac"
fi
cp $basedir/base.xml $vmxml
qemu-img create -f qcow2 -b $basedir/base.qcow2 $basedir/$vmname.qcow2 &> /dev/null
sed -i "s/<uuid>.*</<uuid>$uuid</" $vmxml
sed -i "s/base/$vmname/g" $vmxml
sed -i "s/e7/$mac/g" $vmxml
virsh define $vmxml
rm -rf $vmxml
done