저널링파일시스템(JournalingFileSystem) 사용을 위한 설치

글 : 정용석/ freemir2k@intizen.com

 

 

    <목 차>

    0. 저널링파일시스템(JournalingFileSystem)을 선택해야 하는가?
    1. '저널링 파일 시스템'의 종류
    2. '저널링 파일 시스템'의 장점과 단점
    3. '저널링 파일 시스템'의 사용 부분
    4. '저널링 파일 시스템'을 구할 수 있는 곳
    5. '저널링 파일 시스템' 설치하기

 

0. 저널링 파일 시스템(JournalingFileSystem)을 선택해야 하는가?

    근래에 리눅스 분야에서 가장 관심이 있는 분야에 대해 생각해 본다면 '저널링 파일 시스템(Journaling File System)'을 제외할 수는 없을 것입니다. '저널링 파일 시스템'이란 이름에서도 알 수 있듯이 일정부분을 기록을 위해 남겨두어 백업(backup) 및 복구 능력이 있는 파일 시스템을 말합니다. 이러한 '저널링 파일 시스템'이 관심이 되는 이유는 무엇일까요? 그것은 아마도 국내에서 리눅스가 98년 말을 기점으로 하여 단순히 개인 및 학교에서 단순 취미나 교육용으로 사용되던 것을 벗어나 이제는 기업에서도 인정받는 서버로 사용되기 때문일 것입니다. 기업에서 사용하는 서버는 대 용량의 기록매체를 사용합니다. 수많은 정보를 입력 및 검증하고, 제공하는 서버에서는 대 용량의 기록매체가 필요한 것은 어떻게 보면 당연한 일입니다.

    그렇다면 '저널링 파일 시스템'이 리눅스 분야에서 관심을 끄는 이유는 무엇일까요? 그것은 리눅스가 아직까지 '저널링 파일 시스템'을 지원하지 않았었기 때문일 것입니다. 요즘은 개인 사용자용 컴퓨터에서도 하드디스크의 용량이 몇 십 기가 바이트(GB)를 넘는 시점에서 어떻게 보면 '저널링 파일 시스템'에 대한 관심이 기업을 넘어 개인 사용자에게도 미치는 것은 당연한 시대적 흐름이라 생각이 됩니다. 그렇다면 '저널링 파일 시스템'에 대충 알아보았으니, 이제는 '저널링 파일 시스템'에 종류에는 어떠한 것이 있는지에 대하여 알아보고, 더 나아가 '저널링 파일 시스템'의 장점과 단점에 대해 알아본 후 과연 나의 리눅스 시스템에 필요한 것인지에 대해 생각해보고, 마지막으로 '저널링 파일 시스템'의 설치에 필요한 파일을 구하는 방법과 설치방법에 대해 알아보면서 마치도록 하겠습니다.

 

1. '저널링 파일 시스템'의 종류

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

    'JFS'는 IBM사의 독자적인 저널링 파일 시스템인데 GPL로 공개하여 현재 리눅스용으로 개발 중입니다. 현재 버전은 0.0.18까지 나와 있습니다.
    'XFS'는 SGI사가 자체 보유한 저널링 파일 시스템으로 역시 GPL로 공개하여 현재 리눅스 용으로 개발 중입니다. 현재 버전은 beta2까지 나와 있습니다.

    'reiserfs'는 현재 리눅스 용 저널링 파일 시스템 중에서 가장 안정적이라는 평가를 받는 파일 시스템으로 독일의 한스 라이저(Hans Reiser)가 개발한 파일 시스템입니다. 현재 미지리서치에서 개발한 '미지리눅스(MiziLinux) 1.5'에 기본 탑재되어 있습니다. 대만의 Gentoo Linux 에도 포함되어 있습니다.

    'ext3'는 리눅스 공동체에서 개발 중인 저널링 파일 시스템입니다. 'ext2' 파일 시스템에 패치(patch)를 하는 형식으로 개발되고 있으며 현재 0.0.2f까지 제공되고 있습니다.

 

2. 저널링 파일 시스템의 장점과 단점

    저널링 파일 시스템의 장점에 대해 알아보기 전에 어떻게 동작하는 지에 대하여 알아보겠습니다. 저널링 파일 시스템은 사용자가 어떠한 내용을 입력 또는 수정하면 그 내용을 바로 하드디스크에 기록하기 전에 관련 내용을 로그(log)에 기록합니다. 그리하여 만약 기록 중에 가장 빈번하게 발생하는 문제인 정전이나 기타 다른 이유로 인하여 비정상적인 종료를 하게 되면 다시 부팅할 때 로그에 기록된 내용을 참고로 하여 다시 작성하거나 복구를 하게 됩니다.

    그렇다면 저널링 파일 시스템을 사용하는데 따른 장점에는 무엇이 있을까요? 이것이 바로 리눅스가 서버 시장에서 확고한 위치를 유지하는 관건이 될 것입니다. 우선 서버에서는 다양한 내용을 빈번하게 기록하고 수정합니다. 수많은 사용자들이 입력하고 수정하는 내용이 예기치 못한 사고로 인하여 시스템이 다운(down)되더라도 다시 복구할 수 있는 확률이 기존 ext2 시스템보다 상당히 높기 때문입니다. 이것은 서버를 운영하는 운영자나 회사의 시스템 관리부 입장에서는 상당히 중요한 문제라 할 수 있을 것입니다. 기존에 구축해오던 회사의 이미지와 예기치 못한 사고에 대한 회사의 대비책 등을 평가받을 수 있는 기회이기 때문일 것입니다. 물론 이러한 저널링 파일 시스템을 사용하는 것으로 보상받을 수 있는 것이 데이터(data)의 복구에만 국한된 것은 아닐 것입니다. 시스템 재부팅(reboot)시 기존 ext2 시스템에서 보여주는 'fsck(file system check)'의 가히 경악할 만한 수준의 복구 시간은 파일 시스템이 기가 바이트(GB) 및 테라 바이트(TB) 급으로 격상되고 있는 시점에서 리눅스의 감점 요인이 될 수 있다는 것도 고려해 보아야 할 요소 중의 한가지일 것입니다. 물론 이것은 개인 사용자들의 컴퓨터 시스템의 저장용량도 점점 더 거대해지고 있는 현 추세에 부합된다고 할 수 있겠습니다. 이러한 관점에서 본다면 저널링 파일 시스템은 현 추세에 비추어 볼 때 리눅스가 기업 시장에서의 서버급 운영체제로서 필히 갖추어야 할 기능으로 평가할 수 있으며, 개인 사용자들도 필요에 따라서는 사용해야 할 것입니다. 그렇다면 이러한 저널링 파일 시스템에 단점은 없을까요? 이번에는 저널링 파일 시스템의 단점에 대해서 생각해 보도록 하겠습니다.

    우선 저널링 파일 시스템을 사용하게 되면 로그를 기록한다는 것에 대해 앞서 알아보았습니다. 로깅(logging) 기능에 따라 파일 시스템이 데이터가 업데이트(update) 될 때마다 로깅에 따른 수많은 리소스(resource)를 필요로 하게 됩니다. 이러한 문제점이 발생하기 때문에 무조건 저널링 파일 시스템을 사용하는 것보다는 필요한 부분에 한해서만 사용하는 지혜가 필요할 것입니다.

 

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

    그렇다면 어떤 부분에 저널링 파일 시스템을 적용하여야 효과적으로 사용하는 것일까요? 그것은 앞에서 살펴본 것처럼 저널링 파일 시스템이 잦은 업데이트를 하는 부분에 적합하다는 것을 알았습니다. 그렇다면 우선적으로 생각해 볼 수 있는 부분이 '/var' 디렉토리일 것입니다. '/var' 디렉토리는 메일 스풀링(mail spooling) 및 데이터베이스의 저장공간, 로그 기록 등의 용도로 사용되기 때문에 잦은 업데이트가 이루어지는 곳입니다. 이 부분처럼 잦은 업데이트가 이루어지는 부분에 적용하는 것이 저널링 파일 시스템을 효과적으로 사용하는 것이며, 리눅스의 기본 개념에도 맞는 것일 겁니다. 그렇다면 이런 효과적인 저널링 파일 시스템을 이용하기 위해서 소스코드 및 바이너리 파일을 구할 수 있는 곳과 설치방법에 대해서 알아보도록 하겠습니다.

 

4. 저널링 파일 시스템을 구할 수 있는 곳

    우선 저널링 파일 시스템을 사용할 수 있도록 해주는 소스코드 및 바이너리 파일을 구할 수 있는 곳에 대해 알아보도록 하겠습니다.
     

    명 칭

    홈 페 이 지 주 소

    J F S

    http://oss.software.ibm.com/developerworks/opensource/

    X F S

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

    reiserfs

    http://devlinux.com/projects/reiserfs/
    또는
    http://kernel.pe.kr/data.php

    ext3

    ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/

     

    위의 홈페이지 주소에 접속해 보면 현재 개발 중인 각 파일 시스템의 버전과 개발과정, 패치 또는 소스코드, 바이너리 파일을 구할 수 있습니다. IBM사의 'JFS'의 경우 홈페이지에서 처음 개발되었던 0.0.1부터 현재 가장 최근에 개발된 0.0.18까지 공개되어 있고, 개발과정, 개발 가이드(guide) 등을 제공해 저널링 파일 시스템에 관심이 있는 이에게 좋은 자료를 제공하고 있어 관심이 있는 분들은 한번씩 들러보는 것이 좋다는 생각이 듭니다. SGI의 'XFS'의 경우 홈페이지에서 최근까지 개발된 베타 버전의 소스코드와 RPM을 동시에 제공하고 있습니다. 현재 'XFS'의 경우 리눅스 커널 2.4를 기반으로 하기에 대부분의 시스템에서 커널 2.2 기반이기에 약간의 업그레이드를 요구하고 있습니다. 업그레이드에 관한 내용도 홈페이지에서 찾을 수 있습니다. 한스 라이저(Hans Reiser)의 'reiserfs'의 경우 현재 가장 안정적(stable)이라고 평가를 받고 있습니다. 커널 패치를 통하여 사용할 수 있는데 현재 안정커널 2.2.14부터 2.2.17까지의 모든 버전에 대하여 패치를 제공하고 있으며, 개발커널 2.4.0-test1부터 2.4.0-test9까지 제공하고 있습니다. 리눅스 공동체에서 개발 중인 'ext3'의 경우 홈페이지를 정확하게 확인하지 못했습니다. 위의 FTP에 접속해 보면 jfs 디렉토리에 readme 파일이 있는데 그 파일을 자세히 읽어보면 현재 개발 중이기에 시스템이 손상이 갈 수 있다는 말이 있으니 생각해 보시고 판단이 설 때 사용해 보시길 권장합니다. 그러면 마지막으로 저널링 파일 시스템을 사용하는 방법에 대해 알아보도록 하겠습니다.

 

5. 저널링 파일 시스템 설치하기

    본지에서는 가장 안정적이라 평가를 받는 한스 라이저(Hans Reiser)씨의 'reiserfs'를 설치하는 방법에 대해 알아보도록 하겠습니다. 기타 다른 파일 시스템은 해당 홈페이지에 설치 방법이 자세히 설명되어 있으니 참고 하시기 바랍니다.

    (1) http://devlinux.com/projects/reiserfs/ 또는 http://kernel.pe.kr/data.php에서 자신의
         버전에 맞는 패치 파일을 받아옵니다.

    (2) 받아온 패치 파일을 적용시킵니다.
         만약 패치 파일 이름이 linux-2.2.14-reiser.tar.gz이라고 가정한다면

      gzip -cd linux-2.2.14-reiser.tar.gz
      patch -p1 < linux-2.2.14-reiser.tar.gz

    (3) 커널 컴파일(Kernel compile)을 합니다.
         먼저 커널 옵션(option)을 선택하기 위해서 make menuconfig나 make xconfig 나
         make config 등을 실행해서 'Code maturity level options' 옵션을 선택한 뒤
         'Prompt for development and/or incomplete code/drivers'를 선택하고
         'File systems ---> <*> Reiserfs support'를 선택합니다.
         물론 저장하고 종료해야 하겠지요? 그 다음 커널 컴파일, 모듈 컴파일을 마친 후
         리로(lilo)를 실행해서 리로의 정보를 고쳐주는 것도 잊으면 안됩니다.

    (4) 'reiserfs'의 'utils'를 컴파일합니다.
          이것은 'mkreiserfs'를 만들기 위해서 필요합니다. 방법은 아래와 같습니다.

      # cd fs/reiserfs/utils/
      # make
      # make install

    (5) 다 끝났으면 'reiserfs'가 적용된 커널 이미지로 다시 부팅하면 됩니다.

    (6) 이제는 'reiserfs'를 사용하는 파일 시스템을 만들어 보겠습니다.
    'reiserfs'가 적용될 파티션을 정합니다. /dev/hdb5라 가정해 보겠습니다.

      # umount /dev/hdb5 마운트가 되어있지 않다면 불필요합니다.
      # mkreiserfs /dev/hdb5
      # mount /dev/hdb5 /sample 'reiserfs'로 만든 /dev/hdb5를 /sample로
         마운트 시켰습니다.

    (7) /etc/fstab에서 /dev/hdb5의 파일 시스템 종류를 'reiserfs'로 바꿉니다.
         이것은 위의 예를 통한 것이므로 사용자가 각자 정해야 할 것입니다.

    (8) 마지막으로 정확하게 되었는지 확인을 해야 합니다.

      $ mount
                   .
                   .
                   .
      /dev/hdb1 on /sample type reiserfs (rw)
                   .
                   .
                   .

    (9) 참고사항으로 원하는 파티션(partition)에 'reiserfs'를 적용시켜 만들고 마운트 시키면
         바로 32MB를 차지하는 것을 보게 됩니다. 이것은 앞서 설명한 저널링 파일 시스템의
         로깅(logging) 기능으로 인하여 정보를 기록하는 부분이므로 혹시 잘못한 것은 아닌가,
         아니면 무엇에 이것을 쓰는지 알아보기 위하여 정력을 낭비하시는 사태가 없기를
         바랍니다.

    필자와 함께 미숙하지만 대강이라도 저널링 파일 시스템에 대해 알아보고 설치까지 해 보았습니다. 저널링 파일 시스템은 현재는 물론이고 앞으로도 더욱 더 필요한 기능이 될 것이며, 리눅스에서도 중요하게 생각하는 부분이므로 지속적인 관심이 필요할 것입니다. 현재 사용 중인 시스템에서 저널링 파일 시스템을 적용해야 하는 부분에 대해서는 개인이 직접 손익을 따져보고 사용하는 것이 가장 중요하다는 것을 말씀드리며, 필자가 현재 군 복무를 마친지 얼마 안된 시점이어서 다소 말이 부정확하고 의미상 틀린 용어가 있더라도 너그러이 봐주시길 부탁드리며 사용중 의문사항이나 잘못된 점에 대해서는 e-mail로 연락주시길 부탁드립니다.

    <필자 소개>
    정용석 - 지난달 군 복무를 마친 후 현재 평소 관심있게 보아온 프로그래밍 분야에 대한 공부를 시작하였음. 앞으로 리눅스 발전에 조금이라도 보탬이 되려고 노력하고 있음.




▲ top

home으로...