메일 서버 업그레이드 사업을 추진하며 기존 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를 특정하여 허용된 클라이언트 외에는 접근할 수 없도록 제한하는 것이 필요.
'Dev > Linux' 카테고리의 다른 글
[Linux] volume group "rl" has insufficient free space : 51200 required (disk umount & 파티션 축소) (1) | 2024.11.17 |
---|---|
[Linux] 디스크 파티션 생성 및 마운트 설정 (5) | 2024.11.16 |
[Linux] 파티션 크기 문제 해결하기 (2) | 2024.10.10 |
[Linux] 스토리지 수동 마운트하는 방법 (자동 마운트 문제 해결) (2) | 2024.08.27 |
[Linux] Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again (0) | 2024.07.30 |