KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有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和软盘映像

主要是安装libguestfslibguestfs-tools软件工具,就可以直接读取qcow2格式的磁盘文件。

下面的这些操作最好要在虚拟机关机状态下做,否则会出错。

virt­inspector显示os版本、内核、驱动、挂载点、应用等等,很少使用。

# virt-inspector /mykvm/vms/vm1

# virt-inspector--format=qcow2 -a /mykvm/vms/vm1 |more

virt­cat命令类似于cat命令

# virt-cat -a /mykvm/vms/vm1 /etc/hostname

vrit-edit命令用于编辑文件,用法与vim基本一致,例如把主机名改成vmtest001.test.com

[root@kvm001 ~]# virt-edit -a /kvm-vm/vmtest01.qcow2/etc/hostname vmtest001.test.com

然后再查看,发现主机名已经更改。

[root@kvm001 ~]# virt-cat -a/kvm-vm/vmtest01.qcow2 /etc/hostname vmtest001.test.com

virt-df命令用于查看虚拟机磁盘信息

[root@kvm001 ~]# virt-df -h -a vmtest01

virt-copy-out这个命令可以把虚拟机里的文件复制出来,用法如下

virt-copy-in是将文件复制到虚拟机里面,用法和virt-copy-out基本相同

guestfish命令:

guestfish [--ro|--rw] -i -a /path/to/disk.img

guestfish [--ro|--rw] -i -d name-of-libvirt-domain

Guestmount:

在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。例如。

# guestmount -a vm1.qcow2 -m /dev/vg_centosbase/lv_root --rw /mnt

如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个挂接点:

# guestmount -a vm1.qcow2 -i --rw /mnt

将/mnt下的挂载进行卸载

#guestunmount /mnt

管理虚拟磁盘

虚拟化项目中存储的注意事项

Ø 存储的性能几乎总是虚拟化的瓶颈

Ø 通过多个磁盘驱动以分布磁盘I/O来实现存储解决方案

Ø 驱动器的速度越快越好,考虑SSD与机械磁盘的混合使用

Ø 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移

虚拟磁盘类型

ü 固定 Fixed

ü 在配置时,指定磁盘大小

ü 不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间

Ø 动态 Dynamic

ü 增长到最大容量,但是只根据需求使用更多的空间

Ø 差异(差分盘) Differencing

ü 因为创建是差异磁盘,所以只保存变更的数据,类似于lvm的快照

ü 例如,将操作系统安装在父盘,然后创建差异化磁盘来执行进一步配置,桌面

虚拟化使用很多。

KVM支持的虚拟磁盘类型:

1) raw

ü 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像

ü 它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等

ü 格式简单,容易转化为其他的格式。需要文件系统的支持才能支持sparsefile

Ø cow:copy-on-wirte格式,昙花一现

Ø qcow:QEMU早期的copy-on-write格式,过渡性方案

2)qcow2

ü 按需进行分配磁盘空间,不管文件系统是否支持

ü 支持快照

ü 支持zlib的磁盘压缩

ü 支持AES的加密

3)vmdk(virtual machine disk)

ü VMware环境当中默认使用的磁盘格式

4)vhd\vhdx(virtual HardDisk)

ü 微软默认采用的文件格式

5)vdi(virtual Box)

可以通过qemu-img --help | grep Supported命令查看KVM所支持的磁盘格式

qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,qemu-img工具的命令行基本用法如下:

创建虚拟磁盘,默认是创建raw格式的磁盘

创建qcow2格式磁盘时,可以指定选项,通过-o参数,常用参数主要有:

例如:

后备差异虚拟磁盘(VMware中称作链接克隆)

Ø 存储与基础镜像(父)磁盘的变化

ü 基础镜像(父)磁盘不会改变

ü 差异磁盘隔离变化

ü 多个差异磁盘可以使用相同的基础镜像(父)磁盘

Ø 优点:标准化基础镜像,节省空间

Ø 缺点:增加了开销,较差的性能(尤其是vmware虚拟机中的试验环境,要等待很久才能启动)

首先,需要拥有一个基础虚拟磁盘,可以通过安装一个全新的虚拟机得到,然后将各种使 用的基本软件设置好。

创建差异虚拟磁盘:

方法一:

然后根据差异磁盘创建虚拟机 (强烈建议通过修改配置文件

如果修改配置文件的话,只需要修改主机名,uuid值,及mac地址即可。

方法二:

>--os-variant=centos7.0

查看,发现虚拟机已经运行(启动速度特别慢,不建议)

虚拟磁盘格式转换

调整虚拟磁盘大小

语法格式:

qemu-img resize test2.qcow2 +2G Image resized

2.磁盘快照管理

快照/检查点 Snapshot/Checkpoint

Ø 磁盘快照

ü 对磁盘数据进行快照

ü 主要用于虚拟机备份等场合

Ø 内存快照

ü 对虚拟机的内存/设备信息进行保存

ü 该机制同时用于休眠恢复、迁移等场景

ü 主要使用virsh save(qemumigrate to file)实现,只能对运行的虚拟机进

Ø 检查点快照

ü 同时保存虚拟机的磁盘快照和内存快照

ü 用于将虚拟机恢复到某个时间点

ü 可以保证数据的一致性

磁盘快照分类--不推荐使用

Ø 按快照信息保存分为:

ü 内置快照:快照数据和base磁盘数据放在一个qcow2文件中

ü 外置快照:快照数据单独的qcow2文件存放

Ø 按虚拟机状态可以分为:

ü 关机态快照:数据可以保证一致性

ü 运行态快照:数据无法保证一致性,类似于系统crash后的磁盘数据,使用时可能需要fsck等操作。

Ø 按磁盘数量可以分为:

ü 单盘:单盘快照不涉及原子性

ü 多盘:涉及原子性。主要分为两个方面:1、是所有盘快照点相同2、所有盘要

么都快照成功,要么都快照失败。主要依赖于qemu的transaction实现。

qemu-img的快照语法格式:

创建名为s1的磁盘快照:

原文发布于微信公众号 - L宝宝聊IT(gh_b0e552aa80db)

原文发表时间:2018-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

KVM+Qemu+Libvirt实战

上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+L...

4197
来自专栏腾讯大数据的专栏

Ta 腾讯分析添加热点图

1、打开TA:http://v2.ta.qq.com/ QQ号登录 2、点选站点列表 ? 3、选择新增站点,输入域名点击添加即可。 ? 4、点选监控检测→页面热...

4398
来自专栏技术文章

资深专家深度剖析Kubernetes API Server第1章(共3章)

欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现。如...

1332
来自专栏磨磨谈

rbd-mirror配置指南-单向备份

RBD 的 mirroring 功能将在Jewel中实现的,这个Jewel版本已经发布了很久了,这个功能已经在这个发布的版本中实现了,本来之前写过一篇文章,但是...

881
来自专栏IT笔记

rsync+inotify实现分布式集群部署

上一篇:Linux下使用ssh密钥实现无交互备份 上二篇:Linux下使用rsync实现文件备份 缘起 由于公司要对支付做压测,于是使用了公司的服务器搭建了一个...

3985
来自专栏pangguoming

Windows 8 IIS配置PHP运行环境

在Windows 8 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 1.进入控制面板>>程序和功能>>打开或关闭Windows 功能,找到In...

5598
来自专栏蓝天

Linux+Apache+Mysql+PHP典型配置

调试环境:Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4

993
来自专栏Rainbond开源「容器云平台」

好雨云帮一周问答集锦(11.28-12.04)

1475
来自专栏云计算教程系列

如何在Debian 9上安装Node.js.

Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端利用JavaScript,Node.js使开发更加一致...

2633
来自专栏Linux运维学习之路

Nginx服务编译安装、日志功能、状态模块及访问认证模式实操

系统环境   [root@web ~]# cat /etc/redhat-release   CentOS release 6.9 (Final)   [ro...

2536

扫码关注云+社区