通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。
raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所以有时候,我们需要将raw格式的磁盘转换成qcow2格式(qemu-img convert -f raw -O qcow2 /kvm-vm/vmtest01.img /kvm-vm/vmtest01.qcow2)。
虚拟磁盘离线访问工具
离线访问工具应用场景 Ø 观看或下载位于虚拟机磁盘中的文件 Ø 编辑或上传文件到虚拟机磁盘 Ø 读取或写入的虚拟机配置 Ø 准备新的磁盘映像,其中包含文件、目录、文件系统、分区、逻辑卷和其他选项 Ø 拯救和修复客户无法启动或需要更改启动配置的虚拟机 Ø 监控虚拟机的磁盘使用情况 Ø 根据组织安全标准审计虚拟机的合规性 Ø 通过克隆和修改模板来部署虚拟机 Ø 读取CD和DVD ISO和软盘映像
1、查看关机状态下虚拟机的os版本、内核、驱动、挂载点、应用等信息(virt-inspector)(很少使用)
①第一种方式:
[root@localhost ~]# virt-inspector -d test-os1 > /tmp/test-os1.log
[root@localhost ~]# vim /tmp/test-os1.log
②第二种方式(不常用,因为有时不确定硬盘文件对应的是哪一台虚拟机,但是查询到的信息和第一种方式是一样的,不过和第一种方式都是不常用的,内容太多):
[root@localhost ~]# virt-inspector -a /kvm-vm/vm1.qcow2 > /tmp/test-os1_log
[root@localhost ~]# vim /tmp/test-os1_log
2、查看关机状态下虚拟机的文件内容(virt-cat)
[root@localhost ~]# virt-cat -d test-os1 /root/test.txt
[root@localhost ~]# virt-cat -d test-os2 /root/test.txt
3、修改关机状态下虚拟机的文件内容(virt-edit)
[root@localhost ~]# virt-edit -d test-os2 /root/test.txt
4、查看关机状态下虚拟机的磁盘信息(virt-df)
[root@localhost ~]# virt-df -d test-os2
[root@localhost ~]# virt-df -h -d test-os2
5、将关机状态下虚拟机的文件拷贝到本地(virt-copy-out)
[root@localhost ~]# virt-copy-out -d test-os2 /root/test.txt /tmp/
6、将本地文件拷贝到关机状态下的虚拟机中(virt-copy-in)
[root@localhost ~]# virt-copy-in -d test-os2 /root/hello.txt /root/
7、guestfish命令(不常用)
①以只读的方式进入到关机状态下虚拟机的文件系统中
[root@localhost ~]# guestfish --ro -i -d test-os2
②以读写的方式进入到关机状态下虚拟机的文件系统中
[root@localhost ~]# guestfish --rw -i -d test-os2
8、guestmount挂载命令与guestunmmount卸载命令
在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。例如:
guestmount -a vm1.qcow2 -m /dev/vg_centosbase/lv_root --rw /mnt
如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个挂接点:
guestmount -a vm1.qcow2 -i --rw /mnt
①将关机状态下虚拟机的文件系统挂载到本地目录下
[root@localhost ~]# mkdir /mnt/tmp
[root@localhost ~]# guestmount -d test-os2 -i --rw /mnt/tmp/
②将载到本地目录下的虚拟机文件系统卸载掉
[root@localhost ~]# guestunmount /mnt/tmp/
扩展(当不能以vnc方式和console方式登录虚拟机时,通过挂载关机状态下虚拟机的文件系统去修改grub.cfg配置文件):
[root@localhost ~]# guestmount -d test-os2 -i --rw /mnt/tmp/
[root@localhost ~]# vim /mnt/tmp/boot/grub2/grub.cfg
[root@localhost ~]# guestunmount /mnt/tmp/
管理虚拟磁盘
虚拟化项目中存储的注意事项: Ø 存储的性能几乎总是虚拟化的瓶颈 Ø 通过多个磁盘驱动以分布磁盘I/O来实现存储解决方案 Ø 驱动器的速度越快越好,考虑SSD与机械磁盘的混合使用 Ø 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移
虚拟磁盘类型: Ø 固定 Fixed ü 在配置时,指定磁盘大小 ü 不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间 Ø 动态 Dynamic ü 增长到最大容量,但是只根据需求使用更多的空间 Ø 差异(差分盘) Differencing ü 因为创建是差异磁盘,所以只保存变更的数据,类似于lvm的快照 ü 例如,将操作系统安装在父盘,然后创建差异化磁盘来执行进一步配置,桌面虚拟化使用很多。
KVM支持的虚拟磁盘类型: Ø raw ü 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像 ü 它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等 ü 格式简单,容易转化为其他的格式。需要文件系统的支持才能支持sparse file Ø cow: copy-on-wirte格式,昙花一现 Ø qcow: QEMU早期的copy-on-write格式,过渡性方案 Ø qcow2: ü 按需进行分配磁盘空间,不管文件系统是否支持 ü 支持快照 ü 支持zlib的磁盘压缩 ü 支持AES的加密 Ø vmdk(virtual machine disk) ü VMware环境当中默认使用的磁盘格式 Ø vhd\vhdx(virtual Hard Disk) ü 微软默认采用的文件格式 Ø vdi(virtual Box) 可以通过qemu-img --help | grep Supported命令查看KVM所支持的磁盘格式。
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,qemu-img工具的命令行基本用法如下: qemu-img command [command options] qemu-img常用功能命令: Ø check 检查完整性 Ø create 创建镜像 Ø commit 提交更改 Ø compare 比较 Ø convert 转换 Ø info 获取信息 Ø map 映射 Ø snapshot 快照管理 Ø rebase 在已有的镜像的基础上创建新的镜像 Ø resize 调整大小 Ø amend 修订镜像格式选项
后备差异虚拟磁盘(VMware中称作链接克隆) Ø 存储与基础镜像(父)磁盘的变化 ü 基础镜像(父)磁盘不会改变 ü 差异磁盘隔离变化 ü 多个差异磁盘可以使用相同的基础镜像(父)磁盘 Ø 优点:标准化基础镜像,节省空间 Ø 缺点:增加了开销,较差的性能 (尤其是vmware虚拟机中的试验环境,要等待很久才能启动)
1.创建差异虚拟磁盘:
[root@localhost ~]# qemu-img create -f qcow2 -o backing_file=/kvm-vm/vm2.qcow2 /kvm-vm/vm5.qcow2
2.拷贝一个新的虚拟机配置文件并编辑:
[root@localhost ~]# cp /etc/libvirt/qemu/test-os2.xml /etc/libvirt/qemu/test-os2_5.xml
[root@localhost ~]# vim /etc/libvirt/qemu/test-os2_5.xml
1)进入配置文件用:%s/test-os2/test-os2_5/g (把文件里面test-os2 替换为 test-os2_5) 2)修改虚拟机的uuid 将一个数字改为16机制的一位数即可
3)将虚拟机指向的硬盘文件修改为vm5.qcow2
4)修改mac地址,也是16进制数才可以
通过虚拟机的配置文件与硬盘文件恢复虚拟机:
[root@localhost ~]# virsh define /etc/libvirt/qemu/test-os2_5.xml
|