qemu guest 上的 NFS 服务器

qemu guest 上的 NFS 服务器

我需要知道如何从主机挂载放置在 qemu 来宾系统上的块设备。因此,在本例中,我们将 NFS 服务器放置在来宾系统上,并将 NFS 客户端放置在主机端。

有很多示例,但我不知道在qemu从主机系统安装位于来宾上的文件夹时要指定什么地址。

mount root@localhost:/storage /mnt/storage -t sshfs -o port=2222*

适用于sshfs,但不适用于 NFS (无法识别服务器名称)。

我使用了以下步骤在服务器端:

  1. 下载并启动 nfs-kernel-server
  2. 将 /storage_nfs 添加到导出
  3. exportfs -va

客户端:

  1. 下载并安装 nfs utils
  2. 尝试mount root@localhost:/storage /mnt/storage -t nfs -o port=2222(qemu端口)但似乎root@localhost无效(但它适用于sshfs)。

如何使用 qemu guest 作为 nfs 服务器?

答案1

阅读所有答案的所有评论后更新:

我首先看到您的问题是通过 NAT 向访客提供互联网时访客和主机之间的桥接连接。 我将展示如何在 Fedora 20 HOST 上使用几个脚本来做到这一点!脚本可能适用于现代 Debian,也可能不适用于!

在主机上,将此脚本放在 /root/ 或任何位置,将 INTERNET_INTERFACE 替换为您的 eth0 或 p5p1 或 wlo1 或 wlan0。如果您的家庭网络已经使用网络 192.168.0.0/24,则使用其他内容更改 br0 的地址,例如: ifconfig br0 192.168.100.1/24 up 使脚本可执行并运行它:

use vim or nano:
# nano /root/nat.sh

#!/bin/bash
INTERNET_INTERFACE=wlo1
NORMAL_USER=your_username
tunctl -u $NORMAL_USER -t tap0
brctl delbr br0
brctl addbr br0
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 192.168.0.1/24 up
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADE
iptables -I FORWARD 1 -i tap0 -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
service rpcbind restart
service rpcidmapd restart


# chmod +x nat.sh
# ./nat.sh

作为主机上的普通用户启动虚拟机(命令“qemu-kvm”有一些魔力,它不仅仅是qemu!)

$ qemu-kvm -cdrom ~/Downloads/flxde.iso -m 1200 -net nic -net tap,ifname=tap0,script=no

当然,将 -cdrom 替换为您的 -hda 和映像路径,还有 -m 500 或您认为的任何内容,重要的是 -net nic -net......... 设置:)

在来宾机器中,打开互联网(我的网络接口是 Fedora 20 Live Image 上的 ens3,你的网络接口可能是 eth0):

# ifconfig eth0 192.168.0.100/24 up
verify you can ping 192.168.0.1 before adding it as a gateway.
# ip r add default via 192.168.0.1
# echo "nameserver 8.8.8.8" > /etc/resolv.conf
# ping google.com (verify NAT is working)

NFS相关:

常见的: 使用 ping 检查主机 <-> 来宾之间的连接

在访客上(IP 192.168.0.100):

# iptables -F
# service rpcbind restart
# service rpcidmapd restart
# service nfs restart
# vim /etc/exports
/freebsd *(rw,insecure,sync,no_subtree_check,no_root_squash)
# ls -ld /freebsd/
drwxrwxrwx. 4 root root 90 Feb 21 14:41 /freebsd/
# exportfs -var

在主机上:

# service rpcbind restart
# service rpcidmapd restart
# mkdir /freebsd
# mount -o vers=3 192.168.0.100:/freebsd /freebsd

如果事情足够清楚,请告诉我:)

答案2

如果您在 qemu 虚拟机(来宾)中运行 NFS 服务器,那么您应该能够进入 qemu 来宾并运行以下命令:

ifconfig -a

它应该返回类似这样的输出:

eth0      Link encap:Ethernet  HWaddr 00:18:51:D4:AA:12  
          inet addr:192.168.1.103  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::218:51ff:fed4:cc53/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31580565 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28594026 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:22750768353 (21.1 GiB)  TX bytes:25277742297 (23.5 GiB)

设备 ID (eth0) 可能完全是其他东西,但您的结果有望包含输出。此输出显示 qemu guest 中配置的网络设备。

您尤其会对 qemu guest 的 IP 地址最感兴趣。它应该出现在这个输出中。在上面的示例中,主机的 IP 地址是 192.168.1.103。

有了这些信息,您现在应该能够在设置 NFS 服务器和客户端时使用此 IP 地址。

答案3

客户机上挂载nfs服务器与普通PC上的nfs服务器相同。你只需要知道nfs服务器的ip即可。

相关内容