Windows 호스트 환경에서 CentOS 7 가상 머신을 운영할 때, 두 OS 사이의 데이터 교환은 빈번하게 발생하는 작업입니다. 단순히 파일을 드래그 앤 드롭하거나 FTP를 사용하는 방식은 대량의 데이터 처리나 실시간 코드 동기화 측면에서 효율성이 떨어집니다. VMware Tools에서 제공하는 공유 폴더(Shared Folders) 기능을 활용하면 네트워크 설정 없이도 고성능 파일 공유 환경을 구축할 수 있습니다.
1. 공유 폴더 도입의 이점
공유 폴더는 호스트와 게스트 OS 간에 실시간 동기화되는 디렉토리를 생성합니다. 이는 특히 다음과 같은 시나리오에서 유용합니다.
- IDE 통합 개발: Windows에서 코드를 작성하고 CentOS 터미널에서 즉시 컴파일 및 실행
- 로그 분석: 가상 머신에서 생성된 로그 파일을 호스트의 전문 분석 도구로 실시간 모니터링
- 데이터 로딩: 대규모 데이터셋을 별도의 복사 과정 없이 가상 머신 내부로 마운트
| 비교 항목 | 공유 폴더 (HGFS) | SCP / FTP | 드래그 앤 드롭 |
|---|---|---|---|
| 동기화 방식 | 실시간 (파일 시스템 레벨) | 수동 전송 | 수동 전송 |
| 설정 복잡도 | 낮음 (최초 1회) | 중간 (서비스 구동 필요) | 없음 |
| 대용량 처리 | 매우 우수 | 우수 | 낮음 |
2. 단계별 구성 프로세스
2.1 호스트 시스템 설정
먼저 VMware Workstation 인터페이스에서 가상 머신이 꺼져 있거나 실행 중인 상태에서 다음 설정을 수행합니다.
- VM 설정(Settings) -> 옵션(Options) 탭 이동
- 'Shared Folders' 항목 선택 후 'Always enabled' 체크
- 'Add' 버튼을 클릭하여 Windows의 로컬 경로 지정
- 공유 이름(Name)을 지정 (예:
win_workspace)
2.2 게스트(CentOS 7) 시스템 확인
VMware Tools가 설치되어 있다면 vmware-hgfsclient 명령어를 통해 호스트에서 설정한 공유 이름을 확인할 수 있습니다.
# 공유 폴더 목록 확인
vmware-hgfsclient
위 명령 실행 시 설정한 win_workspace와 같은 이름이 출력되어야 합니다.
3. 마운트 및 권한 관리
3.1 수동 마운트 테스트
공유 폴더를 시스템에 연결하기 위해 마운트 포인트를 생성하고 연결을 시도합니다.
# 마운트 포인트 생성
sudo mkdir -p /mnt/hgfs
# 공유 폴더 마운트 (FUSE 기반)
sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
3.2 권한 문제 해결 (UID/GID 설정)
기본적으로 마운트된 폴더는 루트 권한으로 설정되어 일반 사용자가 쓰기 작업을 수행할 때 오류가 발생할 수 있습니다. 현재 사용자의 ID를 확인하여 접근 권한을 부여해야 합니다.
# 현재 사용자의 UID와 GID 확인
id
확인된 UID와 GID가 1000이라면 다음과 같이 옵션을 추가하여 마운트합니다.
sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000,gid=1000
3.3 영구 마운트 설정
재부팅 후에도 자동으로 마운트되도록 /etc/fstab 파일에 설정을 추가합니다.
# /etc/fstab 편집
sudo vi /etc/fstab
# 아래 내용 추가
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000 0 0
4. 운영 효율화를 위한 팁
4.1 심볼릭 링크 생성
매번 /mnt/hgfs/... 경로를 입력하는 것은 번거로우므로 사용자의 홈 디렉토리에 바로가기를 생성합니다.
ln -s /mnt/hgfs/win_workspace ~/win_link
4.2 자동 마운트 복구 스크립트
커널 업데이트나 시스템 예외 상황으로 인해 마운트가 해제되는 경우를 대비한 간단한 쉘 스크립트입니다.
#!/bin/bash
# mount-check.sh
MOUNT_PATH="/mnt/hgfs"
REMOTE_HOST=".host:/"
if ! mountpoint -q "$MOUNT_PATH"; then
echo "Mount point is missing. Reconnecting..."
sudo /usr/bin/vmhgfs-fuse "$REMOTE_HOST" "$MOUNT_PATH" -o allow_other,uid=$(id -u),gid=$(id -g)
if [ $? -eq 0 ]; then
echo "Successfully mounted."
else
echo "Mount failed. Please check VMware Tools status."
fi
else
echo "Shared folder is already active."
fi
4.3 성능 최적화
공유 폴더 내에서 수천 개의 작은 파일을 빈번하게 읽고 쓰는 경우, Windows 호스트의 백신 프로그램 실시간 감시 대상에서 해당 공유 폴더를 제외하면 입출력 성능이 크게 향상됩니다. 또한, Git 저장소를 공유 폴더에 직접 두는 경우 인덱싱 속도가 느려질 수 있으므로, 실행 바이너리나 정적 데이터 위주로 공유하는 것이 권장됩니다.