[Linux] NFS 마운트

한끄적
|2024. 11. 12. 11:10

메일 서버 업그레이드 사업을 추진하며 기존 AS-IS 서버에서 TO-BE 서버로 데이터 마이그레이션이 필요했다.

백업 방식에는 2가지 안이 도출 되었으며 아래와 같다.

 

1) 실제 DML 데이터에 접근해야하고 운영 DB에도 접근해야하므로 신규 TO-BE 서버에서 기존 AS-IS 스토리지쪽 디스크 마운트

2) AS-IS 서버에 마이그레이션 툴을 설치하여 이관

 

2번 안으로 진행할 경우 실제 운영하고 있는 서비스에 부담이 있을 수 있으므로 1번 안으로 진행하는 것으로 선택하였고 그로 인한 디스크 마운트 방식이 NFS 마운트 방식이다.


NFS(Network File System)는 네트워크를 통해 원격 서버의 디스크를 로컬 디렉터리처럼 사용할 수 있도록 해 주는 프로토콜이다. NFS를 통해 여러 시스템이 같은 파일을 공유하고 동시에 접근할 수 있다.

 

NFS 동작 방식

1. NFS 서버는 공유할 디렉터리(예: /data)를 설정하여 클라이언트가 접근할 수 있도록 준비
2. NFS 클라이언트는 NFS 서버의 특정 디렉터리를 로컬 디렉터리로 마운트하여 접근
3. NFS 프로토콜은 보통 TCP 2049 포트를 사용하여 클라이언트-서버 간 데이터를 전송

 

NFS 설정 예시

1. NFS 서버 설정 (가정: IP 주소 192.168.1.10인 서버에서 /data 디렉터리 공유)

1.1 NFS 서버 패키지 설치

NFS 서버 역할을 하기 위해 NFS 서버 패키지를 설치

sudo yum install -y nfs-utils

1.2 공유할 디렉터리 생성

공유할 디렉터리 생성 후 권한 설정

sudo mkdir -p /data
sudo chown nfsnobody:nfsnobody /data
sudo chmod 755 /data

1.3 /etc/exports 파일에 NFS 공유 설정 추가

/etc/exports 파일은 공유할 디렉터리와 접근 권한을 정의

sudo nano /etc/exports

#아래 내용은 /data 디렉터리를 클라이언트에서 마운트할 수 있도록 설정
/data 192.168.1.0/24(rw,sync,no_root_squash)
더보기

[/data] 공유할 디렉터리 경로
[192.168.1.0/24] 이 IP 대역에 속한 클라이언트가 접근 가능
[rw] 읽기-쓰기 권한 제공
[sync] 데이터를 실시간으로 동기화
[no_root_squash] 클라이언트에서 root 권한을 가진 사용자가 서버에서도 root로 파일에 접근할 수 있게 함

1.4 NFS 서비스 시작 및 활성화

sudo systemctl enable nfs
sudo systemctl start nfs

1.5 방화벽 규칙 추가 (필요한 경우)

#firewall 사용 시에만 필요
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

 

 

2. NFS 클라이언트 설정 (가정: IP주소 192.168.1.20인 클라이언트에서 /mnt/nfs 디렉터리로 마운트)

2.1 NFS 클라이언트 패키지 설치

sudo yum install -y nfs-utils

2.2 마운트할 디렉터리 생성 (기존에 있는 경우 그대로 사용)

sudo mkdir -p /mnt/nfs

2.3 NFS 디렉터리 마운트

sudo mount -t nfs 192.168.1.10:/data /mnt/nfs
더보기

[-t nfs] 파일 시스템 유형으로 NFS 지정
[192.168.1.10:/data] 서버의 IP 주소와 공유 디렉터리 경로
[/mnt/nfs] 클라이언트의 마운트 경로

2.4 마운트 확인

df -h | grep nfs

2.5 부팅 시 자동 마운트 설정 (선택)

sudo vi /etc/fstab

#아래 명령어 추가
192.168.1.10:/data /mnt/nfs nfs defaults 0 0

NFS 설정 시 주의사항

파일 시스템 권한 설정

- 서버에서 공유 디렉터리에 적절한 파일 권한을 설정하지 않으면 보안 문제가 발생할 수 있다. 예를 들어 no_root_squash 옵션은 클라이언트의 root 사용자가 서버에서도 root 권한으로 파일에 접근할 수 있게 하는 설정이므로 주의해야함.
- 가능하면 no_root_squash 대신 기본 설정인 root_squash를 사용하여 클라이언트의 root 권한이 서버에서 nfsnobody 같은 제한된 사용자로 매핑되게 설정하는 것이 안전함.

 

보안 고려

- 기본적으로 NFS는 암호화되지 않은 상태로 데이터를 전송하기 때문에 민감한 데이터가 있는 경우 암호화된 VPN을 사용하거나, 별도의 네트워크 세그먼트에서만 NFS를 사용하는 것이 좋다.
- export 설정에서 클라이언트 IP를 특정하여 허용된 클라이언트 외에는 접근할 수 없도록 제한하는 것이 필요.

반응형