是否可以在不关闭虚拟机(QEMU+KVM)的情况下从 QCOW2 映像中删除快照?运行不会破坏数据一致性吗?如果可以,如果在删除快照之前qemu-img snapshot -d ...
运行然后运行,会破坏一致性吗?您觉得如何?virsh pause ...
virsh resume ...
谢谢!
是否可以在不关闭虚拟机(QEMU+KVM)的情况下从 QCOW2 映像中删除快照?运行不会破坏数据一致性吗?如果可以,如果在删除快照之前qemu-img snapshot -d ...
运行然后运行,会破坏一致性吗?您觉得如何?virsh pause ...
virsh resume ...
谢谢!
我在 Proxmox VE 8.2(在 Debian 12 上)下运行 Windows 客户机,并且想向客户机隐藏有关底层物理硬件的信息。
我已全额支付了某库存管理软件的永久许可证费用,但该软件的支持已“终止”,供应商已决定关闭其许可证服务器。他们已向我颁发了离线访问证书,但问题在于:
为了降低应用程序检测到重大硬件变化的可能性,我已将应用程序安装在 Windows 虚拟机上。(主机是 Linux 上的 KVM。)我希望能够自由地将 VM 迁移到不同的物理机,在必要时升级运行虚拟机管理程序的 PC 上的硬件等。
我不知道该应用程序用来检测硬件变化的算法,但我怀疑它可能会考虑以下事项:
其中一些信息(例如 Windows 系统信息应用程序中显示的 CPU 信息)似乎是从 VM 主机获取的,并通过虚拟机管理程序传递给客户机。
您能告诉我应该调整哪些 Proxmox(或 Qemu/KVM)设置来隐藏(或覆盖或冻结)VM 客户机可见的硬件标识符吗?
我在 Hetzner 有一个运行 KVM 的专用 Ubuntu 22.04 服务器。我已将附加子网中的 IP 地址分配给来宾虚拟机。我可以按预期通过公共 IP 地址访问来宾虚拟机。
我收到了一封来自 Hetzner 的电子邮件,称我正在使用“未经允许的”MAC 地址,并威胁要阻止服务器。“不允许的”MAC 地址属于来宾虚拟机。Hetzner 支持人员表示“您必须确保您的虚拟机的 MAC 地址不会在网络设备上的公共上行链路中可见。” 有人知道如何遵守 Hetzner 的网络规则吗?这是我的配置:
$ sudo cat /etc/netplan/01-netcfg.yaml
### Hetzner Online GmbH installimage
network:
version: 2
renderer: networkd
ethernets:
enp98s0f0:
match:
macaddress: xx:xx:xx:xx:xx:fa
dhcp4: no
dhcp6: no
bridges:
br0:
macaddress: xx:xx:xx:xx:xx:fa
interfaces:
- enp98s0f0
dhcp4: no
dhcp6: no
addresses:
- aa.bb.cc.108/32 # Physical NIC (Main IP)
- aa.bb.cc.65/28 # First usable IP of the additional subnet
routes:
- to: 0.0.0.0/0
via: aa.bb.cc.105 # Gateway for Main IP on physical NIC
on-link: true
- to: aa.bb.cc.64/28 # Additional subnet
via: aa.bb.cc.65 # First usable IP of the additional subnet assigned to physical NIC above
on-link: true
nameservers:
addresses:
- 185.12.64.2
- 185.12.64.1
parameters:
stp: false
forward-delay: 0
$ cat /etc/sysctl.d/10-forwarding.conf
net.ipv4.ip_forward=1
#net.ipv4.conf.enp98s0f0.send_redirects=0
net.ipv4.conf.all.proxy_arp=1
net.ipv4.conf.all.forwarding=1
$ cat br0.xml
<network>
<name>br0</name>
<forward mode='bridge'/>
<bridge name='br0'/>
</network>
$ sudo cat /etc/netplan/01-netcfg.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
enp1s0:
addresses:
- aa.bb.cc.67/28 # Additional subnet
nameservers:
addresses:
- 185.12.64.2
- 185.12.64.1
search: []
routes:
- to: default
via: aa.bb.cc.65 # First usable IP of the additional subnet assigned to physical NIC
version: 2
vagrant-libvirt-qemu/kvm-chain 中的哪个元素负责实际配置虚拟机?就像编辑网络配置文件一样。这不是完全取决于虚拟机操作系统的细节吗?
作为示例,我在以下行中得到Vagrantfile
:
config.vm.box = "archlinux/archlinux"
config.vm.network :private_network, :libvirt__network_name => "default", :mac => "52:54:00:00:00:1f", :ip => "192.168.30.7"
...并且VM最终在所有接口上都有dhcpcd(客户端守护进程),而systemdnetworkctl
显示它本身管理所有接口(具有静态配置的接口,显然与dhcpcd冲突)。-- 任何接口都应该只有其中一个人负责......
那么什么实体将文件放入其中呢/etc/systemd/network
?该实体如何确定该虚拟机中正在使用 systemd?该实体(控制虚拟机配置的旋钮)是否在某处记录了这些详细信息?
我有一台运行 Proxmox 的主机,上面有一些虚拟机。由于某些应用程序的内存使用情况具有不可预测性,并且希望在有可用内存时为某些虚拟机(如数据库)提供内存用于页面缓存,因此我过度配置了内存。
我尝试通过尝试使用比主机更多的内存来测试此设置的可靠性,并且此 OOM 杀死了虚拟机,而不是尝试回收其他虚拟机的页面缓存。
我可以做些什么来让气球驱动程序回收内存,还是我误解了内存气球的工作原理?
有一个专用的 Ubuntu Server 主机,具有单个网络接口但具有两个 IP 地址:
root@server:~# cat /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eno3:
dhcp4: true
match:
macaddress: 00:00:00:00:00:00
set-name: eno3
addresses: [IP-A/24, IP-B/32]
本地ip地址什么时候IP-A
分配给服务器,IP-B
是我签约的额外ip地址。当配置使用netplan apply
一切都工作得很好时,WEB服务器通过IP地址退出IP-A
,从curl我可以看到如何从以下位置访问互联网IP-B
:
wget -qO- http://checkip.dyndns.com/ --bind-address IP-A
... Current IP Address: IP-A
wget -qO- http://checkip.dyndns.com/ --bind-address IP-B
... Current IP Address: IP-B
问题是我也有一个带kvm
( ) 的虚拟机,如何使虚拟机使用而不是默认情况下的方式virsh
上网?IP-B
IP-A
我的网络接口:
root@yhojann:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 11:11:11:11:11:11 brd ff:ff:ff:ff:ff:ff
inet IP-A/24 brd x.x.x.255 scope global dynamic eno3
valid_lft 63801sec preferred_lft 63801sec
inet IP-B/32 scope global eno3
valid_lft forever preferred_lft forever
inet6 ffff::fff:ffff:ffff:ffff/64 scope link
valid_lft forever preferred_lft forever
3: eno4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 22:22:22:22:22:22 brd ff:ff:ff:ff:ff:ff
17: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 33:33:33:33:33:33 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
18: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 44:44:44:44:44:44 brd ff:ff:ff:ff:ff:ff
20: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
link/ether 44:44:44:44:44:44 brd ff:ff:ff:ff:ff:ff
我试图找出是否可以使用配置 kvm 网络virsh net-edit default
但我还没有找到任何参考,允许使用主主机的特定出口 IP 地址,而无需使用新的虚拟接口并使用 iptables 重定向数据包,因为这会导致连接出现很大的延迟。
有没有更“原生”的方法来告诉kvm使用特定的IP?
显示的 IP 地址和 MAC 地址仅供参考。我使用 ufw 来管理连接。
如果添加了三个virtio-blk
设备,VM 会在 Windows 10 启动过程中崩溃。附件blockdev
没有影响。VM 使用两个virtio-blk
.
qemu-system-x86_64 \
...
-device virtio-blk,drive=c,bus=pci.3,addr=0x0,write-cache=on,bootindex=1 \
-device virtio-blk,drive=d,bus=pci.4,addr=0x0,write-cache=on \
-device virtio-blk,drive=e,bus=pci.5,addr=0x0,write-cache=on \
...
qemu-system-x86_64
退出而不打印任何信息。这种情况如何调试?发生这种情况的原因可能是已知的。
上下文:Kubernetes、特权 Debian 容器、Qemu 5.2.0
libvirt 是否能够进行实时存储迁移但将 VM 保持在同一主机上?
我在一台主机上有两个 NFS 网络文件系统池。我想将底层 qcow2 磁盘文件从一个池实时迁移到另一个池。
我找不到任何仅与实时存储迁移相关的文档。所有示例和文档似乎都需要同时进行实时 VM 迁移。
我正在尝试建立一个系统,让我在一组主机上拥有一些进程,这些主机位于一个(屏蔽)cpuset 中,而其他所有内容(即所有虚拟机)都在另一个主机中。这里的目标是拥有一个超融合系统,其中虚拟机在任意一组 CPU 内核上运行,而存储进程在其他内核上运行,并具有隔离性。我选择了 cpuset 来完成这项任务,因为这似乎是“最简单”的方法。
但是,这似乎无法正常工作。首次设置 cset shield 时可以移动 VM,但稍后启动 VM 会导致如下错误:
libvirt: Cgroup error : Invalid value '0-31' for 'cpuset.cpus': Invalid argument
显然,它试图将虚拟机放在不允许的根 cset 中。这是一个非常默认的配置,只需指定 VM 中的核心数量,无需考虑单个 CPU ID 或任何此类调整(这是此设置工作的要求;节点可能是不对称的,具有不同的核心数量、拓扑等,而虚拟机可以在它们周围实时迁移)。
但总的来说,我想知道:是否可以将 Libvirt/KVM 配置为默认使用特定的 cpuset,而无需以任何方式重新配置 VM(无需手动配置 CPU 固定恶作剧),并且无需任何手动调整 per-工艺依据?