커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 시스템 관리 / 서버운영 > 디스크 관리 / 파일시스템 / mount 도움말
검색 : 사이트 WHOIS 웹서버 종류


  CentOS 5.x에서 ext4 파일시스템 사용 작성일 : 2009/11/18 23:17
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 23283
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : CentOS 5.x에서 ext4 파일시스템 사용
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2009.8.28(금)
    수정일 : 2009.11.17(화) CentOS 5.4에 대한 내용 추가

    CentOS 5.3 버전에서 기본적으로 제공하는 커널에서는 ext4 파일시스템의 개발버전(ext4dev)을 사용할 수 있었다. 그 후 CentOS 5.4(RHEL 5.4)이 나오면서 ext4의 개발 딱지를 떼어나고, 정식적으로 사용할 수 있게 되었다. /lib/modules/커널버전/kernel/fs/ext4/ 아래를 살펴보면 ext4.ko (또는 ext4dev.ko)등의 ext4 파일시스템 모듈을 확인할 수 있다.

    ext4 파일시스템 관련 툴인 e4fsprogs패키지가 설치되어 있지 않은 경우 설치한다.

     
    # yum install e4fsprogs
    # rpm -ql e4fsprogs
    /etc/mke4fs.conf
    /sbin/debuge4fs
    /sbin/dumpe4fs
    /sbin/e4fsck
    /sbin/e4image
    /sbin/e4label
    /sbin/e4undo
    /sbin/finde4fs
    /sbin/fsck.ext4
    /sbin/fsck.ext4dev
    /sbin/mke4fs
    /sbin/mkfs.ext4
    /sbin/mkfs.ext4dev
    /sbin/resize4fs
    /sbin/tune4fs
     



    1. 간략한 과정 정리

    (방법 1) ext4 파읽시스템 생성하기

    1) mkfs.ext4 -L 볼륨명 /dev/파티션
    2) /etc/fstab에 해당 파티션 정보를 설정한다.
    3) mount /dev/파티션

    (방법 2) ext3 -> ext4로 파일시스템 변경하기

    1) ext4로 변경할 파티션을 먼저 unmount한다. ( umount /dev/파티션 )
    2) tune4fs -O extents,uninit_bg,dir_index /dev/파티션
    3) fsck.ext4 -fpDC0 /dev/파티션
    4) /etc/fstab에서 ext3 -> ext4로 바꿔 저장한다.
    5) mount /dev/파티션


    2. ext4 파일시스템 생성하기

    ext2, ext3파일시스템 만드는 것과 동일한 방법이므로 따로 설명할 것 조차 없다. 예제에서는 /dev/sdb1 파티션으로 가정한다.

     
    # mkfs.ext4 -L /data /dev/sdb1 (-L 은 볼륨명. 알기 쉽게 임의로 적으면 된다.)
    # tune4fs -l /dev/sdb1
    ... 생략 ...
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
    ... 생략 ...
     


    ext4는 ext3의 제한인 2TB보다 더 큰 16TB까지의 파일도 생성 가능하다. 위의 파일시스템 feature 중에서 'huge_file' 부분이 바로 2TB보다 더 큰 파일을 생성할 수 있음을 뜻한다. 또한 ext4에서는 32000의 서브디렉토리 제한을 넘어서 64000개까지 늘어났다. 이에 대한 것은 dir_nlink feature로 표시된다.


    3. ext3 -> ext4로 파일시스템 변경하기

    e4fsprogs 설치 후 tune2fs가 아닌 tune4fs 명령으로 ext3파일시스템을 ext4로 변경한다. tune4fs로 변경하기 전에 파티션은 unmount한다. /dev/sdb1 파티션을 예로 들어보자.

     
    # tune2fs -l /dev/sdb1 (변경 전)
    ... 생략 ...
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
    Filesystem state:         clean
    ... 생략 ...
    #
    # tune4fs -O extents,uninit_bg,dir_index /dev/sdb1 (파티션 ext4로 변경)
    tune4fs 1.41.1 (01-Sep-2008)

    Please run e4fsck on the filesystem.
    #
    # tune4fs -l /dev/sdb1 (변경 후, fsck 전)
    ... 생략 ...
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent sparse_super large_file uninit_bg
    Filesystem state:         not clean
    ... 생략 ...
     


    2TB~16TB의 파일크기를 생성하고 싶다면 tune4fs -O 옵션에 huge_file까지, 또 32000개의 서브디렉토리 제한을 넘어서려면 dir_nlink 까지 추가해주면 된다. fsck.ext4 또는 e4fsck 로 파일시스템을 검사한다.

     
    # fsck.ext4 -fpDC0 /dev/sdb1
    /data: Group descriptor 0 checksum is invalid.  FIXED.
    /data: Group descriptor 1 checksum is invalid.  FIXED.
    /data: Group descriptor 2 checksum is invalid.  FIXED.
    /data: Group descriptor 3 checksum is invalid.  FIXED.
    /data: Group descriptor 4 checksum is invalid.  FIXED.
    ... 생략 ...
    /data: Adding dirhash hint to filesystem.

    /data: 32/8895488 files (3.1% non-contiguous), 455254/8889961 blocks          
    #
    # tune4fs -l /dev/sdb1 (변경 후, fsck 후)
    ... 생략 ...
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent sparse_super large_file uninit_bg
    Filesystem flags:         signed_directory_hash
    Filesystem state:         clean
    ... 생략 ...
     



    4. ext4 파일시스템 마운트하기

    /etc/fstab에서 해당 파티션의 파일시스템 유형을 ext4로 변경한다. 그리고, mount하면 끝.

     
    # mount /data
    # mount
    /dev/sda7 on / type ext3 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    ... 생략 ...
    /dev/sdb1 on /data type ext4 (rw,nosuid)
     


    syslog통해서 로그는 다음과 같이 남는다.

     
    Oct 26 18:48:10 cnx1 kernel: kjournald2 starting: pid 2497, dev sdb1:8, commit interval 5 seconds
    Oct 26 18:48:10 cnx1 kernel: EXT4 FS on sdb1, internal journal on sdb1:8
    Oct 26 18:48:10 cnx1 kernel: EXT4-fs: delayed allocation enabled
    Oct 26 18:48:10 cnx1 kernel: EXT4-fs: file extents enabled
    Oct 26 18:48:10 cnx1 kernel: EXT4-fs: mballoc enabled
    Oct 26 18:48:10 cnx1 kernel: EXT4-fs: mounted filesystem sdb1 with ordered data mode
     


    ※ CentOS 5.3에서 기본커널을 사용하는 경우 /etc/fstab에 ext4dev로 적어야 한다. mount 결과에서도 ext4dev로 표시된다.


    5. mount할 때 에러 (CentOS 5.3에서 ext4 개발버전(ext4dev)일 경우)

    mount할 때 다음과 같은 경고 메시지가 나올 수 있다. ext4 정식버전이면 fsck 후에 mount하면 문제없을 것이다. 그러나 ext4dev 버전일 경우에는 tune4fs로 설정 변경이 필요하다.

     
    # mount  /data
    mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
           missing codepage or other error
           In some cases useful info is found in syslog - try
           dmesg | tail  or so
     


    syslog 에는 다음과 같은 로그가 남아있다.

     
    Aug 28 11:11:55 cnx1 kernel: EXT3-fs: sdb1: couldn't mount because of unsupported optional features (40).
     


    tune4fs 로 설정 변경 후 tune4fs -l 로 살펴보면, 파일시스템 flag의 변화가 있음을 알 수 있다. 이후 mount하면 문제없이 해결된다.

     
    # mount -t ext4dev /dev/sdb1 /data
    Aug 28 11:26:42 cnx1 kernel: EXT4-fs: sdb1: not marked OK to use with test code.
    # lsmod | grep ext4
    ext4dev               200029  0
    jbd2                   55513  1 ext4dev
    crc16                   6209  1 ext4dev
    # tune4fs -E test_fs /dev/sdb1
    tune4fs 1.41.1 (01-Sep-2008)
    Setting test filesystem flag
    # tune4fs -l /dev/sdb1
    ... 생략 ...
    Filesystem flags:         signed_directory_hash test_filesystem
    ... 생략 ...
     



    6. 참고자료

    * EXT 파일 시스템(ext1, ext2, ext3, ext4)
      http://serna.tistory.com/7
    * ext4
      http://en.wikipedia.org/wiki/Ext4
    * huge_file feature에 대한 글
      http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=509893

      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~