▒ 저널링 파일 시스템이란?



저널링 파일 시스템이란.. (2000-06-03)

지난 1년간 리눅스는 엔터프라이즈급 운영체제로 급성장을 해오며 클러스터링과 서버에서의 중요한 자리를 차지해 가고 있다. 리눅스가 진정한 엔트프라이즈급 운영체제로 성장하기 위해 저널링 파일시스템은 필수적인 요건으로 꼽히고 있다. 이미 ReiserFS와 ext3 이외에도 SGI의 XFS가 리눅스로 포팅되고 있어 앞으로의 전망을 밝히고 있다.


저널링 파일 시스템이란..


저널링 파일 시스템이란 백업 및 복구 능력이 있는 파일 시스템을 말한다. 디스크에 있는 인덱스가 갱신되기 전에 관련 내용이 로그에 기록되기 때문에 정전이나 다른 문제 때문에 인텍스에 이상이 생기더라도 다시 시스템을 재가동하면 운영체제가 로그를 보고 인덱스를 재작성 및 복구를 할 수 있게 된다.

왜 저널링 파일시스템은 중요할까? 저널링 파일 시스템은 어떻게 동작하는가? 리눅스에는 어떠한 저널링 파일시스템이 존재하는가?

저널링 파일시스템은 디스크에 적용되는 변화를 로그로 남기기 때문에 전통적인 파일 시스템보다 안전하다 하겠다. 저널링 파일 시스템은 변화를 커밋하거나 RDBMS 처럼 트랜잭션 방법으로 이전으로 되돌릴 수 있다.



Ext2로는 충분치 않다.

리눅스가 지원하는 파일 시스템은 여러가지가 있지만 설치시에는 ext2가 기본으로 사용된다. 리눅스에서 지원가능한 파일시스템으로는 FAT, VFAT, HPFS(OS/2), NT 파일 시스템, Sun의 UFS등이 있다.

Ext2의 디자이너는 효율과 퍼포먼스에 주로 관심을 집중했다. Ext2는 파일 메타- 데이터(허가권, 소유권, 생성/접근 시간과 같은 정보)를 파일이 내용과 동기화 시키지 않는다. 리눅스는 일단 파일의 내용을 적은 뒤 나중에야 파일의 메타 데이터를 기록한다. 만약 파일의 내용을 변경하고 메타 데이터를 갱신하지 않은 상태에서 전원이 나가버리면 파일 시스템은 정보가 일치하지 않는 문제가 발생한다. 이러한 문제는 퍼포먼스를 위해 파일시스템의 안전을 희생한 예라 하겠다.

핫메일과 같은 무료 E-mail 서비스를 해주는 경우 치명적인 위험을 감수해야 할 수도 있다. 저널링 파일시스템은 이러한 위험을 감소 시킬 수 있다.

당신이 디렉토리 정보를 변경하고 있다고 상상해 보자. 거대한 디렉토리의 다섯번째 블럭에 있는 23개의 파일만 수정하였고 디스크에서는 이 블럭을 쓰고 있는데, 전원이 나가 해당 블럭이 불완전하게 되어 오류가 발생해 버렸다.

리눅스가 리부팅 되면 "fsck" (file system check)가 실행되어 파일시스템의 정보를 체크하고 올바른 블럭을 만들어간다. Fsck는 오류가 발생한 디렉토리 엔트리를 발견하고 이것을 수정하려 한다. fsck가 손상된 곳을 확실히 고쳐낸다는 보장은 없다. 때때로 디렉토리를 잃어 버릴 수도 있다.

파일 시스템이 거대해질수록 시간은 그만큼 길어 진다. 만일 수기가바이트가 되는 파일이 많이 있다면, 체크 시간은 10시간 혹은 그 이상이 될 수 도 있다. 이 시간 동안 시스템을 사용할 수 없게된다.

이러한 경우 저널링 파일시스템은 파일시스템의 변화에 대한 흔적을 남기기때문에 fsck가 복구에 걸리는 시간이 그만큼 줄게 된다.

물론 저널링 파일 시스템에 순기능만 있는 것은 아니다. 파일 시스템을 업데이트 할 때마다 로깅에 따른 오버헤드와 I/O 가 많아 진게되어 시스템 관리자는 파일 시스템 관리의 정책을 세워야 할 필요가 있을 것이다. `/usr' 과 같은 경우에는 읽기 작업이 주를 이루기 때문에 저널링 파일 시스템을 사용할 이유는 없다. 하지만 '/var'은 메일 스풀링 및 데이터베이스의 저장으로 활용되기 때문에 많은 업데이트 과정이 생긴다. 이러한 파티션은 저널링 파일 시스템이 안전하다.

저널링 파일시스템이 리눅스에 적용된다하여 기존의 Ext2가 곧바로 사라지진 않을 것 같다. Ext2와 저널링 파일시스템을 짜임새 있게 활용한다면 속도와 안정성을 모두 확보 할 수 있게 될 것이다.







Line
Copyleft (c) 1996-2001, Kang Jul Ki. All rights were not reserved.
▒ Powered by jkkang.net