kvm虚拟机常用命令

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

调整虚拟机设置

  1. 导出虚拟机配置
    virsh dumpxml 虚拟机名 > /dirname/filename

  2. 修改导出后的配置
    vim /dirname/filename

  3. 导入修改后的配置文件
    virsh define /dirname/filename

改名虚拟机rh6_n1为rhel6_node1

1
2
3
4
virsh dumpxml rhel_n1 > /root/new.xml
vim /root/new.xml
virsh define /root/new.xml
virsh undefine rh6_n1

复制虚拟机rhel6_node1

1
2
3
4
5
virsh dumpxml rhel6_node1 > /root/copy.xml
vim /root/copy.xml
cd /data/images
cp node1.img node2.img
virsh define /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

转换虚拟机磁盘类型

  1. 转换磁盘文件类型
    qemu-img convert -O qcow2 -c /data/images/node2.img /data/images/node2.qcow2

  2. 修改虚拟机配置文件

    1
    2
    3
    4
    5
    6
    7
    virsh 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>
  3. 删除旧虚拟机磁盘文件
    rm -rf /data/images/node2.img

快速创建虚拟机

  1. 准备硬盘,使用copy on write方式
    qemu-img create -f qcow2 -b oldimg newimg

  2. 修改虚拟机配置文件

    1
    2
    virsh 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
#!/bin/bash
# 使用此脚本之前需要先创建一个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

0%