qemu 게스트의 NFS 서버

qemu 게스트의 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. (qemu 포트)를 시도했지만 mount root@localhost:/storage /mnt/storage -t nfs -o port=2222root@localhost가 작동하지 않는 것 같습니다(그러나 작동합니다 sshfs).

Qemu 게스트를 nfs 서버로 사용하는 방법은 무엇입니까?

답변1

모든 답변에 대한 모든 의견을 읽은 후 업데이트하십시오.

귀하의 문제에 대해 가장 먼저 확인한 것은 NAT를 통해 게스트에게 인터넷을 제공할 때 게스트와 호스트 간의 브리지 연결입니다. 몇 가지 스크립트를 사용하여 Fedora 20 HOST에서 이를 수행하는 방법을 보여드리겠습니다! 스크립트는 최신 데비안에서 작동할 수도 있고 작동하지 않을 수도 있습니다!

호스트에서 이 스크립트를 /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 게스트에 구성된 네트워크 장치를 보여줍니다.

특히, qemu 게스트의 IP 주소에 가장 관심이 많을 것입니다. 이 출력에 나타나야 합니다. 위의 예에서 호스트의 IP 주소는 192.168.1.103입니다.

이 정보를 사용하면 이제 NFS 서버 및 클라이언트를 설정할 때 이 IP 주소를 사용할 수 있습니다.

답변3

클라이언트에 nfs 서버를 마운트하는 것은 일반 PC에 nfs 서버를 마운트하는 것과 동일합니다. nfs 서버의 IP만 알면 됩니다.

관련 정보