카테고리 없음

Ext3 파일 시스템 Option

저멀리날아 2006. 2. 15. 08:47

저널링 옵션과 쓰기 레이턴시(write latency)

Ext3은 파일시스템을 마운트 할 때, 세 개의 데이터 저널링 모드 중 하나를 선택할 수 있다: data=writeback, data=ordered, data=journal. 저널 모드를 지정하기 위해서 적당한 스트링 (예를 들어, data=journal)을 /etc/fstab의 옵션 섹션에 추가할 수 있고 또는 mount를 직접 호출 할 때 -o data=journal 명령행 옵션을 지정할 수 있다. root 파일시스템에 사용 할 데이터 저널링 메소드를 지정하려면(data=ordered는 디폴트이다), rootflags 라는 특별한 커널 부트 옵션을 사용할 수 있다. root 파일시스템을 완전히 데이터 저널링 모드로 하고 싶다면 rootflags=data=journal을 커널 부트 옵션에 추가한다.

data=writeback 모드

data=writeback 모드에서, ext3은 데이터 저널링을 전혀 수행하지 않는다. XFS, JFS, ReiserFS 파일시스템과 유사한 저널링을 제공한다(metadata only).이로인해 최근에 변경된 파일이 예견치 못한 재부팅의 경우에 손상된다. 이러한 단점에도 불구하고, data=writeback 모드는 대부분의 조건하에서 최상의 ext3 퍼포먼스를 제공한다.

data=ordered 모드

data=ordered 모드에서, ext3 만이 공식적으로 메타데이터를 저널링하지만 논리적으로 메타데이터와 데이터 블록을 트랜잭션이라는 하나의 단위로 그룹핑한다. 새로운 메타데이터를 디스크에 쓸 때, 연관된 데이터 블록들이 우선 쓰여진다. data=ordered 모드는 data=writeback mode와 대부분의 다른 저널 파일시스템의 손상 문제를 효과적으로 해결한다. 그리고 완전한 데이터 저널링 없이도 수행된다. 일반적으로, data=ordered ext3 파일시스템들은 data=writeback 파일시스템 보다 약간 느리게 수행되지만 전체 데이터 저널링에 있어서는 훨씬 빠르다.

데이터를 파일에 추가할 때, data=ordered 모드는 ext3의 전체 데이터 저널링 모드에서 제공되는 통합성을 제공한다. 하지만 파일의 일부가 겹쳐쓰기가 되거나 시스템 충돌이 될 때, 쓰여지고 있는 부분에는 원래 블록의 조합에 업데이트 된 블록이 포함된다. data=ordered가 어떤 블록이 먼저 겹쳐쓰기가 되는 지에 대해 보장할 수 업기 때문에 겹쳐쓰기가 된 블록 x가 업데이트 되었다고 해서 겹쳐쓰기가 된 블록 x-1 역시 업데이트 되었다는 것을 알 수 없다. 대신, data=ordered 는 쓰기 순서를 하드 드라이브의 write cache 까지 남겨놓는다. 일반적으로 이러한 제한은 부정적인 영향을 끼치지 않는다. 파일 추가는 일반적으로 파일 겹쳐쓰기 보다는 훨씬 더 일반적이기 때문이다. 이러한 이유로 인해서, data=ordered 모드는 전체 데이터 저널링의 훌륭한 대안이다.

data=journal 모드

data=journal 모드는 전체 데이터 및 메타데이터 저널링을 제공한다. 모든 새로운 데이터는 저널에 우선 먼저 쓰여지고 그런 다음 마지막 위치에 쓰여진다. 충돌이 일어날 때, 저널은 다시 작동될 수 있고 데이터와 메타데이터 모두를 영속적인 상태가 되도록 한다.

이론적으로는, data=journal 모드는 가장 느린 저널링 모드이다. 데이터는 디스크에 한 번이 아닌 두번 쓰여지기 때문이다. 하지만 특정 상황에서는, data=journal 모드는 놀랍도록 빠르다. ext3 data=journal 파일시스템이 사람들에게 믿을 수 없을 정도로 놀라운 퍼포먼스를 제공한다.