콘텐츠로 이동

클라이언트-서버 DFS (NFS, OpenAFS)

Jan 23, 2026 · Updated Jan 27, 2026

클라이언트-서버 DFS 모델은 서버가 파일과 메타데이터를 저장하고, 클라이언트가 네트워크를 통해 투명하게 파일에 접근하는 분산 파일 시스템 아키텍처이다. 대표적으로 NFS와 OpenAFS가 있다.

Sun Microsystems에서 개발한 오픈 프로토콜이다.

  • 설계 목표: 서버 장애 시 빠른 복구
  • 무상태(Stateless) 서버: 어떤 클라이언트가 어떤 파일을 접근 중인지 추적하지 않음
    • 서버 장애 후 재시작해도 상태 복원 불필요
    • 모든 파일 연산이 멱등성(Idempotent) - 여러 번 실행해도 같은 결과
  • chatty 프로토콜: 파일 사용 중 블록 읽기/쓰기 요청을 서버로 자주 전송

Carnegie Mellon University에서 개발했다.

  • 설계 목표: 확장성 (서버가 최대한 많은 클라이언트 지원)
  • 파일 단위 캐싱: 요청 시 전체 파일을 클라이언트 로컬 스토리지에 다운로드
  • 콜백(Callback): 서버가 캐시된 파일 변경 시 클라이언트에 알림
  • 전역 네임스페이스: 모든 클라이언트가 동일한 파일 경로 사용 (/afs/…)
특성NFSOpenAFS
설계 목표빠른 장애 복구확장성
서버 상태무상태상태 유지 (콜백)
캐싱 단위블록전체 파일 (64KB 청크)
서버 트래픽많음 (chatty)적음
네임스페이스머신별 마운트전역
위치 독립성제한적지원
  • NFS = 도서관에서 책 한 페이지씩 복사해 옴 (자주 왔다 갔다)
  • OpenAFS = 책 전체를 집으로 대출해 와서 다 읽고 반납 (왕복 최소화)
NFS 시나리오
1 open()
/mnt/nfs/doc.txt
2 read()
서버에 블록 요청
3 서버 응답
블록 반환
4 write()
서버에 쓰기 요청
5 ...
반복
반복
OpenAFS 시나리오
1 open()
/afs/org/doc.txt
2 파일 전송
전체 파일 → 로컬 캐시
3 로컬 작업
읽기/쓰기 (서버 접촉 없음)
4 close()
변경사항 서버에 업로드