2008년 1월 25일 금요일

Ext3 - 저널링 파티션

<번역글 출처 >

저도 원글의 저자와 같은 ext3팬 입니다. 좋아하는 이유는 리눅스 커널에 기본으로 포함됬다는 것과 여러 방면에서 테스트 되어 안정성이 입증되었다는 공통적인 생각을 가지고 있다는 것 입니다. 그리고 오래전 부터 시스템을 새로 구성하거나 하드를 추가할 경우에 이 문서를 봐왔었는데 나름대로 정리하고 싶었고 특히 저의 블로그의 취지가 "협력 - eristeia" 이기도 한 만큼 공유를 하고 싶어서 번역을 시도해 보았습니다. 이 글의 라이선스는 원자의 글에 표시된 GNU Free Documentation License 1.2에 의해서 복사, 수정, 재배포가 가능하겠습니다. :>

1. ext3 만들기

ext3 화일 시스템을 생성하는 것은 아주 간단합니다. 거의 모든 리눅스 배포판의 커널에 기본 포함되어있고 최소한 /boot 시스템은 사용되기 때문에 관련 툴과 메뉴얼을 기본 포함하게 됩니다. 새롭게 fs를 생성하기 위해서는 관리자 권한으로 아래와 같이 명령을 주면 됩니다. 여기서 /dev/hdXY은 Primary Master의 첫번째 파티션인 경우 /dev/hda1 이라고 바꾸면 됩니다. sata의 경우에는 /dev/sda1 등으로 바꿀 수 있습니다.

$ mkfs.ext3 /dev/hdXY

2. Directory Indexing 사용하기

이 부분은 화일 하부 디렉토리 구조가 거대한 경우와 그 디렉토리에 많은 화일 있을 경우에 hashed 이진트리를 이용하여 디렉토리 정보를 구성해 두는 것이다. 상당히 안정화된 상태이며 꼭 화일 규모가 대량이 아닌 경우에도 유용할 수 있을 것임.

$ tune2fs -O dir_index /dev/hdXY

위의 부분은 tune2fs가 실행되 후에 새롭게 생성되는 디렉토리에만 적용된다. 새롭게 fs이 아니라(포맷) 기존에 사용하던 fs에 적용시킬 경우에는 e2fsck 명령을 사용하여 아래의 명령을 수행하여 최적화 및 reindex를 적용할 수 있다.

$ e2fsck -D /dev/hdXY

주: 위 명령은 ext2에도 동일하게 적용 가능한 부분이다. 기존의 화일 시스템 크기에 비례해 시간이 좀 오래 걸릴 수도 있다. 이럴 땐 커피한 잔 하러 가는게 상책!

3. Full Journaling 활성화 하기

기본적으로 ext3 파티션은 'ordered' data mode로 마운트 된다. 이 모드에서는 모든 데이타가 main fs에 쓰이게 되고 메타 데이타는 journal에 집중어서 이론적으로 작업이 그룹으로 나누어지므로 disk I/O 줄어들게 된다. 여기서는 Journaling을 화일과 데이타 자체 모두에 적용하여 성능의 향상과 신뢰성을 동시에 확보할 수 있게된다('Journal' data mode로 알려져있음). 혹자는 모든 정보를 journaling하면 오히려 성능을 떨어 뜨린다고 생각한다. 그 이유인 즉, data가 디스크에 복수 번 기록된다는 것인데 - 처음에는 journal에 다음에는 메인fs에- 이 것 때문에 성능이 떨어지거나 하지는 않는다. 사실 대형 화일을 삭제하는 경우에는 조금 성능이 떨어지기는 하는데 일반적으로 read, write가 많은 실무 컴퓨팅 환경에서는 오히려 성능의 향상으로 더욱 이익이 되지 않을까 싶다.

Journal Data mode를 활성화하는 방법에는 2가지 방법이 있는데, 첫번째는 마운트 옵션에 data=journal 라고 넣으면 된다. 만약 이렇게하여 넣었고 root fs에서 이 마운트를 사용하게 하려면 rooflags = data=journal 를 커널 부트 옵션으로 넣어줘야한다. 두 번째 방법은 rune2fs를 사용하여 파일시스템의 superblock게 기본 마운트 옵션이 들어가게 된다.

$ tune2fs -O has_journal -o journal_data /dev/hdXY

이 방법은 커널 2.4.20이하 버젼에서는 작동하지 않는다. 그리고 아래처럼 저널 싸이즈를 지정함으로서 더욱 세밀한 튜닝을 할 수 있다. 저널이 클 수록 더욱 높은 성능을 발휘할 수 있지만 이럴 경우 disk 공간이 화일이 많으면 많을 수록 공간은 많이 줄어들게 되고 무었보다도 복구하는 경우에 시간과 노력이 더 든다고 할 수 있겠다. 요 옵션을 사용할 경우에는 관련 문서를 참조하실 것!

$ tune2fs -J size=$SIZE /dev/hdXY

4. 부팅 시 정기적인 filesystem 검사 항목 제거하기

리눅스 초보 일 때, 특히 ext fs에 대해서 잘 모를때 가장 귀찮았던 것이 30번 마운트 마다 즉, 부팅시에 도중에 멈출 수도 없는 fs 검사를 강제적으로 한다는 것이였습니다. 물론 리눅스가 서버로 주로 사용되어지기 때문에 마운트 횟수가 그리 많지 않을 수도 있고 특히 갑자기 시스템이 다운되는 경우도 종종 있을 수 있으므로 문제가 누적되어 더 이상 복구가 불가능한 상황에 처하는 것 보다 정기적인 검사를 수행하는 것이 좋을 것 입니다. 하지만 이것도 데스크톱 사용자로서는 참기 정말 힘든 부분이라 할 수 있는데 아래의 명령으로 mount-count와 time-depenedent 를 조절함으로써 이를 피할 수 있습니다. 이 것을 적용하여 부팅하기 전에 /etc/fstab에서 마운트할 root 화일 시스템의 6번째 필드가 (pass)가 되야 합니다.

$ tune2fs -c 0 -i 0 /dev/hdXY

5. 지금까지 적용한 옵션 확인하기

지금까지 따라오면서 적용했던 여러 옵션들이 있을 것 입니다. journaling이나 부팅 검사 항목 등이죠. 이들이 잘 적용되었는지 확인하는 것이 tune2fs 명령을 이용하이 -l 옵션을 주는 것 입니다. 이 옵션을 많은 정보를 출력하는데 block/inode 정보나 fs의 특징, 기본 마운트 옵션을 출력하게 됩니다. 이 출력되는 내용 중에서 우리가 특히 주목할 부분은 dir_index와 has_journal flag가 fs features에 출력되냐는 것과 default mount option에 journal_data 가 출력되느냐 입니다. 아래의 명령으로 확인 하세요.

$ tune2fs -l /dev/hdXY

이제 모든 ext3 journaling 설정이 끝 났습니다. ext3의 파워를 만끽하세요!!

댓글 없음: