我读过一些关于修改 qemu 磁盘映像文件的安全性的不同意见。
我对两种不同的情况感兴趣。
1) 让我们获取一个 kvm 未使用的原始或 qcow2 磁盘映像文件(即虚拟机未运行),使用 losetup 和 kpartx 挂载它并修改其内容(例如编辑一些文件、删除一些文件、添加一些文件……)。虽然到目前为止我这样做没有任何问题(只要不超过映像的最大大小),但我不确定这是否完全没有风险;我特别想知道这些映像格式的节省空间功能在这种情况下如何表现 - 即它们是否仅在 VM 运行时激活,还是磁盘映像文件本身的功能。
2) 情况相同(已安装磁盘映像),但虚拟机现在正在运行。以只读方式访问映像文件内容,甚至编辑/添加某些文件是否安全?我绝对确定这不会干扰虚拟机中正在运行的进程?
提前致谢,
菲普
答案1
对于场景 #1,如果客户机未运行,一切都应该没问题。但我会使用guestmount
而不是losetup
。循环挂载可能适用于原始卷,但我不确定它如何处理 qcow。guestmount
做额外的工作以确保像虚拟机一样加载内容。
对于场景 #2,只读就可以了,只要确保你确实以只读方式安装它即可。--ro
将在 中执行此操作guestmount
。但读写肯定会导致损坏。
答案2
只要您执行正常的文件系统卸载并分离映像,它就是“安全的”。 “raw” 没有“节省空间”功能,它只是一个原始磁盘映像。 qcow2 应该可以正常工作。
除非文件系统明确为集群共享存储环境而设计(这种情况非常少见),否则这会破坏文件系统。