SW Engineering/OS Concept

51_로그 구조 파일 시스템 (Log Structure File System)

SungWookKang 2015. 7. 16. 14:20
반응형

51_로그 구조 파일 시스템 (Log Structure File System)

 

디스크 상의 디렉토리 구조, 자유 블록 포인터, 자유 FCB 포인터와 같은 파일 시스템 자료 구조는 시스템 고장 발생 시 일관성이 없어 질 수 있다. 운영체제가 로그 기반 기술을 사용하기 전에는 보통 이들에 대한 변경들은 이들 구조에 직접 적용 되었다.

 

파일 생성과 같은 대표적인 연산은 디스크 상의 파일 시스템 내부의 많은 구조적 변화를 포함한다. 이러한 변경은 고장에 의해 방해 받을 수 있고 이들 구조가 일관성이 없어지는 결과를 초래한다.

 

시스템 구조가 깨어질 수 있게 허용하고 복구 시 수리하도록 하는 접근 방법에는 여러 문제가 존재 한다. 그 중 한가지는 비일관성을 회복할 수 없을 수도 있다는 것이다. 일관성 검사가 구조를 복구할 수 없어 파일을 잃거나 디렉토리 전체를 잃게 될 수도 있다.

 

이 문제의 해결 방안은 파일 시스템 메타데이터 갱신에 로그 기반 복구 기술을 적용하는 것이다. 기본적으로 모든 메타데이터 변경은 로그에 순차적으로 기록된다. 특정 태스크를 실행하는 연산의 집합 각각을 하나의 트랜잭션이라고 한다.

 

변경이 로그에 기록되면 커밋된 것으로 간주되고 시스템 호출은 사용자 프로세스로 복귀하여 실행을 계속하도록 허용 한다. 그동안 이 로그 항목은 실제 파일 시스템 구조에 대해 재실행 된다.

 

변경이 반영되는 동안 어느 동작이 끝났는지 그리고 어느 것이 아직 덜 끝났는지를 나타내기 위해 포인터가 갱신된다. 커밋된 전체 트랜잭션이 완료되면 이 로그는 원형 버퍼로 구성된 로그 파일로부터 제거 된다.

 

 

원형 버퍼(circular buffer)는 버퍼 공간의 맨 뒤에 기록하고 맨 앞에서 시작하는 연속적인 공간으로 구성 된다. 이러한 원형 버퍼는 연속적으로 기록되므로 이전의 자료 위에 겹쳐서 기록될 것이다. 따라서 원형 버퍼를 사용할 경우에는 아직 저장되지 않은 유효한 자료 위에 겹쳐서 기록되지 않게 관리된다.

 

시스템이 고장(crash)나면 로그 파일에 0개 이상의 트랜잭션이 있을 것이다. 이러한 트랜잭션들은 운영체제에 의해 커밋되었다 할지라도 파일 시스템에서 결코 실행이 완료 되지 않은 것이기 때문에 이들은 반드시 실행을 완료 해야 한다. 이 트랜잭션들은 작업이 완료될 때까지 실행될 수 있고 파일 시스템 구조는 일관성을 유지하게 된다.

 

유일한 문제는 트랜잭션이 중단되었을 때 발생하는데 트랜잭션이 커밋되기 이전에 시스템에 장애가 발생 할 경우 트랜잭션에 의해 변경된 파일 모두 복구해야 시스템의 일관성이 유지된다.

 

디스크 메타데이터 갱신에 대한 로그를 사용하는 부수적인 이득은 이들을 직접 디스크 자료 구조에 적용하는 것보다 갱신이 더 빠르다는 것이다. 이러한 성능 향상은 임의 입/출력에 비해 순차 입/출력이 빠르다는데서 찾을 수 있다.

 

비용이 많이 드는 동기식 임의 메타데이터 쓰기가 비용이 훨씬 적게 드는 로그 구조 파일 시스템의 로깅 지역에 대한 동기식 순차 쓰기로 변환된다. 이러한 변환은 다시 해당 구조에 대한 임의 쓰기를 통하여 비동기로 재실행 된다.

 

[참고자료]

Operating System Concepts / 홍릉과학출판사

 

반응형