19장. 호스트와 가상 머신 간 파일 공유
호스트 시스템과 실행되는 VM(가상 머신) 간에 데이터를 공유해야 하는 경우가 많습니다. 이를 신속하고 효율적으로 수행하려면 시스템에 NFS 파일 공유를 설정할 수 있습니다. RHEL 9에서 새로 지원되는 기능은 virtiofs
파일 시스템을 사용하여 Linux VM과 데이터를 공유할 수도 있습니다.
19.1. NFS를 사용하여 호스트와 가상 시스템 간의 파일 공유
연결된 RHEL 9 호스트 시스템과 VM(가상 머신) 간의 효율적인 파일 공유를 위해 VM이 마운트하고 액세스할 수 있는 NFS 공유를 내보낼 수 있습니다. 그러나 Linux VM에서는 일반적으로 virtiofs
기능을 사용하는 것이 더 편리합니다.
사전 요구 사항
nfs-utils
패키지가 호스트에 설치되어 있습니다.# dnf install nfs-utils -y
VM과 공유할 디렉터리입니다. 기존 디렉터리를 공유하지 않으려면 새 디렉터리(예: shared-files )를 만듭니다.
# mkdir shared-files
- VM의 네트워크를 통해 호스트를 표시하고 연결할 수 있습니다. 일반적으로 VM이 NAT 및 가상 네트워크의 브리지 유형을 사용하여 연결된 경우입니다.
- 선택 사항: 향상된 보안을 위해 VM이 NFS 버전 4 이상과 호환되는지 확인합니다.
절차
호스트에서 NFS(네트워크 파일 시스템)로 공유할 파일이 있는 디렉터리를 내보냅니다.
파일을 공유할 각 VM의 IP 주소를 가져옵니다. 다음 예제에서는 testguest1 및 testguest2 의 IP를 가져옵니다.
# virsh domifaddr testguest1 Name MAC address Protocol Address ---------------------------------------------------------------- vnet0 52:53:00:84:57:90 ipv4 192.168.124.220/24 # virsh domifaddr testguest2 Name MAC address Protocol Address ---------------------------------------------------------------- vnet1 52:53:00:65:29:21 ipv4 192.168.124.17/24
호스트에서
/etc/exports
파일을 편집하고 공유할 디렉토리, 공유할 VM의 IP 및 공유 옵션이 포함된 행을 추가합니다.<shared_directory> <VM1-IP(options)> <VM2-IP(options)> [...]
예를 들어 다음에서는 testguest1 및 testguest2 를 사용하여 호스트의
/usr/local/shared-files
디렉터리를 공유하고 VM이 디렉터리의 콘텐츠를 편집할 수 있습니다./usr/local/shared-files/ 192.168.124.220(rw,sync) 192.168.124.17(rw,sync)
참고Windows VM과 디렉터리를 공유하려면 Windows NFS 클라이언트에 공유 디렉터리에 쓰기 권한이 있는지 확인해야 합니다. 간단한 방법은
/etc/exports
파일에서all_squash
,anonuid
,anongid
옵션을 사용하는 것입니다.예를 들면 다음과 같습니다.
/usr/local/shared-files/ 192.168.124.220(rw,sync,all_squash,anonuid=<directory-owner-UID>,anongid=<directory-owner-GID>)
< directory-owner-UID > 및 < directory-owner-GID >는 호스트에서 공유 디렉터리를 소유한 로컬 사용자의 UID 및 GID입니다.
NFS 클라이언트 권한 관리를 위한 다른 옵션을 살펴보려면 보안 NFS 가이드를 따르십시오.
업데이트된 파일 시스템을 내보냅니다.
# exportfs -a
nfs-server
서비스가 실행 중인지 확인합니다.# systemctl start nfs-server
호스트 시스템의 IP 주소를 가져옵니다. 이는 나중에 VM에 공유 디렉터리를 마운트하는 데 사용됩니다.
# ip addr [...] 5: virbr0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:32:ff:a5 brd ff:ff:ff:ff:ff:ff inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0 valid_lft forever preferred_lft forever [...]
관련 네트워크는 파일을 공유하는 VM에서 호스트에 연결하는 데 사용되는 네트워크입니다. 일반적으로
virbr0
입니다.
/etc/exports
파일에 지정된 Linux VM에 공유 디렉터리를 마운트합니다.# mount 192.168.124.1:/usr/local/shared-files /mnt/host-share
이 예제에서는 다음을 수행합니다.
-
192.168.124.1
은 호스트의 IP 주소입니다. -
/usr/local/shared-files
는 호스트에서 내보낸 디렉토리에 대한 파일 시스템 경로입니다. -
/mnt/host-share
는 VM의 마운트 지점입니다. 마운트 지점이 빈 디렉토리여야 합니다.
-
/etc/exports
파일에 지정된 Windows VM에 공유 디렉터리를 마운트하려면 다음을 수행합니다.- 관리자로 PowerShell 쉘 프롬프트를 엽니다.
NFS-Client
패키지를 설치합니다. 설치 명령은 Windows의 서버 및 데스크탑 버전에 따라 다릅니다.서버 버전의 Windows에서 다음을 수행합니다.
# Install-WindowsFeature NFS-Client
데스크탑 버전의 Windows에서 다음을 수행하십시오.
# Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
호스트에서 내보낸 디렉터리를 Windows VM에 마운트합니다.
# C:\Windows\system32\mount.exe -o anon \\192.168.124.1\usr\local\shared-files Z:
이 예제에서는 다음을 수행합니다.
-
192.168.124.1
은 호스트의 IP 주소입니다. -
/usr/local/shared-files
는 호스트에서 내보낸 디렉토리에 대한 파일 시스템 경로입니다. -
z:
마운트 지점으로 사용될 드라이브 문자입니다. 시스템에서 사용하지 않는 드라이브 문자를 선택해야 합니다.
-
검증
호스트와 VM 간에 파일을 공유할 수 있는지 확인하려면 VM에서 공유 디렉터리의 콘텐츠를 나열합니다. 다음 예에서 < mount_point> 를 마운트된 공유 디렉터리의 파일 시스템 경로로 바꿉니다.
$ ls <mount_point> shared-file1 shared-file2 shared-file3