pacman
使用虚拟机内的包管理器( )会随机给我损坏的包,如下所示:
error: <package>: signature from "<whomever>" is invalid
:: File /mnt/var/cache/pacman/pkg/<package>.pkg.tar.xz is corrupted (invalid or corrupted packgage (PGP signature))
我有以下设置:
- Arch Linux 主机(内核
5.3.11.1
) - 然后使用 UFW 防火墙 (
0.36
) - 然后将其配置为仅允许通过
tun0
OpenVPN ( ) 创建的网络接口进行连接2.4.8
。
网络连接在主机上的各个方面都正常工作至少五年了。我尝试设置一个来宾,它也是一个使用 QEMU ( 4.1.0
) 的 Arch Linux,具有以下选项:
qemu-system-x86_64 \
-name 'Arch Linux' \
-display vnc=:0 \
-m size=8G \
-enable-kvm \
-cpu host \
-smp cores=2,threads=2 \
-k en-us \
-boot order=d \
-cdrom "<iso>" \
-drive "if=pflash,format=raw,readonly,file=<file>" \
-drive "if=pflash,format=raw,file=<file>" \
-drive "if=virtio,format=qcow2,file=<file>"
-nic user
我的理解是,如果我没有为其指定任何额外的内容并且客人确实有互联网连接,那么它默认使用。
我尝试在不同的物理位置(SSD、HDD)上重新安装整个系统一百万次,希望是虚拟硬盘导致问题——但当然它没有解决任何问题。为了完整起见,虚拟驱动器创建如下:
qemu-img create -f qcow2 "<file>" 16G
有时,当我尝试足够多次并且很幸运时,我最终docker
在来宾内安装了一个工作安装,并docker
在下载容器时给我带来了有关损坏数据的相同随机错误 - 这让我相信它是一个网络配置相关错误。我尝试在 QEMU 之上使用libvirt
(virsh
和virt-manager
) 希望只有我配置错误,但我再次遇到了同样的问题。
有一次我的设置使用如下所示的网络配置:
# ...
-net "user,hostfwd=tcp::2222-:22,hostfwd=tcp::8000-:8000,hostfwd=tcp::4200-:4200,hostfwd=tcp::9222-:9222,smb=<path>" \
-net nic,model=virtio \
# ...
但这也不再起作用了。此时我对我做错了什么感到非常困惑......
答案1
同时我无法告诉你到底是什么原因导致了这个问题,我可以给你一些故障排除的想法建议:
如果您怀疑网络有问题,可以查看/proc/net/snmp
。原版有点混乱,这就是我建议的原因</proc/net/snmp column -t | less -S
。查看名称包含 的列CsumErrors
。
如果您怀疑损坏发生在磁盘级别(这正是我所怀疑的),请在那里使用 Btrfs,这将使您能够确定地找到它,因为它是 Linux 上唯一大量使用校验和的轻量级通用 FS。
— 当使用来宾虚拟机时fstrim
,我发现 Qcow2 存在一些问题,尤其是 Btrfs 时。 ;-)
答案2
您是否使用 KVM 虚拟机管理器来启动 VM .. 如果是,您可以转到 GUI 中的设备配置文件并检查并将 nic 更改为 virtio.. 删除其他 nic 条目(如果有)