CAFE

filesystem/disk

Re:ext4로 이주하기

작성자이누기|작성시간09.12.01|조회수313 댓글 0

http://www.ibm.com/developerworks/kr/library/l-ext4/index.html

ext4로 이주하기

최신 리눅스 파일 시스템을 위한 준비

developerWorks
문서 옵션
수평출력으로 설정

이 페이지 출력

이 페이지를 이메일로 보내기

이 페이지를 이메일로 보내기

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Roderick W. Smith, 컨설턴트 겸 저자

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 7 월 22 일

ext4는 오랫동안 자리를 지켜온 리눅스(Linux?) 파일 시스템의 최신 버전이며, 직전 버전 만큼이나 중요하고 인기가 높으리라는 예상을 합니다. 리눅스 시스템 관리자로서, 여러분은 ext4의 장단점과 이주하기 위한 기본 절차를 숙지하고 있어야 합니다. 이 기사는 ext4를 채택할 시기, ext4를 위한 전통적인 파일 시스템 유지 관리 도구 활용법, 파일 시스템 성능을 최대로 이끌어내는 방법을 설명합니다.

Ext4 기능

리눅스는 다양한 파일 시스템을 지원한다. 몇몇은 다른 운영체제를 위해 개발된 네트워크 파일 시스템이나 파일 시스템에 특화되어 있다. 하지만 놀랍게도 많은 파일 시스템이 리눅스 전용 파일 시스템으로 쓰인다. 루트(/)와 시스템 디렉터리는 전용 파일 시스템에 위치한다. 현재 이런 부류에 속하는 전용 파일 시스템은 ext2, ext3, ReiserFS, XFS, JFS(Journaled File System) 등이 있다. 하지만 파일 시스템 설계와 개발이 계속 진행중이며, 새로운 파일 시스템이 수평선에서 속속 고개를 내밀고 있다.

아마도 현재 개발 중인 가장 중요한 리눅스 전용 파일 시스템은 ext4로, 리눅스 전용으로 개발되었던 원래 파일 시스템(ext 또는 extfs)의 네 번째 개정판이다. 전통을 이어받아 ext4는 그다지 머지 않은 장래에 리눅스를 위한 (어쩌면 독보적일지도 모르는) 중요한 표준 파일 시스템이 될 가능성이 높아 보인다.

ext3와 비교한 ext4

네 번째 확장 파일 시스템(ext4 또는 ext4fs)은 개발자들이 새로운 첨단 기능을 ext3에 추가하기 위해 개발을 시작했다. 이 과정에서 다음과 같은 여러 가지 문제점이 드러났다.

  • 몇몇 새로운 기능은 과거 하위 호환성을 깨버린다.
  • ext3 코드는 점점 더 복잡해지고 유지보수가 어려워진다.
  • 변경 내역은 아주 안정적인 ext3를 안정하지 못한 상태로 만들어버릴지도 모른다.

이런 이유로 인해, 개발자들은 2006년 6월에 ext4 개발을 ext3에서 분리하기로 결정했다. 분리 시점 이후로 ext4는 계속해서 작업이 진행되었지만, 일부 리눅스 애호가와 관리자 이외의 사용자에게는 거의 모습을 드러내지 않았다. 2006년 11월에 커널 2.6.19가 발표되면서, ext4는 처음으로 주류 커널에 모습을 드러냈다. 물론 여전히 실험적(experimental)이라는 딱지가 붙어있지만 대다수 사람은 이런 사실에 신경쓰지 않는다.

커널 2.6.24.4에 들어와서도 ext4가 계속해서 개발 중이기 때문에 기능 목록은 유동적이다. ext3와 비교해 이 글을 쓰는 현재까지 공개되었으며 앞으로 예상되는 개선 기능을 표 1에 정리했다.


표 1. ext3와 비교해 현재까지 공개되었으며 앞으로 예상되는 개선 기능
기능장점
더 큰 파일 시스템ext3는 32테라바이트 파일 시스템과 2테라바이트 파일을 지원하지만 실제로는 아키텍처와 시스템 설정에 따라 제약이 좀 더 커진다. 보통 2테라바이트 파일 시스템과 16기가바이트 파일까지 낮아진다. 반면에 ext4는 1024페타바이트(1엑사바이트) 파일 시스템과 16테라바이트 파일을 지원한다. 이는 평균적인 데스크톱 컴퓨터나 서버에서 (아직!) 중요하지 않을지도 모르지만, 대규모 디스크 배열을 사용하는 관리자에게는 중요하다.
extentsextents는 디스크 파일 기술자의 효율성을 개선하는 방법으로 특히 큰 파일을 삭제할 때 완료 시간을 줄인다.
영속적인 선행 할당응용 프로그램이 실제로 사용하기 전에 디스크 공간을 할당할 필요가 있다면, 대다수 파일 시스템은 아직 사용하지 않은 디스크 공간에 0을 기록하는 방법으로 선행 할당 작업을 수행한다. ext4는 이런 작업 없이도 선행 할당이 가능하므로 몇몇 데이터베이스와 멀티미디어 도구 성능을 개선한다.
지연 할당ext4는 마지막 순간까지 디스크 공간 할당을 지연하므로 성능을 개선한다.
더 많은 하위 디렉터리ext3에서 하위 디렉터리를 단지 3만 2000개만 만들 수 있다는 사실에 답답함을 느꼈다면, 이런 제약이 ext4에서 사라졌다는 사실에 안도의 한숨을 쉬리라.
저널 자료 체크섬ext4는 저널 자료에 체크섬을 추가해 안정성과 성능을 개선했다.
온라인 조각 모음ext3에서 과도한 단편화가 일어나지 않음에도 불구하고 파일 저장 과정에서 어느 정도 단편화는 피하기 어렵다. ext4는 온라인 조각 모음을 제공해 전반적인 성능을 개선한다.
파일 복구아직 구현은 되지 않았지만, ext4에서 누군가 실수로 파일을 지웠을 경우 간편하게 수행할 수 있는 파일 복구 기능을 제공할지도 모른다.
빠른 파일 시스템 점검ext4는 fsck가 점검 과정에서 사용하지 않는 부분을 건너뛰도록 자료 구조를 추가했으므로 시스템 점검 속력을 높인다.
나노초 타임스탬프ext3를 포함한 대다수 파일 시스템은 초 단위로 타임스탬프 자료를 기록한다. ext4는 나노초 단위로 정밀도를 높였다. ext3에서 2038년 1월 18일까지 타임스탬프를 지원함에 비해 ext4는 2514년 4월 25일까지 타임스탬프를 지원한다는 사실도 고려하자.

ext4는 현재 한창 개발중이며, 이런 기능 목록은 바뀔 가능성이 있다. 이런 기능 중 몇몇을 사용할 경우, ext3에 대한 하위 호환성을 깨버린다. 다시 말해, ext4 파일 시스템은 ext3 파일 시스템 유형으로 마운트가 불가능할지도 모른다. ext4는 물론 상위 호환성을 유지한다. 다시 말해 ext3 파일 시스템을 마치 ext4 파일 시스템인양 마운트할 수 있다.

누가 ext4를 써야 하나?

ext4에서 가장 눈에 띄는 개선 사항은 파일과 파일 시스템 크기다. 따라서 ext4가 필요한 사용자는 디스크 공간을 테라바이트 이상 사용하는 관리자일 가능성이 높다. 표 1에 나열한 기능 목록은 눈에 띄는 색다른 개선 사항을 보여준다. 예를 들어, 디렉터리 아래에 하위 디렉터리가 많거나 타임스탬프 정밀도가 1초 미만이 되어야 할 경우 ext4가 필요할 가능성이 높다.

아직 ext4는 실험 단계이므로, 아마 틀림없이 커널 재컴파일을 해야만 사용이 가능하다. 이런 과정이 부담스러우면 ext4를 사용하다가 문제를 겪을 가능성이 높다. 실제로 실험적인 ext4 특성은 개발에 기여하기를 원하거나 이런 몇 가지 기능이 꼭 필요할 경우에만 사용해야 함을 의미한다. 안정적인 ext4 출시에 앞서 안정적인 대규모 디스크 지원이 필요하다면, XFS나 JFS를 대안으로 고려하자.

물론 ext4가 항상 실험 단계로 남아있지는 않을 것이다. 언젠가는 ext4가 안정적인 파일 시스템으로 탈바꿈할 것이다. 이렇게 되면, 거의 모든 사람이 보기에 ext4가 ext3만큼 좋은 선택이 되리라. 물론 몇 가지 주의 사항이 있다. 먼저 ext4에만 해당하는 버그가 있을지도 모르므로, ext4가 안정화되었다고 이야기를 들을 때까지 신중하게 접근해야 한다. 다음으로 ext4 사용은 디스크에 접근하는 옛날 도구를 사용하지 못하도록 방해한다. 이런 상황은 응급 복구 도구에 영향을 미치므로, 판올림 전에 ext4를 지원하는 손에 익은 도구가 나올 때까지 기다릴 필요가 있다. 물론 장점도 있다. ext3에서 ext4로 넘어가는 과정은 파일 손실이 없으므로, 보존이 필요한 현재 자료를 손상없이 쉽게 이주할 수 있다.




위로


ext4 지원을 위한 컴파일과 활성화 작업

여기까지 읽었다면, ext4로 실험을 해볼 마음이 들지도 모르겠다. 실험을 하려면 필요한 지원 기능을 추가하기 위해 커널 재컴파일이 필요하다. 최신 커널(이 기사를 번역할 무렵에 나온 최신 커널은 2.6.26이다)로 시작하면 좋겠다. 커널 원시 코드를 풀어서 수동으로 모든 옵션을 선택하거나 예전 커널을 빌드할 때 사용한 .config 파일을 복사하고 나서 make oldconfig로 예전 설정을 복사한 다음에 (make xconfig와 같이) 좋아하는 환경 설정 명령어를 입력해 커널 옵션을 살펴본다. File Systems 영역에 Ext4dev/ext4 extended fs support development (EXPERIMENTAL)라는 ext4 옵션이 나온다(특히 ext4가 안정화되면 나중에 이름이 바뀔 가능성이 높다). 참고로 ext4 옵션을 보기 위해서는 General 영역에 있는 Prompt for development and/or incomplete code/drivers 옵션을 켜야 한다.

ext4 지원을 선택한 다음에 커널 변경을 저장하고 make를 입력해 커널을 컴파일하고 root 권한으로 make modules_install을 입력해서 모듈을 설치한다. 그러고 나서 컴파일된 커널(arch/i386/boot나 다른 디렉터리)을 적절한 위치(/boot)로 복사하고, GRUB이나 LILO 설정을 편집해 커널을 추가한 다음 컴퓨터를 다시 시작하자. 램 디스크로 부팅한다면 mkinitrd 유틸리티로 이미지를 준비해야 한다.

커널 모듈에 이어 ext4 파일 시스템 기능을 지원하는 e2fsprogs 버전을 살펴보기를 원할 것이다. tar 파일을 내려받거나(참고자료 절을 살펴서 적절한 사이트를 선택하자), Listing 1에 나오듯이 git를 사용하면 된다.


Listing 1. git를 사용해 최신 e2fsprogs를 내려받는 명령어
                
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ git checkout -b pu
Switched to a new branch "pu"
$ git branch 
master
* pu
$ git pull git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pu

배포판 패키지 관리자를 사용해 git를 설치할 필요가 있을지도 모르겠다. 여기서 소개하는 도구는 아직 테스트를 많이 수행하지 못했기에, 실제 운영 시스템에서 사용하도록 권하지는 않는다. 지금까지는 ext4 사용에 진짜 필요한 여러 가지 내용을 추가하지 않은 듯이 보인다. 따라서 배포판에 따라오는 표준 e2fsprogs 패키지를 그대로 사용하는 방식이 바람직하다.

e2fsprogs 컴파일 과정은 표준을 그대로 따른다. 패키지를 풀고, cd로 디렉터리에 들어가 ./configure 명령을 입력하고 make 명령을 입력하고 (root로) make install 명령을 내리면 된다. 이런 과정은 여러분 배포판에 따라오는 표준 e2fsprogs 패키지를 겹쳐쓸지 모르므로, (불안정하지만) 최신 버전을 설치하고 싶을 때만 이런 과정을 밟자.




위로


ext3에서 ext4로 이주하기

ext4 지원 커널로 컴퓨터를 시동했다면 새로운 파일 시스템을 사용할 준비가 끝났다. 이렇게 하려면 파티션을 마련하고, RAID 장비나 다른 저장 공간을 확보하자. ext4 파일 시스템을 사용하기 시작했다면, 파일 시스템 옵션을 미세 조정해야 한다.

디바이스 준비하기

처음부터 새로 시작하기를 원한다면, 과거/최신 e2fsprogs 패키지에 들어있는 mkfs.ext3나 mkfs.ext4라는 도구를 사용해 파티션을 포맷해야 한다. 예를 들어, mkfs.ext4 -j /dev/sda6는 /dev/sda6 파티션을 포맷한다. mkfs.ext4는 좀 더 ext4에 밀접한 기능을 활성화해 파일 시스템을 만들어낸다.

현재 e2fsprogs 프로그램은 커널 파일 시스템 변경을 완전히 따라가지 못한다. 다행히도, 대다수 커널 드라이버 기능은 mkfs.ext4나 다른 유틸리티에 특별한 준비를 요구하지 않는다. ext4 기능은 파일 시스템을 마운트할 때 활성화된다. 대규모 매체에 ext4를 사용하기를 원하면, 남들이 가지 않은 길을 걷기 위해 신발끈을 동여매야 한다. 여기서 발생하는 문제를 문서로 만들어 보고하자!

현존하는 ext2나 ext3 파일 시스템을 ext4 파일 시스템처럼 사용할 수도 있다. 간단하게 디바이스를 마운트하면 된다. 하지만 extents와 같은 새로운 기능을 사용한다면 예전으로 돌아가서 ext2나 ext3 드라이버로 파일 시스템을 다시 마운트하지 못한다.

ext4 사용하기

ext4 파일 시스템으로 디바이스를 사용하려면, ext4dev 파일 시스템 유형 코드로 마운트해야 한다(ext4가 안정화되면 파일 시스템 유형 코드는 ext4로 바뀔 것이다). 예를 들어, mount -t ext4dev /dev/sda6 /mnt/point 명령을 내리면 /dev/sda6를 ext4 파일 시스템으로 /mnt/point에 마운트한다. 기본적인 ext4 용법은 이게 전부다. 기본 마운트 옵션은 extents를 활성화한다는 사실에 주의하자. 일단 extents를 사용하고 나면 ext3 파일 시스템으로 돌아가지 못한다. ext4를 시도해보고 싶지만 ext3로 돌아가는 옵션을 보존하려면 -o noextents 옵션을 붙여 extents 사용을 피하자.

실제로 ext4를 마운트해 사용하기 시작하면 다른 파일 시스템과 똑같이 동작한다. 파일을 복사하고 직접 생성하는 작업이 가능하다. 버그가 생기거나 벤치마크 테스트를 하지 않는 이상 차이점을 느끼지 못할 것이다.

ext4 성능 옵션 미세 조율하기

tune2fs 프로그램을 사용해 ext2나 ext3 파일 시스템을 조율하듯이 동일한 방법으로 ext4 파일 시스템을 조율할 수 있다. 현재, tune2fs는 ext4 관련 옵션을 하나도 제공하지 않지만, 표준 -O 매개변수로extents와 같은 ext4 옵션을 설정할 수 있다.

ext4로 파일 시스템을 마운트할 때, 커널은 extents와 같이 파일 시스템에 밀접한 기능을 사용하기 시작한다. 이렇게 되면 이리저리 묘기를 부리지 않는 이상 ext3 파일 시스템으로 다시 돌아가서 마운트하지 못하도록 막아버린다.

ext3 파일 시스템을 ext4로 마운트하면 ext4 관련 기능을 활성화하지만, 마운트 자체만으로는 과거 자료 구조를 새로운 형식으로 변환하지 않는다. 예를 들어, 현존하는 파일은 extents 대신에 block-for-block 방식으로 할당된다. 따라서 예전 파일은 새로운 기능이 제공하는 장점을 활용하지 못한다. 하지만 ext4 개발자는 이런 점을 고려해 앞으로 전진할 방법을 제공한다. (다음에 설명할 아주 실험적인) e4defrag 도구는 extents를 사용해 할당하도록 변환 작업을 수행한다. 또 다른 새로운 도구(아직 공개되지 않았지만)는 새로운 형식에 맞춰 아이노드 크기를 변경하는 기능을 제공할 예정이다.




위로


ext4 파일 시스템 관리하기

표준 e2fsprogs 도구를 사용해 ext4 파일 시스템을 관리할 수 있다. 예를 들어, 파일 시스템을 생성한 다음에 옵션을 조정하려면 tune2fs를 사용하고, 파일 시스템을 점검하려면 fsck.ext4를 사용한다. 이런 프로그램은 ext3와 비교해 ext4에 들어와서도 그다지 바뀌지 않았다. 하지만 직전에 언급했듯이 ext4는 fsck 성능을 향상시키기 위한 몇몇 개선 사항을 포함하고 있다.

이런 도구 이외에도, 새롭게 등장한 도구인 e4defrag에 관심을 기울일 필요가 있다. 이 프로그램은 마운트된 ext4 파일 시스템을 대상으로 조각 모음을 실행한다. 이런 작업은 특히 파일 시스템이 거의 가득 찼을 경우에 성능을 향상시킬 수 있다. 또한 ext2/3 스타일 할당을 ext4 스타일 extents 기반 할당으로 변경하는 장점이 있으므로, ext3 파일 시스템으로 사용했을 경우와 비교해 성능을 높여준다. 불행하게도e4defrag는 아직 표준 e2fsprogs 패키지에 들어있지 않으므로, "원본 파일"을 구하기 위해 인터넷을 뒤져야 한다(참고자료 절에 링크를 달아 놓았다).



참고자료

교육

제품 및 기술 얻기
  • ftp.kernel.org에서 ext4를 지원하는 e2fsprogs 를 구하자.

  • 비록 e2fsprogs 패키지에 아직 포함되어 있지 않지만 ext4defrag 유틸리티 원시 코드 복사본을 찾아보자.

  • SEK for Linux: DB2?, Lotus?, Rational?, Tivoli?, WebSphere?를 비롯한 리눅스용 IBM 최신 평가판 소프트웨어가 담긴 두 장짜리 DVD 세트를 주문하자.

  • IBM 평가판 소프트웨어: developerWorks에서 직접 내려받아 다음번 리눅스 프로젝트를 만들어보자.


토론


필자소개

Rod Smith

Rod Smith는 오랫동안 리눅스 컨설

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트

filesystem/disk 다른글

현재페이지 1234
맨위로

카페 검색

카페 검색어 입력폼