20장. 호스트와 가상 머신 간의 파일 공유
호스트 시스템과 실행되는 가상 머신(VM) 간에 데이터를 공유해야 하는 경우가 많습니다. 이를 빠르고 효율적으로 수행하려면 시스템에 NFS 파일 공유를 설정할 수 있습니다. 또는 virtiofs
를 사용하여 Linux 및 Windows VM과 데이터를 공유할 수도 있습니다.
20.1. NFS를 사용하여 호스트와 가상 머신 간의 파일 공유
RHEL 9 호스트 시스템과 VM(가상 머신) 간의 효율적인 파일 공유를 위해 VM에서 마운트하고 액세스할 수 있는 NFS 공유를 내보낼 수 있습니다.
그러나 Linux VM에서는 일반적으로 virtiofs
기능을 사용하는 것이 더 편리합니다.
사전 요구 사항
nfs-utils
패키지가 호스트에 설치되어 있습니다.# dnf install nfs-utils -y
-
NAT
또는브리지
유형의 가상 네트워크는 호스트를 VM에 연결하도록 구성됩니다. - 선택 사항: 보안을 개선하기 위해 VM이 NFS 버전 4 이상과 호환되는지 확인하십시오.
프로세스
호스트에서 NFS(네트워크 파일 시스템)로 공유할 파일이 있는 디렉터리를 내보냅니다.
VM과 기존 디렉터리를 공유합니다. 기존 디렉터리를 공유하지 않으려면 새 디렉터리를 생성합니다.
# mkdir shared-files
호스트에서 파일을 공유할 각 VM의 IP 주소를 가져옵니다(예: testguest1 및 testguest2).
# virsh domifaddr testguest1 Name MAC address Protocol Address ---------------------------------------------------------------- vnet0 52:53:00:84:57:90 ipv4 192.0.2.2/24 # virsh domifaddr testguest2 Name MAC address Protocol Address ---------------------------------------------------------------- vnet1 52:53:00:65:29:21 ipv4 192.0.2.3/24
호스트에서
/etc/exports
파일을 편집하고 공유할 디렉터리, 공유할 VM IP 및 추가 옵션이 포함된 행을 추가합니다./home/<username>/Downloads/<shared_directory>/ <VM1-IP(options)> <VM2-IP(options)> ...
다음 예제에서는 호스트의
/usr/local/shared-files
디렉터리를 testguest1 및 testguest2 와 공유하고 VM에서 디렉터리의 콘텐츠를 편집할 수 있도록 합니다./usr/local/shared-files/ 192.0.2.2(rw,sync) 192.0.2.3(rw,sync)
참고Windows VM과 디렉터리를 공유하려면 Windows NFS 클라이언트에 공유 디렉터리에 쓰기 권한이 있는지 확인해야 합니다.
/etc/exports
파일에서all_squash
,
옵션을 사용할 수 있습니다.anonuid
및ongid/usr/local/shared-files/ 192.0.2.2(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
VM에 공유 디렉터리를 마운트할 호스트 시스템의 IP 주소를 가져옵니다.
# 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.0.2.1/24 brd 192.0.2.255 scope global virbr0 valid_lft forever preferred_lft forever ...
관련 네트워크는 호스트를 VM과 연결하여 파일을 공유합니다. 일반적으로
virbr0
입니다.
/etc/exports
파일에 지정된 Linux VM에 공유 디렉터리를 마운트합니다.# mount 192.0.2.1:/usr/local/shared-files /mnt/host-share
-
192.0.2.1
: 호스트의 IP 주소입니다. -
/usr/local/shared-files
: 호스트에서 내보낸 디렉토리의 파일 시스템 경로입니다. /mnt/host-share
: VM의 마운트 지점참고마운트 지점은 빈 디렉터리여야 합니다.
-
/etc/exports
파일에 언급된 대로 Windows VM에 공유 디렉터리를 마운트하려면 다음을 수행합니다.- 관리자로 PowerShell 쉘 프롬프트를 엽니다.
Windows에
NFS-Client
패키지를 설치합니다.서버 버전에 설치하려면 다음을 입력합니다.
# Install-WindowsFeature NFS-Client
데스크탑 버전에 설치하려면 다음을 입력합니다.
# Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
Windows VM에서 호스트에서 내보낸 디렉터리를 마운트합니다.
# C:\Windows\system32\mount.exe -o anon \\192.0.2.1\usr\local\shared-files Z:
이 예제에서는 다음을 수행합니다.
-
192.0.2.1
: 호스트의 IP 주소입니다. -
/usr/local/shared-files
: 호스트에서 내보낸 디렉토리의 파일 시스템 경로입니다. Z:
마운트 지점의 드라이브 문자입니다.참고시스템에서 사용하지 않는 드라이브 문자를 선택해야 합니다.
-
검증
호스트와 VM 간에 파일을 공유할 수 있도록 VM의 공유 디렉터리 콘텐츠를 나열합니다.
$ ls <mount_point> shared-file1 shared-file2 shared-file3
이 예에서는 < mount_point >를 마운트된 공유 디렉터리의 파일 시스템 경로로 바꿉니다.
추가 리소스