NFS(Network File System)

2025. 1. 25. 19:26AWS Cloud School 8기

NFS(Network File System)

원격지에 존재하는 파일을 마치 내 로컬 파일인것처럼 사용 가능

 

포트

  • 기본 포트: 2049
  • 추가적으로 RPC: 111
  • 추가적으로 데이터를 송수신할 때 랜덤으로 포트가 부여
  • df (disk free): 디스크를 보고 싶어 ⇒ 스토리지 정보
    • -h: 사람이 읽기 편하게 → GB, MB

 

마운트의 예시

더보기

 

  • /dev/mapper/centos-root: 스토리지 장치(device)
  • / : 최상위 디렉터리

최상위 디렉토리를 통해 /dev/mapper/centos-root 를 찾아갈 수 있다 mount

 

윈도우 vs 리눅스의 Mount 방식

  • 램이 부족함 → 보조 기억 장치에서 꿔옴(가상 메모리) ⇒ 리눅스: swap
    • swap확인: # cat /etc/fstab
  • 리눅스에서 최초 생성 스토리지 : /, /boot, swap

 

NFS 구현 방식

1️⃣ NFS - Server
/shared 폴더 → 실질적인 공간

2️⃣ NFS - Client
/remote → 논리적인 경로(마운트 포인터)

목표: mount
/remote를 통해 → /shared에 접근
/remote에 파일을 생성하면 → 실질적으로는 /shared에 파일이 생성 되는 것이다!

 

💡 장점

 

1️⃣ 메모리를 하나로 집중시킬 수 있다

  • ex. 컴퓨터에 게임을 하나하나 설치함→ 300GB/1TB 밖에 사용하지 않음
    → 컴퓨터마다 다 스토리지가 있어야 함

⇒ 현재: PC 마다 스토리지가 존재하지 않음

  • 중앙 서버에 하나의 스토리지
  • 게임이 구성된 이미지 자체를 원격에서 접속해서 스토리지를 부팅시킴

→ 원격제가 하나의 큰 스토리지

 

 

2️⃣ 관리 용이, 비용(lose발생 x)

  • 필요한만큼 가져다가 씀

⇒ 하나의 NFS에서 부분만 할당 받아서 사용

 

3️⃣서버에 스토리지의 중앙집중적고가용성(HA)

  • A VM이 다운이 되더라도 server에 실질적으로 스토리지가 저장되어있기 때문에
  • B VM에 그 스토리지를 마운트시켜서 복원할 수 있음

→ A, B VM을 가용영역이라고 생각할 수 있다

 

 

🧪 NFS 실습

 

 

총 정리

✅ 전제

  • 기본 설정(firewalld비활성화, Selinux 비활성화, yum repo 수정 및 nfs-utils 설치 완료)
  • mkdir 마운트할 파일

1️⃣ NFS Server

  1. NFS로 공유할 대상을 설정
    • vi /etc/exports
    • {공유할 디렉토리} {공유할대상IP(권한)}
  2. 반영하기
    • exportfs -r
  3. nfs-server 데몬 재시작
    • systemctl restart nfs-server
  4. 공유대상 확인
    • showmount -e

2️⃣ NFS Client

  1. 마운트 연결하기
    • mount -t {타입} {공유받는대상IP}:{경로} {마운트포인터}
  2. 마운트 됐는지 확인
    • df -h
  3. 재부팅해도 마운트 유지시키기
    • vi /etc/fstab
      • {공유받을 서버IP}:{경로} {마운트포인터} {타입} {defaults 0 0}