2021. 6. 9. 00:59ㆍCloud
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
이제 마운트를 해본다. 이유는 모르겠지만 위 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가 정말로 편하다.
끝
'Cloud' 카테고리의 다른 글
GCP에서의 CI/CD 파이프라인 구축 (0) | 2021.06.29 |
---|---|
VS Code 와 Google Compute Engine을 연동해보자 (Remote SSH) (0) | 2021.06.26 |
자신의 Docker 개발환경을 Container Registry 와 연동하기 (0) | 2021.06.25 |
일반 Linux 환경에서 gsutil 사용하기 (Cloud Storage 데이터 업로드, 다운로드) (0) | 2021.06.25 |
윈도우 VM에 실행한 웹서버에 접속이 안될 경우 (GCP 방화벽 설정) (0) | 2021.06.13 |