我想要一种在运行时备份 qcow2 文件的 KVM VPS 的强大方法。找了半天,发现可以用rsync做实时备份。我对 rsync 使用了以下命令:
rsync -avh /vms/base.qcow2 /backup/backup.qcow2
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是我担心如果在由于写入和删除操作(例如安装新软件或更新)而更改 VPS 时进行备份,则可能会损坏备份 qcow2 映像。
因此,从实时 VPS 的快照中进行备份似乎是更有趣的选择。
我使用以下命令来备份正在运行的 VPS:
1.创建快照:
qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2
Run Code Online (Sandbox Code Playgroud)
2.以原始图像格式(.img)转换快照:
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img
Run Code Online (Sandbox Code Playgroud)
要恢复 VPS:
3.在qcow2图像中转换原始图像:
qemu-img convert -O qcow2 /backup/backup.img base.qcow2
Run Code Online (Sandbox Code Playgroud)
然后我们就可以通过virsh create base.xml命令启动VPS了。
即使这种方法也很有效,但我仍然不确定这是否是备份运行 VPS 的正确方法。我在这里和这里找到了关于 qemu-img 命令的很好的文档。但是他们没有提到将实时 VPS 的快照转换为原始图像的任何内容。
哪种方式更适合VPS实时备份?在原始图像中转换快照安全吗?
如果我能得到关于快照和基本文件在某些条件下如何表现的详细文档,那将非常有帮助。
也许我们也可以将基本 qcow2 映像转换为原始备份文件,而不是转换快照。所以命令流将是:
1. 创建快照
2. 将基本 qcow2 转换为备份原始映像
3. 将快照更改提交到基本映像
4. 删除快照
我试过了,它在 …
运行 debian ( Linux Rick 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux)
查看我的 cpuinfo 我可以看到我有 vmx 支持:
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm …Run Code Online (Sandbox Code Playgroud) 在 Debian-Stretch 主机(连接到物理 LAN)上,我有一个新的 docker 安装(v18.09)和一个数据库容器(端口映射到主机),我运行 KVM/libvirt 和一些 Debian-Stretch VM。我可以从 LAN 访问 docker 容器和 VM(取决于通过 SSH 隧道或直接配置的配置),但我很难从 VM 访问 docker 容器。
# brctl show
bridge name bridge id STP enabled interfaces
br-f9f3ccd64037 8000.0242b3ebe3a0 no
docker0 8000.024241f39b89 no veth35454ac
virbr0 8000.525400566522 yes virbr0-nic
Run Code Online (Sandbox Code Playgroud)
在阅读了几天之后,我在这篇文章中找到了一个非常引人注目的解决方案Docker 和 KVM 带有一个我没有开始工作的桥(原始)。该解决方案建议使用一行配置 daemon.json 代码启动 docker 以使用 KVM“默认”网桥。那该有多好!有希望吗?
我在 KVM 虚拟机之间尝试了两种不同的网络配置。在这两种情况下,VM 与 LAN+路由器+云之间的通信都完美无缺,但我只是不知道如何越过围栏 - 到更绿的草地...... :)
Conf 1 - KVM 默认桥接与 NAT:我可以通过 ssh 连接到 Debian 主机并访问 docker 容器端口,但是否有直接路由的设置?
会议 2 - …
libvirt linux-networking kvm-virtualization docker debian-stretch
df并ls在我的主机上报告不同的大小,因为分配的大小与 EXT4 文件系统中实际使用的空间量之间存在差异。问题是两者都报告了错误的大小。qemu-img也不报告来宾文件系统(也是 EXT4)内使用的实际空间。
在主机上:
# qemu-img info sdb.raw
image: sdb.raw
file format: raw
virtual size: 2.0T (2173253451776 bytes)
disk size: 1.9T
# ls -larth sdb.raw
-rw-r--r-- 1 hypervisor hypervisor 2.0T Mar 6 13:47 sdb.raw
# du -sh sdb.raw
1.9T sdb.raw
# fdisk -l sdb.raw
Disk sdb.raw: 2 TiB, 2173253451776 bytes, 4244635648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes …Run Code Online (Sandbox Code Playgroud) virtualization filesystems virtual-machines qemu kvm-virtualization
我正在研究 QEMU/KVM 和 Firecracker/KVM。据我了解,Firecracker 和 QEMU 都与 KVM 通信,通过将 CPU 模式更改为来宾到主机(反之亦然),最终使硬件辅助虚拟化受益。
在CPU的guest模式下,guest甚至可以直接执行其特权指令,那么为什么我们还需要半虚拟化呢?
在 Firecracker 中,仅模拟了 5 个设备,例如
即使在这种极简设计中,我们也必须放置半虚拟化驱动程序。难道我们不能仅仅依靠硬件辅助虚拟化吗?
virtualization virtual-machines qemu paravirtualization kvm-virtualization
我有两个 windows vms,windows server 2012 和 windows server 2008。都使用 kvm 和 libvirt。我最近决定增加我的屏幕分辨率选项,这需要从默认的“卷云”视频卡更改为“vga”选项。这对我的 Windows Server 2008 虚拟机来说就像一个魅力,为我提供了从 800x600 到 2560x1600 的几个分辨率选项。但是,这不适用于 Windows Server 2012。
这是我的 xml 模板中与显卡有关的代码:
<video>
<model type='vga' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
我怀疑这是驱动程序的问题。我试图弄清楚哪些驱动程序将与 KVM 的模拟 VGA 卡兼容,但我发现关于该卡的所有内容是它是“带有 Bochs VESA 扩展的虚拟 VGA 卡”,并且在谷歌上搜索“驱动程序”并没有发现任何有用的信息。
在我的 windows 2008 vm 中,驱动程序是一个“标准 VGA 图形适配器”,它看起来像是 windows 的通用驱动程序,可以解释为什么我不需要下载任何新东西来让 vga 卡在 windows 2008 上工作。但是,在 windows 2012 中驱动程序仅显示为“Microsoft 基本显示适配器”,尝试更新驱动程序会导致 Windows 告诉我一切都是最新的。在这个驱动下,我只得到了1024x768的分辨率,这比使用cirrus卡还要糟糕,至少达到了1280x1024。
基于这个问题,我理解 VGA 卡的不良行为是基本显示适配器的非常基本功能的结果: 卡在低分辨率下:Windows Server 2012 中无法识别显示器和显示适配器
据我所知,我需要两件事之一。A)更好的驱动程序,可以为虚拟卡提供更好的分辨率支持。B) 具有更高级功能的新虚拟卡(KVM 能做到这一点吗?)
最后一种可能性是 C) …
我有一台 Windows 电脑。我有一台 Debian 服务器(没有桌面环境)。我有一个通过 KVM/QEMU 在 Debian 服务器上运行的 Ubuntu VM。
问题:如何连接到 Ubuntu VM 并开始安装过程?
我对 Linux 有一些经验,但我对 Linux 上的虚拟化很陌生。我想在我的 Debian 服务器上创建多个虚拟机。我通过 ssh 从我的 Windows PC 连接到 Debian 服务器。Debian 服务器没有安装任何桌面环境。我使用了以下教程https://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server,但在第 3 步它告诉我安装图形工具 virt-manager。正如预期的那样,我无法通过 ssh 启动 virt-manager。
我如何连接到 VM 并安装操作系统以及 sshd 服务器。我想在初始安装后通过 ssh 连接到我的 VM。
我发现我可以通过 VNC 连接到虚拟机,一些教程告诉我使用端口转发从 Windows ssh 到 Debian,然后在 Windows 上启动 VNC 客户端。但是它不会连接到 VNC,因为我不知道如何配置 VM 或 virsh 以使用正确的端口。
这个 Ubuntu 教程展示了一种通过控制台直接连接的方法:https : //help.ubuntu.com/community/KVM/Access 我想使用这种方法,但它需要新贵,我不想卸载我的 systemd-sysv。教程是为 Ubuntu 9.4 …
对于新功能,我最近将 qemu-kvm 1.5.3 更新为 qemu 2.5.0,但是我看到了几个 qemu 二进制文件,/usr/local/bin/qemu-x86_64并且/usr/local/bin/qemu-system-x86_64. 似乎qemu-system-x86_64是模拟器程序,因为 libvirt 无法识别qemu-x86_64. 那么 qemu-x86_64 有什么用呢?
根据这个 qemu doc:
x86 的 qemu-kvm fork(已弃用,现在使用上游 QEMU)
似乎 qemu 正在取代 qemu-kvm。但是如果使用qemu而不是qemu-kvm,guest CPU还是由KVM提供吗?如果不是这样,性能会不会更差?
今天我想增加一个虚拟机的大小,所以我做了我一直在做的事情(以前做过):
qemu-img resize diskimage.qcow2 +22GB
Run Code Online (Sandbox Code Playgroud)
然后文件损坏了,VM 不再启动。我尝试从 CD 启动 VM 以调整分区,但系统将不再读取磁盘:
qemu-img check -r all diskimage.qcow2
tcmalloc: large alloc 389841715200 bytes == (nil) @ 0x7fdb4ea66bf3 0x7fdb4ea88488 0x7fdb4e5674a6 0x7fdb50236a37 0x7fdb50236bc8 0x7fdb50237011 0x7fdb5023941e 0x7fdb5023d891 0x7fdb5027848b 0x7fdb5027c196 0x7fdb491efb35 0x7fdb5021ee4d (nil)
No errors were found on the image.
Run Code Online (Sandbox Code Playgroud)
没有错误?听起来不错,但virsh start vm不起作用,日志说:
2017-05-21T10:02:30.755824Z qemu-system-x86_64: -drive file=/.../diskimage.qcow2,format=qcow2,if=none,id=drive-virtio-disk0: could not open disk image /.../diskimage.qcow2: qcow2: Image is corrupt; cannot be opened read/write
Run Code Online (Sandbox Code Playgroud)
我尝试转换为 raw 但转换失败(退出 1):
qemu-img convert -f qcow2 diskimage.qcow2 -O raw diskimage.raw
qcow2: …Run Code Online (Sandbox Code Playgroud) 当尝试执行安装程序时,安装程序在选择操作系统类型后停止,结果如下:
“此电脑不满足安装此版本 Windows 的最低系统要求。有关更多信息,请访问...”
出了什么问题,我的电脑是最新的并且 Windows 有足够的内存?