Computer/System

[스크랩] ext3 저널링 파일 시스템을 사용해 보자

수지밝은미소 2007. 5. 23. 13:47

ext3 저널링 파일 시스템을 사용해 보자

 
   홈페이지 : http://wowlinux.com
등록일 : 2001.11.22 11:38:53
조회 : 19959
출처 : 와우리눅스(주)

리눅스는 표준 파일 시스템으로서 Ext 파일 시스템, Ext2 파일 시스템으로 변천해왔습니다. 리눅스 커널 2.4.x에 들어오면서 ReiserFS, XFS, JFS, ext3와 같은 새로운 저널링 파일 시스템 기능이 추가되면서 기대를 모으고 있습니다. 또 리눅스계의 큰 손 레드햇사가 7.2를 발표하면서 기존에 많이 사용하던 저널링 파일 시스템을 두고서 종래의 ext2 파일 시스템에 저널 기능을 추가한 ext3 라는 파일 시스템을 선택했습니다.

이번 기사에서는 현재의 시스템에서 ext3 저널링 파일 시스템을 사용하는 방법에 대해서 알아보도록 하겠습니다.

파일시스템이란?

먼저, 간단히 파일시스템에 대해 알아보도록 하겠습니다.

파일시스템은,  파일의 내용과 그와 관련된 데이터 (이것들은 '메타-데이터'라 하고, 파일의 위치, 크기, 소유자, 접근 권한등의, 파일과 관련된 데이터들 입니다.)들을 유지하고 저장하는 체계인데, 지금까지 리눅스의 표준 파일시스템은 ext2 였습니다.  

ext2는, 파일의 데이터와 메타-데이터를 동시에 저장하지 않는 비동기식 파일시스템입니다. 이런 비동기식 파일시스템은 메타-데이터를 파일의 내용 자체를 저장할 때 저장하는 것이 아니라, 메모리에 두었다가 일정한 시간 간격을 두고 저장합니다. 이런 식의 저장 메카니즘을 이용하면 성능상의 잇점이 있기는 하지만 그로 인한 약점을 가지게 됩니다. 비동기식 파일시스템을 가진 운영체제는 일정 횟수 만큼 파일시스템을 마운트 했다거나, 갑자기 시스템이 다운될 경우에 재부팅하는 과정에서 무결성을 검사하기 위해 상당한 시간을 소비합니다. 인터넷을 통해 어떤 중요한 서비스를 하는 서버나 개인이 사용하는 시스템에게 있어서 오랫동안 시스템이 접속 불능 상태로 방치되고 데이터의 일부가 손상되는 것은 매우 심각한 문제입니다.

 

저널링 파일시스템

이런 문제점들을 해결하기 위한 방법 중 하나가 바로 데이터 베이스에서 쓰이는 저널링 기술을 적용한 저널링 파일 시스템입니다. 이름에서도 알 수 있듯이, 일정부분을 기록을 위해 남겨두어, 백업 및 복구 능력이 있는 파일 시스템을 말하며, 시스템 크래쉬 후에 파일시스템 복구에 드는 시간이 아주 적습니다.

저널링 파일 시스템이 어떻게 동작하는지 간단히 알아보도록 하겠습니다.

저널링 파일 시스템은, 사용자가 데이터를 입력 또는 수정하면 그 데이터를 바로 하드디스크에 기록하기 전에 관련 데이터를 로그에 기록합니다. 만약 기록 중에 가장 빈번하게 발생하는 문제인 정전이나 기타 다른 이유로 인하여 비정상적인 종료를 하게 되면 다시 부팅할 때 로그에 기록된 데이터를 참고로 하여 다시 작성하거나 복구하게 됩니다.

그렇다면, 저널링 파일 시스템을 사용하는데 따른 장점에는 무엇이 있을까요?

서버에서는 다양한 데이터를 빈번하게 기록하고 수정합니다. 이런 방식은 수많은 사용자들이 입력하고 수정하는 데이터가 예기치 못한 사고로 인하여 시스템이 다운되더라도 다시 복구할 수 있는 확률이 기존의 ext2 시스템보다 상당히 높기 때문입니다. 이것은 서버를 운영하는 입장에서는 상당히 중요한 문제라 할 수 있을 것입니다. 저널링 파일 시스템을 사용하는 것으로 보상 받을 수 있는 것이 데이터의 복구에만 국한된 것은 아닐 것입니다. 시스템 재부팅시, 기존 ext2 시스템에서 보여주는 fsck(file system check)의 오랜 복구 시간은 파일 시스템의 용량이 기가 바이트에서 테라 바이트급으로 발전하고 있는 시점에서 리눅스의 감점 요인이 될 수 있다는 것도 고려해 보아야 할 요소 중의 한가지일 것입니다. 물론, 이것은 개인 사용자들의 컴퓨터 시스템의 저장용량도 점점 더 대용량화 되어가는 현 상황에도 부합된다고 할 수 있겠습니다.

저널링파일시스템 ext3 사용해보기

'ext3'는 리눅스의 기본 파일시스템인 ext2에 저널링 기능을 추가한 것으로 'ext2' 파일 시스템에 패치(patch)를 하는 형식으로 개발되고 있으며, 리눅스 커널 개발자로 잘 알려진 Stephen Tweedie에 의해 개발 되었습니다. ext2의 사용자이고 백업이 귀찮다면, ext3는 고려해 볼만한 파일시스템입니다. Stephen Tweedie에 의해 개발되고 있는 ext3를 위한 커널 패치는 버젼 2.2.X를 위한 것입니다. 현재 2.4.x를 위한 커널 패치는 Peter Braam, Andreas Dilger 그리고 Andrew Morton에 의해 개발, 배포되고 있습니다.

http://www.uow.edu.au/~andrewm/linux/ext3/

레드햇이 오랫동안 사용되고 테스트 되어진 다른 저널링 파일 시스템을 선택하지 않고, ext3 를 선택한 이유는 무엇일까요?

그 이유중 가장 큰 이유는, ext3의 경우가 파일 시스템을 바꾸면서, 요구하는 것이 가장 적다는 것입니다. 기존 ext2 파일시스템에서 ext3로 이동하는 경우, 다른 저널링 파일 시스템처럼 백업을 하고 새롭게 파티션을 포맷하는 과정을 거치지 않고도 기존 ext2 파일시스템에서 쉽게 저널링 파일시스템으로 변환할 수 있다는 것입니다.

현재의 2.4 안정버전의 커널에서는 ext3를 지원하고 있지 않으므로, 먼저 커널과 ext3 지원 커널패치를 다운로드 합니다. 필자는 커널 2.4.13 안정버젼과 버젼에 맞는 ext3 지원패치로 테스트 했습니다. (현재 2.4.15pre2 에서 ext3가 포함되었습니다.)

 

http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.13.tar.bz2

http://www.zip.com.au/~akpm/ext3-2.4-0.9.13-2413.gz

 

참고로, 2.2 커널을 사용하는 시스템에서 ext3를 사용하고자 한다면
http://www.kernel.org/pub/linux/kernel/people/sct/ext3/README
를 참고하며 작업을 하시면 됩니다.

다른 커널 버젼용 패치들도 http://www.uow.edu.au/~andrewm/linux/ext3/ 에서 다운로드 할 수 있습니다.

다음은 커널에 ext3 지원 패치를 적용하고 옵션을 선택하여 컴파일을 합니다. 커널 컴파일 방법에 대해서 자세히 설명하지는 않고 ext3 부분만 설명하도록 하겠습니다. (커널 업그레이드 하기)

# cp ext3-2.4-0.9.13-2413.gz /usr/src/linux

# cd /usr/src/linux

# make mrproper

# gzip -cd ext3-2.4-0.9.13-2413.gz | patch -p1

# make menuconfig

.... 커널 옵션 설정 ....

'File systems' 메뉴에서 Ext3 File system을 선택합니다. 또한 'JBD debugging support'을 선택합니다. 이것은 파일 시스템이 잘못될 경우 자세한 설명을 보여줌으로써 유용한 진단법이 됩니다.

ext3 파일시스템은 커널에 포함시키거나 모듈로 빌드할 수 있습니다. 만약, ext2 루트 파일 시스템을 ext3 로 변환하고자 한다면 시작될 때 커널에 ext3를 지원하도록 하여 컴파일해야 합니다. 즉, 커널에 포함시켜야 합니다.

 

# make dep

# make clean

# make bzImage

# make modules

# make modules_install

다음은 ext3 파일시스템 사용을 위하여 파일시스템과 관련된 패키지를 업데이트합니다.

 

ftp://rpmfind.net/linux/rawhide/1.0/i386/RedHat/RPMS/e2fsprogs-1.25-1.i386.rpm

ftp://rpmfind.net/linux/rawhide/1.0/i386/RedHat/RPMS/util-linux-2.11f-16.i386.rpm

이제 ext2 파일시스템을 ext3 저널링 파일시스템으로 변환합니다.

이미 마운트 되어 있는 /dev/hdb7 를 변환시켜 보도록 합니다.
다시 말하면, 언마운트할 필요 없이 바로 변환할 수 있다는 것을 뜻합니다.
방법은 생각보다 간단합니다.

# /sbin/tune2fs -j /dev/hdb7

 

같은 방법으로 나머지 파티션들도 변환하면 됩니다.

파티션을 ext3 파일 시스템으로 포맷하는 방법에 대해서도 알아보도록 하겠습니다.
포맷하는 방법도 간단합니다. /dev/hda7 파티션을 ext3 파일 시스템으로 포맷하고자 한다면 아래와 같이 명령을 하면 됩니다.

# mke2fs -j /dev/hda7

 

다음 작업이 매우 중요한 작업으로,
부팅시에 파티션을 자동으로 마운트 할 수 있도록, 바뀐 파일시스템 형식을 적용하기 위해 /etc/fstab 파일을 편집합니다. 위 작업에서 ext3로 바꾼 파티션을 /etc/fstab 에서 모두 ext2 에서 ext3로 바꾸고 저장을 합니다.

예를 들면,

/dev/hda7 / ext2 defaults,errors=remount-ro 0 1

이것을, 아래와 같이 바꾸어 줍니다.

/dev/hda7 / ext3 defaults,errors=remount-ro 0 1

 

다시 한번 ext2 를 ext3로 고쳐적어 주는 것을 확인하고 제대로 동작하는지 확인하기 위해 리부팅을 합니다.

저널링 파일 시스템의 사용 부분

어떤 부분에 저널링 파일 시스템을 적용하여야 효과적으로 사용하는 것일까요? 저널링 파일 시스템은, 잦은 업데이트를 하는 부분에 적합하므로 /var 디렉토리와 같이 메일 스풀링 및 데이터베이스의 저장공간, 로그 기록 등의 용도로 사용되는 잦은 업데이트가 이루어지는 곳에 적용하는 것이 저널링 파일 시스템을 효과적으로 사용하는 것이며, 리눅스의 성능을 높이는 길일 것입니다.

ext3 저널링 파일 시스템 온라인 문서

리눅스 2.4.x 에서의 ext3와 다른 저널링 파일 시스템의 성능을 알고 싶다면, Linux 2.4.x Journaling File Systems: Performance Data 를 보도록 합니다. 다른 ext3와 다른 저널링 파일 시스템의 성능 데이타를 분석하여 제공하고 있습니다.

다른 저널링 파일 시스템들

마지막으로 다른 저널링 파일 시스템에 대해서도 알아보도록 하겠습니다.

리눅스를 위한 저널링 파일 시스템에는, IBM사의 독자적인 파일 시스템인 'JFS(Journaling File System)', SGI의 'XFS (eXtended File System)', 독일의 한스 라이저(Hans Reiser)가 개발한 '라이저 파일 시스템(Reiser File System : 줄여서 reiserfs)', 리눅스 커뮤니티에서 개발 중인 'ext3(Extension3)' 등이 있습니다.

'JFS'는 IBM사의 독자적인 저널링 파일시스템인데, 자사의 하이 엔드 서버와 OS/2에서 사용할 목적으로 만든 저널링 파일시스템으로 GPL로 공개하여 현재 리눅스용으로 개발 중입니다. 현재 버전은 0.0.18까지 나와 있습니다. 실리콘 그래픽스가 XFS 1.0을 팔표한 지 얼마 안되서 발표한 것으로 보아 경쟁심리가 작용한 것이 아닌가 생각됩니다.  

http://oss.software.ibm.com/jfs/

'XFS'는 SGI(실리콘 그래픽스)가 자사의 IRIX 서버를 위해 개발한 저널링 파일시스템으로 상당히 훌륭한 파일시스템으로 알려져 있습니다. 얼마전 리눅스용 XFS 버젼 1.0.1을 발표했고 개발 초기 단계에서부터 GNU GPL을 라이선스로 채택하여 현재 리눅스용으로 개발중입니다.

http://oss.sgi.com/projects/xfs/

 

'ReiserFS'는 독일의 한스 라이져(Hans Reiser)가 개발한 저널링 파일시스템으로 현재 리눅스에서 상당한 사용자 층을 확보하고 있으며 여기에 소개된 파일시스템들 중 유일하게 리눅스의 메인 트리에 포함되어 있습니다. 한스 라이져가 세운 회사인 Namesys에서 발표한 벤치마크에 따르면 현재 리눅스에서 쓰고 있는 저널링 파일시스템 중에 가장 성능이 뛰어난 것으로 보입니다.

http://www.namesys.com/

위의 홈페이지 주소에서 개발 중인 각 파일 시스템의 버전과 개발과정, 패치 또는 소스코드, 바이너리 파일을 구할 수 있습니다. 저널링 파일 시스템에 관심이 있는 분들은 홈페이지에서 좋은 자료를 제공하고 있어 한번씩 들러보는 것이 좋다는 생각이 듭니다. 현재 'XFS'의 경우 가장 성능이 뛰어난 것으로 평가받고 있으며, 리눅스 커널 2.4를 기반으로 하기에, 시스템이 커널 2.2 기반이라면 업그레이드를 요구합니다. 한스 라이저(Hans Reiser)의 'reiserfs'의 경우 현재 가장 안정적이라고 평가를 받고 있습니다. 커널 패치를 통하여 사용할 수 있는데, 현재 2.4 안정커널 모든 버전에 대하여 패치를 제공하고 있습니다.

 

글쓴이 : 이종준님  ( junilove@kebi.com )  "Return to the root!"

출처 : KingOfLinux
글쓴이 : 유정호 원글보기
메모 :

'Computer > System' 카테고리의 다른 글

Linux VFS  (0) 2007.05.23
LINUX ext3 Redhat's white paper  (0) 2007.05.23
[Linux] [펌] rm 으로 지운 파일 살리기  (0) 2007.05.23
ARP problem in VS/TUN and VS/DR  (0) 2007.05.21
LVS (Linux Virtual Server)  (0) 2007.05.21