迄今为止的故事

迄今为止的故事

迄今为止的故事

我们最近从 Linux 笔记本电脑迁移到 Macbook Pro 笔记本电脑(公司 IT 部门不再支持使用 VPN 的原生 Linux 笔记本电脑,因此我们只能使用 Macbook/OSX 设备)。但是,我们所有的开发都需要使用 Ubuntu 和 Debian,因此我们在虚拟机中运行所有内容。我们的计划是使用 QEMU(使用适当的硬件加速hvf) 轻松按需启动虚拟机。我们可以通过以下方式成功启动虚拟机:

qemu-system-x86_64 \
  -m 4096 \
  -smp 4\
  -accel hvf \
  -show-cursor \
  -drive file=/public/my_os_disk.qcow2,if=virtio \
  -net user,hostfwd=tcp::8022-:22 \
  -net nic

这将启动我们的 VM(Ubuntu)实例,它有 4GB RAM、4 个核心、硬件加速,并允许我们ssh通过进入 VM(从 VM 的角度来看是端口 22)ssh -p8022 username@localhost

问题

我们如何在 Linux 客户机上设置 NFS 服务器,以便我们的 Mac/OSX 主机可以共享文件?如果主机也是 Linux,我们可以virtfs像以前一样使用,但我们的解决方案似乎必须涉及网络。我们在 Ubuntu VM 上设置了 NFS 服务器(使用常见文章,1, 2). 然后我们设置 QEMU 启动器脚本来启用NFS 端口(即 111、2049),如下所示:

qemu-system-x86_64 \
  -m 4096 \
  -smp 4\
  -accel hvf \
  -show-cursor \
  -drive file=/public/my_os_disk.qcow2,if=virtio \
  -net user,hostfwd=tcp::8022-:22,hostfwd=tcp::2049-:2049,hostfwd=tcp::111-:111 \
  -net nic

在 Mac 主机(或 OSX 主机)上,我们尝试通过以下方式挂载 NFS 共享(假设 Linux 客户机正在导出/export_from_linux子网上的路径10.0.100.0/24):

mount -t nfs localhost:/export_from_linux  /my_mac_mount_path

然而,这只是无限期地挂起。

在 Mac/OSX 主机和在 QEMU 中运行的 Linux/Ubuntu 客户机之间建立文件共享方式的最佳方法是什么(最好使用 NFS)?

答案1

您不需要 hostfwd 111,只需 2049,或者您也可以使用从 8049 到 2049 的映射;因为 2049 在 macOS 系统上可能被占用

因此,至少您需要让 QEMU 为备用 NFS 端口创建一个映射:

-netdev user,hostfwd=tcp::8049-:2049

现在,您可以在 macOS 端的端口 8049 上挂载 NFS;例如,挂载到 Debian NFSv4 服务器:

sudo mount -o port=8049,vers=4,resvport -t nfs 127.0.0.1:/export_from_linux /my_mac_mount_path

请注意,我们正在使用一个选项在 macOS 端强制执行vers=4(并且您应该在 Linux 端运行与 NSFv4 兼容的服务器;即 Debian 11 的 nfs-kernel-server。

但这里的主要关键是resvport设置。无论出于什么原因,如果没有此设置,macOS 将无法安装。

相关内容