是否有可能不使用 virt-clone 之类的工具来克隆正在运行的 kvm 机器?
他们已经在生产中使用原始虚拟机,我无法关闭它。如果我不在乎克隆上的临时数据损坏(初始 fsck 可以修复),我是否可以将 qcow 映像文件复制到新名称,创建使用该磁盘的新虚拟机定义并启动机器?
答案1
如果您不关心内存数据,您可以对后备设备进行快照并复制该快照。
这当然需要一个具有快照支持的存储池(主要是 LVM 或 ZFS,因为 BTRFS 对于虚拟机存储来说非常慢)。
答案2
我怀疑是仅有的可以通过避免使用 virt-clone 来克隆磁盘,因为(如前所述)virt-clone 将拒绝与正在运行的 VM 一起工作。因此,您必须使用其他东西来复制实际的磁盘映像。
我认为基本的答案是你可以尝试并希望自己能幸运。
获取客户机配置的“快照”非常简单(virsh dumpxml NAME
可以这样做)。如果您有多个磁盘(即,如果您有一个 OS 磁盘和 n+1 个数据磁盘),那么我会尝试避免克隆 OS 磁盘,看看是否可以使用全新安装。
然而,如果有任何除了复制磁盘映像之外,我可能更喜欢这种方法。例如,如果这一切都与数据库服务器有关,我可能会使用数据库自己的设施在实例之间安全地复制数据。如果您直接处理文件系统,那么可能值得看看 DRBD 之类的东西是否可以提供帮助,或者像 rsync 这样的简单东西是否可以提供帮助。
基本上,我会仔细考虑您实际需要做什么,并尽量避免花时间尝试复制正在使用的磁盘映像(除了副本可能是什么样子的问题之外,我还会担心尝试复制磁盘可能会对原始磁盘造成什么影响)。
答案3
我有一个正在运行的虚拟机。在其中,我已通过 ssh 连接到 KVM 基础计算机,并使用 将其备份磁盘和快照复制到 nvme 驱动器cp -ar
。在复制之前,我还格式化并分区了上述 nvme ...然后使用
virsh edit mykvm
改变了 id、磁盘位置和名称...
然后关闭我的机器并重启新机器。唯一消失的是打开的窗口和 chrome 会话...
除非您正在编写一些系统或应用程序文件,否则它似乎正在工作......
我当然不会用这个。我会对它进行实验,实验之后我会将结果应用到原始文件中。
但是,如果我必须将其用作主操作系统快照。我只需进行文件系统检查,然后进行系统文件检查 (sha1sum),或者使用任何内置命令来检查系统文件。
答案4
使用 RAW 磁盘映像格式完全可以做到这一点。我不知道 qcow2...
Debian.img:x86 启动扇区;分区 1:ID=0x83,活动,启动头 32,启动扇区 2048,497664 个扇区;分区 2:ID=0x5,启动头 59,启动扇区 501758,104353794 个扇区,代码偏移量 0x63
Debian2.img:x86 启动扇区;分区 1:ID=0x83,活动,启动头 32,启动扇区 2048,497664 个扇区;分区 2:ID=0x5,启动头 59,启动扇区 501758,104353794 个扇区,代码偏移量 0x63
为了测试,我克隆了一个运行中的 Linux Mint 系统,其中包含所有功能。然后使用新映像创建了一个新虚拟机,它在启动时甚至没有文件系统不一致。虽然这只是一个小型桌面虚拟机,但我即将“克隆”的是一个正在生产中的 LAMP 服务器,数据库 I/O 很高。
我真的不在乎不一致,只是想节省一些时间来设置 LAMP 环境,我想在开始时创建一个基本映像或快照第一个 Web 服务器是个好主意,但在完全配置和测试之后为时已晚,他们立即开始在生产中使用它。