我需要知道如何从主机挂载放置在 qemu 来宾系统上的块设备。因此,在本例中,我们将 NFS 服务器放置在来宾系统上,并将 NFS 客户端放置在主机端。
有很多示例,但我不知道在qemu
从主机系统安装位于来宾上的文件夹时要指定什么地址。
mount root@localhost:/storage /mnt/storage -t sshfs -o port=2222*
适用于sshfs
,但不适用于 NFS (无法识别服务器名称)。
我使用了以下步骤在服务器端:
- 下载并启动 nfs-kernel-server
- 将 /storage_nfs 添加到导出
exportfs -va
上客户端:
- 下载并安装 nfs utils
- 尝试
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即可。