ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 一 KVM磁盘格式 ### 1.两种磁盘格式 * raw: 裸格式,占用空间比较大,不适合远程传输,不支持快照功能,性能较好 * qcow2: cow(copy on write)占用空间小,适合传输,支持快照,性能比raw差一点点 ### 2.磁盘相关命令 1. 创建相应格式磁盘 ```sh qemu-img create test.raw 1G qemu-img create -f qcow2 test.qcow2 1G ``` 2. 查看虚拟磁盘信息 `qemu-img info test.raw ` 3. 调整虚拟磁盘容量大小 `qemu-img resize test.raw +1G ` 4. 磁盘格式转换 会多出一份新格式文件,源文件保留 ```sh qemu-img convert -f raw -O qcow2 test.raw test2.qcow2 [root@noah-tp opt]# ll test* -h -rw-r--r--. 1 root root 193K Nov 14 22:45 test2.qcow2 -rw-r--r--. 1 root root 193K Nov 14 22:42 test.qcow2 -rw-r--r--. 1 root root 2.0G Nov 14 22:44 test.raw ``` ### 3.实际操作演示 以修改centos7mb.raw为例 ``` #1.停止虚拟机 virsh shutdown centos7mb #2.转换虚拟机磁盘格式为qcow2 qemu-img convert -f raw -O qcow2 /opt/centos7-mb.raw /opt/centos7-mb.qcow2 #3.手动修改虚拟机配置文件 virsh edit centos7mb ##搜索disk,将driver name 和source file中的raw修改为qcow2 <driver name='qemu' type='raw'/> --> <driver name='qemu' type='qcow2'/> <source file='/opt/centos7-mb.raw'/> --> <source file='/opt/centos7-mb.qcow2'/> #4.重启虚拟机 virsh start centos7mb ``` ## 二 快照和克隆 ### 1.虚拟机快照[qcow2格式] 只有qcow2格式的虚拟机能使用快照功能 1. 创建快照 ``` virsh snapshot-create centos7mb ``` 2. 查看快照 ```sh virsh snapshot-list centos7mb Name Creation Time State ------------------------------------------------------------ 1542207368 2018-11-14 22:56:08 +0800 running 1542207451 2018-11-14 22:57:31 +0800 running ``` 4. 还原快照 `virsh snapshot-revert centos7mb --snapshotname 1542207368 ` 5. 删除快照 `virsh snapshot-delete centos7mb --snapshotname 1542207368 ` ### 2.虚拟机克隆 **完整克隆** 实现方法:virt-clone -o 源虚拟机名 -n 新虚拟机名 -f 新虚拟机磁盘文件名 --auto-clone `virt-clone -o centos7mb -n web02 -f web02.qcow2 --auto-clone ` **链接克隆** 1. 创建回写文件 `qemu-img create -f qcow2 -b cetnos7mb.qcow2 web03.qcow2 ` 2. 以此回写文件创建虚拟机 通过`--boot hd`参数直接从硬盘启动的方式,加载别人已经做好的模板镜像,免去了从iso镜像安装的过程 ``` virt-install --virt-type kvm \ --os-type=linux \ --os-variant rhel7 \ --name web03 \ --memory 1024 \ --vcpus 1 \ --disk /opt/web03.qcow2,format=qcow2,size=10 \ --boot hd \ --network network=default \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole ```