NFS
Network File System
Goal
- NFS의 개념을 간략하게 알아봅니다.
- Babble 프로젝트에서 NFS를 사용한 이유를 알아봅니다.
Ubuntu 18.04
에서 NFS를 사용하는 방법을 알아봅니다.
NFS란?
한줄로 요약하면, 유닉스 시스템에서의 저장공간 공유를 위한 프로토콜입니다.
1 |
|
사용한 이유
Scale Out 작업을 수행하면서 Babble 인프라내 WAS가 N개로 늘어나게 되었습니다.
- 각 WAS별로 찍히는 로그를 CloudWatch를 통해서 확인하려면 WAS의 개수에 맞춰 N개의 추가 설정이 필요했습니다.
- 즉 WAS가 100개가 된다면, CloudWatch로 추적되는 화면이 100개가 되겠죠.
- 이것은 로그 추적에 있어서도 불편함을 야기하게 되었고, NFS를 이용해 한개의 서버(A서버)에서 LOG 파일을 관리하고 다른 WAS들은, A서버에 접근해서 LOG 파일을 수정 하도록 하게 구성하였습니다.
1 |
|
- 어떤 WAS에서 발생하는 에러인지는 Docker의 Container ID로 구분이 가능했습니다.
설치
서버(호스트 측)
1 |
|
- nfs server를 설치합니다.
1 |
|
- 공유할 폴더를 만듭니다.
1 |
|
- 폴더 접근, 수정권한을 열어줍니다.
1 |
|
실제로 보이는 vi 창 예시
1 |
|
- 클라이언트에 호스트에 접근 할 수 있는 권한을 열어줍니다.
- 중간에 띄어쓰기가 들어가지 않게 조심해야 합니다.
1 |
|
- 설정을 마무리합니다.
설치
클라이언트 측
1 |
|
- nfs 접속 클라이언트를 설치합니다.
1 |
|
- 클라이언트쪽에서 호스트의 공유폴더에 접근할 폴더를 만듭니다.
- 공유폴더를 마운트합니다.
- 이후 클라이언트에서 호스트서버의 폴더에 접근할 수 있게됩니다.
- client :
/mnt/sharedfolder_client
- host server :
/mnt/sharedfolder
- client :
Reference
구동
1 |
|
상태체크
1 |
|
삭제
1 |
|
- 이부분 까지만 진행하면
nfsstat -s
를 할경우에도 계속 nfs 서버가 살아있는것이 확인되었습니다.
1 |
|
- 위의 명령어를 추가적으로 더 입력해줍니다.
Reference
- https://sxi.io/debian-ubuntu-linux-disable-remove-all-nfs-services/
- https://installlion.com/ubuntu/vivid/main/n/nfs-kernel-server/uninstall/index.html
Conclustion
- 각각의 WAS에서 공유 디렉토리를 이용해 같은 파일에 읽고, 쓰기가 가능해졌습니다.
- 공유 디렉토리 하나만 CloudWatch에 붙여서 한눈에모든 WAS의 로그를 확인할 수 있게 되었습니다.
트러블 슈팅
- NFS 가 V3 - V4를 왔다갔다 하는 현상 발생한다. 현재 이유는모르겠다.
2021-10-26
- 한개의 인스턴스에서 NFS Host와 Client를 동시에 두었을때 문제가 발생해썼다.
- Host용 인스턴스를 분리해서 해결했다.
Reference
- https://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C
- https://vitux.com/install-nfs-server-and-client-on-ubuntu/
- https://linoxide.com/example-linux-command-to-find-nfs-version/
- https://sxi.io/debian-ubuntu-linux-disable-remove-all-nfs-services/
- https://installlion.com/ubuntu/vivid/main/n/nfs-kernel-server/uninstall/index.html