本章内容包括:
KVM操作虚拟机
克隆虚拟机
快照管理
磁盘格式
磁盘扩容
调整cpu、内存和网卡
迁移虚拟机
一.KVM操作虚拟机
给虚拟机配置好网络,可以远程连接虚拟机。
查看当前系统有哪些虚拟机:
#启动状态
virsh list
#全部
virsh list --all
启动虚拟机:
virsh start ligenlinux01
进入虚拟机:
virsh console ligenlinux02
退出:
ctrl+]
给虚拟机配置网络:
#dhcp
dhclient eth0
#或者static
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#根据自己的网络添加
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
IPADDR=192.168.247.100
NETMASK=255.255.255.0
GATEWAY=192.168.247.2
DNS1=8.8.8.8
UUID=596cc90e-bd86-492c-a240-c4a47d7652ad
DEVICE=eth0
ONBOOT=yes
在宿主机上查看kvm进程:
ps aux |grep kvm
关闭虚拟机:
virsh shutdown ligenlinux01
强制关闭虚拟机:
virsh destroy ligenlinux02
彻底销毁虚拟机,会删除虚拟机的配置文件:
virsh undefine ligenlinux02
虚拟机的配置文件路径:
ls /etc/libvirt/qemu/
虚拟机的更改都存在了虚拟磁盘里面:
/kvm_data/ //这个目录是自己定义的
设置宿主机开机虚拟机也开机:
virsh autostart ligenlinux01
接触开机启动:
virsh autostart --disable ligenlinux01
挂起:
virsh suspend ligenlinux01
恢复:
virsh resume ligenlinux01
二.克隆虚拟机
先关闭:
virsh shutdown ligenlinux02
克隆:
virt-clone --original ligenlinux02 --name ligenlinux01 --file /kvm_data/ligenlinux02.img
三.快照管理
创建快照:
virsh snapshot-create ligenlinux01
注意:raw格式的虚拟磁盘不支持快照,qcow2支持
查看ligenlinux01.img信息,同时会查看到快照列表
qemu-img info /kvm_data/ligenlinux01.img
列出所有快照:
virsh snapshot-list ligenlinux01
查看当前快照版本:
virsh snapshot-current ligenlinux01
查看所有快照配置文件:
ls /var/lib/libvirt/qemu/snapshot/
恢复指定快照:
virsh snapshot-revert ligenlinux01 1581503220
删除指定快照:
virsh snapshot-delete ligenlinux01 1581503220
四.磁盘格式
磁盘格式分为raw和qcow2两种。
创建raw磁盘:
qemu-img create -f raw /kvm_data/ligenlinux01_2.img 2G
查看该磁盘信息,可以看到raw:
qemu-img info /kvm_data/ligenlinux01_2.img
将raw磁盘转换为qcow2:
qemu-img convert -O qcow2 /kvm_data/ligenlinux01_2.img /kvm_data/ligenlinux01_2.qcow2
-O:指定转换的磁盘格式
后面两个:前面是源文件,后面是目标文件
等于将磁盘复制了一份,原来的不变,但是生成了一个qcow2格式磁盘
注意:
qcow2格式不管用什么看,显示的都是用了的实际空间
raw用ls看会是分配的空间,du看会比较小。
举例子,给某一个虚拟机转换磁盘
先关闭该虚拟机:
virsh shutdown ligenlinux02
转换磁盘:
qemu-img convert -O raw /kvm_data/ligenlinux02.img /kvm_data/ligenlinux02_1.raw
编辑配置文件:
virsh edit ligenlinux02
#等价于vim /etc/libvirt/qemu/ligenlinux02.xml
#官方推荐virsh,因为编辑出错会有提示
#编辑这两个地方
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/> //这里type改为raw
<source file='/kvm_data/ligenlinux02_1.raw'/> //这里的源文件要改成目标文件
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
启动ligenlinux02:
virsh start ligenlinux02
注意:虚拟机启动后用哪个磁盘,它的属主和属组就会变成qemu。
可以把原来的磁盘格式删除,节约磁盘空间。raw磁盘不可以做快照。
五.磁盘扩容
raw格式:
cd /kvm_data/
qemu-img resize ligenlinux02_1.raw +2G
#查看磁盘:
qemu-img info /kvm_data/ligenlinux02_1.raw
#但是我们到虚拟机里面去查看,它里面显示的还是原来的空间
#在宿主机里面重启虚拟机
virsh destroy ligenlinux02
virsh start ligenlinux02
#有了磁盘之后,还需要再虚拟机里面增加一个新的分区
virsh console ligenlinux02
fdisk -l
fdisk /dev/vda
#除此之外,还可以增加一个新的硬盘的方式
#在宿主机上
#创建一个新的虚拟磁盘
qemu-img create -f raw /kvm_data/ligenlinux02_2.raw 3G
#编辑配置文件
virsh edit ligenlinux02
#复制这一部分,并修改
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/ligenlinux02_2.raw'/> //这里改成新的磁盘名称
<target dev='vdb' bus='virtio'/> //这里修改成vdb
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> //slot要修改,不可以和其他地方重复的
</disk>
#重启虚拟机ligenlinux02
virsh shutdown ligenlinux02
virsh start ligenlinux02
#进入虚拟机里面对新的磁盘vdb,分区,格式化,挂载
实际上现在有很多公司用的是云服务器,磁盘不够了,需要再买一块磁盘,类似于增加了一块盘,自己分区,格式化,挂载。
qcow2格式
对qcow2增加分区,需要注意的是如果该虚拟机做了快照,对该虚拟机扩容,那么会出现报错。
#方法和raw差不多
#下面是第一中方法,增加分区
qemu-img resize /kvm_data/ligenlinux02.img +2G
#第二种方法
qemu-img create -f qcow2 /kvm_data/ligenlinux02_2.img 3G
六.调整cpu、内存和网卡
查看虚拟机的配置:
virsh dominfo ligenlinux02
#如果要看详细的,可以看配置文件
virsh edit ligenlinux02
更改cpu和内存:
virsh edit ligenlinux02
#修改
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>624288</currentMemory> //内存改成600M左右
<vcpu placement='static' current='2'>2</vcpu> //cpu改成2个
#重启虚拟机
virsh shutdown ligenlinux02
virsh start ligenlinux02
#查看
virsh dominfo ligenlinux02
动态调整内存,不需要重启:
#内存可以动态减小
virsh setmem ligenlinux02 800m
动态调整cpu:
#减小不可以,增加可以
virsh setvcpus ligenlinux02 2
让动态调整永久生效:
virsh dumpxml ligenlinux02 > /etc/libvirt/qemu/ligenlinux02.xml
增加网卡
查看网卡:
virsh domiflist ligenlinux02
增加一块新的网卡
#增加一块网卡,设置为nat模式(virbr0类似于vm的vmnet8)
virsh attach-interface ligenlinux02 --type bridge --source virbr0
#增加一块桥接网卡
virsh attach-interface ligenlinux02 --type bridge --source br0
#进入虚拟机查看网络
virsh console ligenlinux02
ip addr
#让配置生效,再宿主机上
virsh dumpxml ligenlinux02 > /etc/libvirt/qemu/ligenlinux02.xml
七.迁移虚拟机
迁移更多的是迁移到另一台机器上去,但是这里偷个懒就在同一台机器上迁移。
#首先关闭要迁移的虚拟机
virsh shutdown ligenlinux02
#拷贝配置文件
virsh dumpxml ligenlinux02 > /etc/libvirt/qemu/ligenlinux03.xml
#如果是远程的话,直接把ligenlinux02.xml同步到另一台机器上就行
#拷贝磁盘文件
#先查看该虚拟机有哪些磁盘,也可以在配置文件中查看
virsh domblklist ligenlinux02
vda /kvm_data/ligenlinux02_1.raw
vdb /kvm_data/ligenlinux02_2.raw
#拷贝磁盘文件
rsync -av /kvm_data/ligenlinux02_1.raw /kvm_data/ligenlinux03_1.raw
rsync -av /kvm_data/ligenlinux02_2.raw /kvm_data/ligenlinux03_2.raw
#注意,如果是另一台机器的话,需要拷贝到另一台机器上面
#因为是在本机,需要编辑一下ligenlinux03的配置文件,不改会有冲突,远程的话就不用
vim /etc/libvirt/qemu/ligenlinux03.xml
#修改domname
<name>ligenlinux03</name>
#修改uuid,随便改一个数字就行
<uuid>b94c0868-830e-4f70-a0cc-358f722ee9fd</uuid>
#修改磁盘路径,这一步可以看前面的
<source file='/kvm_data/ligenlinux03_1.raw'/>
<source file='/kvm_data/ligenlinux03_2.raw'/>
#保存退出
#定义新虚拟主机
virsh define /etc/libvirt/qemu/ligenlinux03.xml
#查看虚拟机列表,看是否存在ligenlinux03
virsh list --all