리눅스, 윈도우 VM에 동시에 NAS 마운트하여 파일 공유하기 (GCP Filestore)

2021. 6. 9. 00:59Cloud

GCE (Google Compute Engine, 그냥 VM이라고 부르기도 한다)을 이용하다보면 주로 Linux 로 띄우겠지만 윈도우로 띄우는 경우도 있다. 필자의 회사 프로젝트에서는 Windows에서만 구동가능한 프로그램에서 처리한 데이터를 Linux로 다시 가져와서 처리해야 하는 경우도 있다. 이 경우 양 GCE간에 데이터를 주고받는 방식에는 여러가지가 있겠지만, 본 포스트에서는 GCP의 NAS 스토리지인 Filestore를 이용하여 동시에 NAS 마운트하는 방식을 설명하고자 한다. 이 방식은 크게 데이터 전송속도 이슈는 없으면서, 한쪽에서 대량의 파일들을 한꺼번에 생성하지만 필요한 파일들만 다른 쪽에서 골라서 데이터를 가져간다거나,  마치 같은 공유 디렉토리처럼 쓰고 싶을때는 이 방법이 좋다고 본다. 

 

Filestore: GCP의 NAS 제품이다. 클릭 몇번으로 간편하게 NAS를 생성할 수 있다.

https://cloud.google.com/filestore

 


하려고 하는 것은 대충 이렇다.

그림으로 표현하자면 이렇다.

 

 

Filestore에서 NAS 볼륨 생성

Filestore 메뉴 -> CREATE INSTANCE

 

Instance ID 를 정해주자. 한번 정하면 돌이킬 수 없다니 잘 정하는게 좋겠다.

 

 

Filestore 는 같은 VPC network 에 속해있는 애들끼리만 연결될 수 있다. 즉 Linux GCE와 Windows GCE가 다르면 서로 Filestore로 묶일 수 없다는 거다. 진짜로 그런지 일부러 다른 VPC에 속하는 애들끼리 Filestore에 묶이나 테스트 해봤는데 역시 연결이 안됐다. 미리 Linux GCE와 Windows GCE가 같은 VPC Network에 속해있는지 확인하자. 그다음 File share name 도 정해준다. 흔히 NAS에서 말하는 볼륨이름이다. 다 정했으면 CREATE 클릭해서 완료해준다.

 

좀 기다리다 보면 잘 생성된 것을 확인할 수 있다.

인스턴스명을 클릭해서 상세정보를 보면 아래 마운트 포인트를 확인할 수 있다. 이것만 기억하고 있으면 된다.

 

Linux GCE에서 Filestore 마운트하기 (Ubuntu 20.04)

(Ubuntu 20.04 기준에서 설명하지만, 다른 배포판도 크게 다르지 않다.)

 

NFS 마운트를 위해서는 아래 패키지 설치가 필요하다. 혹시 설치가 되어있지 않다면 설치해주자.

sudo apt update
sudo apt install nfs-common

마운트할 디렉토리를 만들어준다. 

sudo mkdir /filestore_share

이제 마운트만 남았다. 엄청 간단하다.

sudo mount 10.199.245.114:/my_volume /filestore_share

잘 마운트 된 것을 확인할 수 있다.

이렇게 Linux에서 마운트하는 것은 엄청 간단하다.

 

Window GCE에서 Filestore 마운트하기 (Windows Server 2016 Datacenter)

Windows는 Linux 보다 약간 해줘야 할게 많다. 하지만 차근차근 따라하면 된다. 혹시나 막히면 구글 공식 가이드를 참고하자. 잘 정리되어 있다. (https://cloud.google.com/filestore/docs/mounting-fileshares#windows)

 

Powershell 을 관리자 권한으로 실행한다. (관리자 권한으로 실행 안하면 에러난다)

NFS 클라이언트를 설치하고 필요한 설정들을 해준다. 

 

# NFS 클라이언트 설치
Install-WindowsFeature -Name NFS-Client


# 레지스트리 항목 등록
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
    -Name "AnonymousUid" -Value "0" -PropertyType DWORD

New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
    -Name "AnonymousGid" -Value "0" -PropertyType DWORD


# NFS 클라이언트 서비스 재시작
nfsadmin client stop
nfsadmin client start

NFS 클라이언트 설치 명령어 및 결과 화면. 이렇게 나오면 정상적으로 잘 하고 있는거다.

 

이제 마운트를 해본다. 이유는 모르겠지만 위 Powershell 에서는 마운트가 잘 안되고, 커맨드 프롬프트 (CMD) 에서 해주어야 한다. 관리자 권한으로 실행하지 않아도 무방하다.

 

마운트를 해준다. 나같은 경우는 Z 드라이브에 마운트를 한다. 다른 드라이브로 하고 싶으면 맘에드는 걸로 바꿔도 무방하다. 

mount 10.199.245.114:/my_volume Z:

아래와 같이 뜨면 성공이다.

내컴퓨터에서 확인해보면 잘 마운트가 되어있는 것을 확인할 수 있다.

 

테스트

그럼 이제 서로 같은 NAS를 물고 있는지를 확인해 볼 차례다. 먼저 Windows GCE에 간단하게 hello.txt 라는 파일을 생성해서 저장했다. 이게 Linux GCE 에서 보이면 잘 연동이 된 거겠지?

 

Linux 에서 마운트한 디렉토리인 `/filestore_share` 로 들어가서 확인해보니 여기에도 잘 보인다!! 

반대로 Linux에서 파일을 생성해줘도 Windows에서 잘 동기화 되어 있는 걸 볼 수 있다. 사이가 좋아보인다.

 

마치며

보통 On Premise 환경에서 Linux와 Windows를 같은 NAS 볼륨으로 동시에 마운트 시키려면 CIFS(Common Internet File System)으로 볼륨을 만들어서 Samba를 이용하는게 일반적이다. 나도 Filestore 를 써보기 전까지는 이런 과정을 거쳐야하나 귀찮음이 몰려왔지만, Filestore를 통하면 별도의 설정없이 양측에서 NFS에서 마운트가 가능했다. 정말 매우 편하게 연동이 가능했다. 다만 역시 On Premise에서 비싼돈을 주고산 NAS처럼 네트워크 속도가 빠르지는 않아서, 속도가 매우 중요한 시스템에서는 정말로 도입이 가능한지, Filestore 옵션을 높여보는 등 여러 테스트가 필요해 보인다. 네트워크 속도가 크리티컬하지 않다면 정말 Linux 와 Windows를 NAS로 묶기에는 Filestore가 정말로 편하다.