17. 분산 파일 시스템(Distributed File Systems; DFS)
▶ 분산 파일 시스템의 목적: 분산 시스템에서 물리적으로 여러 사이트들간에 퍼져 있는 파일들에 대해 동일한 방식의 파일 공유를 지원하는 것
17.1 배경(Background)
▶ 용어
- 서비스(service): 여러 기계에서 수행되는 소프트웨어 항목
→ 클라이언트들에게 특정 기능을 제공
- 서버(server): 단일 기계에서 수행중인 서비스 소프트웨어
- 클라이언트(client): 자신의 클라이언트 인터페이스를 형성하는 연산 집합으로 서비스를 유발하는 프로세스
→ 기본적인 파일 동작들의 집합으로 구성: 파일 생성, 파일 삭제, 파일 판독, 파일 기록 등
▶ 분산 파일 시스템의 특징
- 자치성(autonomy): 시스템 내의 클라이언트와 서버는 각각 자치성(autonomy)을 가짐
- 투명성(transparency): 시스템이 클라이언트에게 중앙집중형 파일 시스템처럼 보여짐
- 이동성(mobility): 사용자는 임의의 사이트에서 로그인 가능
▶ 분산 파일 시스템의 환경과 구현에는 그 종류가 매우 다양함
→ 주요 성능 측정: 다양한 서비스들을 만족시키기 위해서 요구되는 시간
17.2 네이밍(Naming)과 투명성(Transparency)
▶ 네이밍: 논리적인 객체들과 물리적인 객체들간의 사상
- 사용자: 파일의 이름에 의해서 표현되는 논리적인 자료 객체를 사용
- 시스템: 디스크에 저장되어 있는 물리적인 자료 블록을 조작
→ 파일의 추상화: 디스크내의 저장 방식이나 위치를 숨김
▶ 분산 파일 시스템의 투명성: 네트워크 내에서의 저장 위치까지 숨기는 추상화 기능 첨가
→ 파일 중복: 하나의 파일 이름이 주어지면 해당 중복 파일들의 위치 집합을 반환
(즉, 다중 복사본들과 그 위치를 숨김)
17.2.1 네이밍 구조(Naming Structure)
▶ 네이밍 사상에 관한 두 가지 중요 개념
- 위치 투명성(location transparency): 파일의 이름에 그 파일의 물리적 기억장소에 대한 정보를 나타내지 않음 → 파일 위치가 고정됨 ex) 대부분의 시스템
- 위치 독립성(location independency): 파일의 물리적 기억장치의 위치가 변경되어도 파일 이름을 변경할 필요 없음 → 파일 위치의 자동 변경 가능(보다 강력한 속성) ex) Andrew 등 일부
▶ 위치 독립성의 특성
- 위치 독립성에 의한 이름과 위치의 분리는 더 좋은 추상화를 제공
- 위치 독립성은 기억 장소 공유를 증진시킴: 즉, 시스템 전체의 디스크 이용률을 균등화할 수 있음
- 위치 독립성은 네이밍 계층을 저장장치 계층이나 컴퓨터 내부 구조로부터 분리할 수 있음
17.2.2 네이밍 기법(Naming Schemes)
▶ 세 가지 접근 방법
① 파일의 이름을 호스트 이름(host name)과 지역 이름(local name)의 조합으로 구성하는 방법
- 가장 간단한 방법
- 시스템 전역에 걸쳐 유일한 이름을 보장
- 위치 투명성과 위치 독립성 없음
- 동일한 파일 동작으로 지역 또는 원격 파일 모두에 적용 가능
② 원격 디렉토리들을 지역 디렉토리에 붙일 수 있게 하는 방법
- Sun의 네트워크 파일 시스템(NFS)에서 사용
- 수동 마운팅 ↔ 자동 마운팅: 마운트 포인트와 파일 구조 이름의 테이블을 기반으로 요구 시에 마운트됨
- 투명성 있는 공유를 지원하는 방식이지만 제한적임
③ 구성 파일 시스템들을 전체적으로 통합하는 방법
- 이상적으로, 구성된 파일 시스템 구조는 전통적인 파일 시스템 구조와 동일한 형태임
- 실제로는 이러한 목표를 어렵게 하는 여러 특별한 파일이 존재함
ex) 장치 파일, 이진 디렉토리 등
▶ 네이밍 구조의 평가: 관리의 복잡성
→ NFS 구조(②)가 가장 복잡하고 어려움: 임의의 원격 디렉토리가 지역 디렉토리에 부착될 수 있기 때문에, 전체 계층은 비구조적일 수 있음
17.2.3 구현 기법(Implementation Techniques)
▶ 투명한 네이밍 기법의 구현: 파일 이름을 연관된 위치로 사상하는 작업 필요
- 파일을 구성단위로 모으는 기법
- 저수준이면서 위치 독립적인 파일 식별자 사용
→ 구조적 이름 사용
1) 파일이 속해있는 구성 단위를 식별
2) 단위내의 특별한 파일을 식별
17.3 원격 파일 접근(Remote File Access)
▶ 원격 파일 접근: ‘원격 서비스 기법’ 사용
- 접근을 위한 요구들은 서버에 전달되고,
- 서버 기계는 접근을 수행하고,
- 그 결과를 사용자에게 돌려줌
ex) 원격 프로시저 호출(RPC)
→ 성능 보장을 위해 캐싱(cashing) 사용: 네트워크의 교통량과 디스크 입출력을 감소시킴
17.3.1 기본 캐싱 기법(Basic Caching Scheme)
▶ 캐싱의 개념
- 만일 어떤 접근 요구를 만족하는 자료가 캐시되어 있지 않으면 이 자료의 복사본을 서버로부터 클라이언트 시스템으로 이동시키고, 접근은 캐시된 복사본 상에서 행해짐
- 동일한 정보에 대한 반복된 접근은 부가적인 네트워크 접근 없이 지역적으로 처리될 수 있음
- 요구 페이지 가상 기억장치와 유사
→ “캐시 일관성 문제” 발생(17.3.4절 참조)
▶ 캐싱의 단위가 증가할수록,
- 적중률(hit-ratio) 증가
- 실제적인 자료 전송시간이 지연
- 일관성 문제 증가
17.3.2 캐시 위치(Cache Location)
▶ 캐시된 자료의 저장 위치
① 디스크 캐시: 비휘발성이므로 기억장치의 오류 발생시에도 자료가 지역에 보관됨
② 주기억장치 캐시
- 디스크가 없어도 됨
- 접근 속도가 빠름
- 급격한 성능 향상 추세
- 서버와 사용자를 위한 단일 캐싱 기법의 설계 가능
17.3.3 캐시 갱신 전략(Cache Update Policy)
▶ 수정된 자료 블록을 서버의 마스터 복사본에 갱신하기 위한 전략
① 즉시 기록(write-through): 수정직후 즉시 기록하는 방법
→ 다른 기록 접근을 지연시킴
② 교체 기록(alternate write)/지연 기록(delayed-write): 수정은 캐시에서 이루어지고, 마스터 복사본의 수정을 지연하는 방법
- 장점: 기록 접근이 신속하고, 마스터 복사본에 다시 기록되기 전에도 자료 갱신 가능
- 단점: 신뢰성 문제 초래 - 사용자 기계 손상시 기록되지 않은 자료의 분실 가능
▶ 지연 기록 기법의 종류
① 클라이언트의 캐시에서 블록이 나오기 직전에 반영하는 방법
→ 장시간 캐시에 상주 가능
② 정규 기간마다 캐시를 조사하여 지난 조사 이후 갱신된 블록을 반영하는 방법
→ 교체 기록과 즉시 기록 전략의 절충안
③ 파일이 폐쇄될 때 반영하는 방법: “폐쇄시 기록(write-on-close)”
→ 짧은 시간 열리거나 또는 가끔 변경되는 파일의 경우 비효율적이고, 프로세스 닫기가 지연됨
17.3.4 일관성(Consistency)
▶ 클라이언트 기계는 캐시된 자료와 마스터 복사본이 일치하는지를 결정해야 함
→ 불일치하면 캐시자료를 더 이상 접근하지 않아야 하고, 가장 최신의 복사본이 캐시되어야 함
▶ 캐시의 타당성 검증 방법
① 클라이언트 시작 접근 방법(client initiated approach)
- 클라이언트가 서버와의 접촉을 통해서 타당성 검사를 시작
- 타당성 검사의 빈도가 중요
→ 모든 접근 전의 검사에서 파일의 첫 접근(파일 열기) 검사에 이르기까지 다양하고, 타당성 검사와 중복되는 모든 접근은 지연됨
② 서버 시작 접근 방법(server initiated approach)
- 서버가 불일치 가능성을 발견하면, 캐시된 일부 또는 전체 파일을 기록
- 불일치 가능성은 파일이 서로 다른 두 클라이언트에 의해 충돌 상태로 캐시될 때 발생함
17.3.5 캐싱(Caching)과 원격 서비스(Remote Service)의 비교
▶ 캐싱과 원격 서비스의 비교
- 원격 접근은 캐싱이 사용되면 효율적으로 처리될 수 있는 반면, 원격 서비스만으로 처리하면 네트워크 통신량, 서버 부하, 성능면에서 저하됨
- 캐싱에서의 대량 자료의 전송이 원격 서비스에서의 특정 요청에 대한 연속된 응답 전송보다 네트워크 부하가 적음
- 캐시 일관성 문제는 캐싱의 가장 큰 단점임
- 캐싱의 장점을 살리기 위해서는 실행을 지역 디스크나 기억장치를 가지는 클라이언트로 이동시키는 것이 바람직함
- 캐싱의 경우에 저수준의 기계간 인터페이스와 고수준의 사용자 인터페이스가 매우 다른 반면, 원격 서비스의 경우에는 기계간 인터페이스가 지역 사용자 파일 시스템 인터페이스를 그대로 확장한 것이라 할 수 있음
17.4 상태 정보를 가진 서비스(Stateful Service)와 상태 정보가 없는 서비스(Stateless Service)
유형
내용
상태 정보를 가진 서비스
상태 정보가 없는 서비스
서버의 역할
- 클라이언트에 의해 접근되는 파일을 계속 추적
- 클라이언트가 요구하는 블록을 단순히 제공
처리 속도
- 파일이 주기억장치에 캐시되고, 연결 식별자(inode)를 통해 쉽게 접근되므로 디스크 접근 횟수를 줄일 수 있음
- 파일의 순차적인 접근을 파악하여 다음 블록을 미리 판독할 수 있음
- 클라이언트의 목적을 서버가 알 수 없으므로, 클라이언트의 요구 메시지가 길고 요구에 대한 처리 속도가 느림
서비스 도중의 시스템 손상
- 서버 손상: 손실된 서버의 휘발성 정보를 복구하기 위해 클라이언트와 대화하는 프로토콜을 사용하여 손상 발생 전의 상태로 복구함
- 클라이언트 고장: “고아 탐지 및 제거(orphan detection and elimination)”
손상된 클라이언트의 프로세스 상태를 기록하고 있으므로 추후 복구 가능
- 서버 손상: 자신의 재구성 쉬움
단, 클라이언트는 서버가 느려졌다고 판단함
- 클라이언트 고장: 파일 동작을 클라이언트 스스로 수행하므로 불가능
추가 제한 요소
- 일정하고 전체적이고 저수준의 네이밍 기법이 요구됨
- 연속된 파일 동작 요구에 대해 여러 단계의 처리가 필요함
17.5 파일 중복(File Replication)
▶ 파일 중복의 특성
- 파일 중복은 가용성을 증가시킴
→ 다중 기계 중복의 경우, 접근 요구에 대해 최단 서비스 시간이 소요되는 복사본 선택
- 파일 중복은 결함 독립 기계에서의 복사라야 함
→ 복사본의 유용성은 나머지 복사본의 유용성과 무관
- 파일 중복을 사용자에게 숨기는 것이 바람직
→ 중복된 파일 이름을 특정 복사본에 사상시키는 네이밍 필요
→ 중복 제어: 중복의 수준을 결정하고 복사본의 위치를 결정하는 제어 행위
▶ 문제점: 복사본의 갱신
→ 사용자의 관점에서 복사본들은 동일한 논리적인 존재이므로, 임의 복사본에 대한 갱신은 다른 모든 복사본에게 반영되어야 함(일관성)
- 일관성 유지 방법: 일관성 유지를 위해 프로세스의 무한정 대기 상태를 초래할 수 있는 방법
- 일관성 무시 방법: 프로세스 수행을 보장하기 위해 일관성 파괴로 인한 오류를 감수하는 방법
ex) Locus 시스템
▶ 사례: Ibis의 중복 기법
- 주 복사 방법의 변형
- 이름 사상 영역: <주 복사본 식별자, 지역 복사본 식별자>으로 구성
- 요구 중복(demand replication): 존재하지 않는 복사본을 지역적으로 캐시하여 읽는 방법
- 갱신은 주 복사본에서만 실행되고, 적절한 메시지를 보내 다른 중복들을 무효화시킴
→ 단위적이고 순차적인 무효화가 보장되지 않기 때문에 훼손된 복사본이 유효하다고 여겨질 수 있음
17.6 시스템 예제
▶ 분산 파일 시스템의 5 가지 예: UNIX United, Sun NFS, Andrew, Sprite, Locus
→ 17.6.1-17.6.5