15장. 호스트와 가상 머신 간의 파일 공유
호스트 시스템과 실행되는 가상 머신(VM) 간에 데이터를 공유해야 하는 경우가 많습니다. 이를 빠르고 효율적으로 수행하려면 시스템에 NFS 파일 공유를 설정할 수 있습니다.
15.1. NFS를 사용하여 호스트와 가상 머신 간의 파일 공유 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 8 호스트 시스템과 VM(가상 머신) 간의 효율적인 파일 공유를 위해 VM에서 마운트하고 액세스할 수 있는 NFS 공유를 내보낼 수 있습니다.
사전 요구 사항
nfs-utils패키지가 호스트에 설치되어 있습니다.# yum 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 -anfs-server서비스를 시작합니다.# systemctl start nfs-serverVM에 공유 디렉터리를 마운트할 호스트 시스템의 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 >를 마운트된 공유 디렉터리의 파일 시스템 경로로 바꿉니다.