Journaling Filesystem & XFS

글의 원활한 작성을 위해 존칭은 생략합니다..(남들도 그렇게 하더군요 )
이문서로 인해 발생하는 문제에는 책임을 질수가 없습니다.
복구해드릴수도 실력도 없습니다. 각자 알아서 잘 사용하시기 바랍니다..

# Journaling Filesystem 소개

#XFS
http://oss.sgi.com/projects/xfs/
silicon graphics에서 만든 대용량 파일시스템이다.
SGI의 IRIX서버를 위한 파일시스템인데 현재 리눅스용으로 포팅되었다.
기타 여러 저널링 파일시스템도 있지만 개인적으로 IBM의 JFS를 제외하고
모두 사용해봤지만 개인적인 평가에선 가장 높은 점수를 주고싶다.
현재는 리눅스로 포팅되어 kernel 2.4.x를 위한 패치를 제공한다.

#ReiserFS
http://www.namesys.com/

ReiserFS는 작은 파일들이 많은 시스템엔 적당하지만
큰파일들의 이동이 많거나 부하가 많이 걸릴때는 성능저하가 심했다.
(물론 본인서버에서서의 사용에서 말이다.튜닝을 잘못했거나 설정상의 문제일수도 있다. )
독일의 한스 라이져(Hans Reiser)가 만들고 SUSE Linux가 스폰서를 하고있다.
정식 커널 2.4.x에 포함되어있을만큼 충분히 안정화되어있는 저널링 파일시스템이다.

# EXT3
http://people.spoiled.org/jha/ext3-faq.html

예전에 개발되다가 잠시 중단된후 저널링 파일시스템의 필요성을 느낀 Redhat의 후원(?)으로 현재 활기있는

개발이 이루어지고 있다.
현재 2.4.x정식 커널에 들어가있다(물론 베타상태이다.)
EXT3의 가장 매력적인점은 EXT2 <->EXT3변환이 순식간에 그리고 데이타손실없이
이루어진다.(필자는 EXT3파일시스템의 오류로 고생한적이있다.- 물론 설정상의 미스나
오류일수도 있다. )

# JFS
http://oss.software.ibm.com/developerworks/opensource/jfs/index.html

IBM에서 내놓은 파일시스템으로 필자가 써보지 않은 파일시스템이다.
역시 대규모 서버용 파일시스템이다.(OS/2 와 IBM의 서버용 파일시스템인데
현재 리눅스로 포팅되었다.

# XFS사용하기
커널 컴파일에 자신이 없거나 혹은 편리하게(?)사용할 분들은
http://rpmfind.net 에서 kernel로 검색을 하면 sgi에서 배포하는
xfs패치된 2.4.x커널을 받을수있다..
rpm파일들이니 설치후 기존 파일시스템을 xfs로 변경하는부분만 이글을 참고해서
변경후 사용해도 무방하겠다.

경고!!
파일시스템의 변환은 기존파일시스템을 변경하는 중요한 작업이므로 반드시 필요한 지식을
익혀두고 필요한 자료를 받아두고 시작하기 바란다.물론 데이타 백업은 필수다..
리눅스의 하드디스크 파티션이 2개이상(스왑 파티션제외)일때를 가정하고 작업한다.
- 파티션이 하나일때는 데이타를 백업하고 커널에 xfs패치를 한뒤 새커널로 부팅후에(부트 디스켓등으로)
기존파티션을 삭제후에 새로 xfs파티션을 만드는게 더 빠르고 편할수 있다.

ftp://oss.sgi.com/project/xfs 에서 해당커널에 맞는 패치를 다운받는다.
cmd_rpms/i386/디렉토리에서 모든 rpm을 받아서 설치한다(모두 할필요는 없지만 편의상 모두설치한다.)
xfs 파일시스템 작성 및 기타 여러유틸이 포함된 rpm이다.
커널패치를 하기전에 혹시라도 잊어먹을지 모르니 위에서 받은 rpm들을 먼저 설치한다.

xfs파일시스템 최근버전은 1.0.2이지만 커널패치가 2.4.14까지 밖에 없기때문에
beta버전을 받아야 최근커널 패치가 있으니 각자 책임하에 작업하기 바란다.
패치파일이 여러개있는데 readme문서엔 필요한 패치만 하기를 권하고 있다.
하지만 자세한것을 모른다면 xfs-kernel_version-all-i386.bz2를 받아서 커널소스를 푼곳(/usr/src/linux-2.4.x)에넣고 bunzip xfs-kernel_version-all-i386.bz2로 압축을 풀고
patch -p1 < xfs-xfs-kernel_version-all-i386.patch로 커널소스(순수 바닐라 커널소스를 말한다.)
를 패치한다.이제 각자 시스템과 취향에 맞게 make menuconfig , make config , make xconfig등을
해서커널 컴파일메뉴로 들어간다.
Code maturity level options ---> 부분에서
Prompt for development and/or incomplete code/drivers에 체크.

File systems ---> SGI XFS filesystem support에 체크
Enable XFS Realtime support
Enable XFS Quota
Enable XFS DMAPI 부분에는 필요에 따라 체크하거나 해제한다.(해당 부분은 커널컴파일시 해당
옵션의 도움말을 참고하기 바람)

커널을 무사히 컴파일하고 설치했다면 이제 xfs파일시스템으로의 변환을 해야한다.

파티션이 여러개일때는 일단 /var 파티션등의 모든파일을 다른곳에 복사한뒤
컴퓨터를 리부팅하고 부팅시 linux single모드로 부팅해 최소한의 데몬만을 띄운뒤
/var(본인의 경우)파티션을 xfs파일시스템으로 새로 만들어준다.
mkfs -t xfs -f /dev/hdx
-f 명령으로 기존 파일시스템을 강제로 xfs로 포멧한다.모든 데이타는 삭제되니 신중히 실행할것.
새로 포멧한 파티션을 xfs로 마운트를 시도해본다.
mount -t xfs /dev/hdxx /var
문제가 없다면 아무런 메세지가 없을것이다.
/var파티션의 데이타백업본을 다시 /var에 카피한다..

이제 /etc/fstab을 수정.
/dev/hdxx / ext2 defaults 1 1

위의 부분을 위에서 변경한 파티션으로 바꿈..
/dev/hdxx / xfs defaults 1 1

이제 리부팅을 하면 기존의 /var 파티션이 시스템 루트가됨..
이제 다시 원래의 루트파티션에 있는 모든데이타를(/proc디렉토리는 제외) 다른곳에
백업해둔뒤 다시 xfs파일시스템으로 변경

mkfs -t xfs -f /dev/hdx

카피가 끝났으면 반드시 /새파티션/proc디렉토리를 생성해야한다. 그렇지 않으면/proc디렉토리를
마운트 하지 못해 에러를 내고 부팅에 실패하게 된다.
위에서 한 파티션 데이타 복원작업을 반복한다..
첨부파일은 리눅스 커널 2.4.0에 xfs패치가 된 디스크의 이미지이다..
압축파일안에 포함된 문서를 읽어보고 디스크를 만들기 바란다.

첨부파일의 다운로드 주소 - ftp://ftp.astro.umn.edu/pub/users/carde
관련 사이트 - http://www.astro.umn.edu/~carde/

XFS FAQ - http://oss.sgi.com/projects/xfs/faq.html

+ Recent posts