16TB 제한을 초과하여 ext4 파티션의 크기를 어떻게 조정합니까?


26

64 비트 플래그없이 작성된 이전 ext4 파티션의 크기를 조정하려고 할 때 새 크기가 16TiB 이상이면 resize2fs 1.42가 실패합니다.

$ resize2fs -p /dev/mapper/target-device
resize2fs: New size too large to be expressed in 32 bits

파일을 외부 매체에 복사하고 싶지 않습니다. 데이터 손실 위험을 감수하고 싶지 않습니다. 볼륨 크기를 어떻게 안전하게 조정할 수 있습니까?

답변:


46

-O 64bit옵션이 기본값이 되기 전에 작성된 파일 시스템의 크기를 조정하려고합니다 . ext 파일 시스템을 64 비트 주소로 업그레이드하여 훨씬 더 큰 (16TiB 대신 1024 PiB) 볼륨으로 확장 할 수 있습니다.

대상 장치가라고 가정하면 다음 /dev/mapper/target-device과 같이해야합니다.

전제 조건

  1. 이 볼륨 크기는 RAID에 의해 백업 되어야합니다 . 그렇지 않으면 정기적 인 디스크 오류 발생할 수 있습니다.
  2. 여전히 RAID는 백업이 아닙니다 . 당신은 해야한다 귀중품뿐만 아니라 다른 곳에 저장합니다.
  3. 먼저 모든 주변 볼륨 (파티션 테이블, 암호화, lvm)의 크기를 조정하고 확인하십시오.
  4. 하드웨어 RAID 구성을 변경 한 후, 리눅스는 새로운 최대 크기를 즉시 인식하거나 인식하지 못할 수 있습니다. $ cat /proc/partitions필요한 경우 확인 하고 재부팅하십시오.

최근 안정적인 커널 및 e2fsprogs 사용

  1. uname -r64 비트 ext4 파일 시스템을 올바르게 처리 할 수있는 커널을 실행하고 있는지 확인 (확인 ) 하십시오 . 4.4.x커널 이상 을 사용하려는 경우 (기본 Ubuntu 16 이상).
  2. 최소 버전의 e2fsprogs 확보 1.43

    • Ubuntu 16.04(2016-04-21)은 e2fsprogs 1.42.12(2014-08-25) 와 함께 출시되었습니다
    • e2fsprogs 1.43 (2016-05-17)은 extfs 주소 크기를 업그레이드 할 수있는 첫 번째 릴리스입니다.
    • Ubuntu 18.04(2018-04-26) e2fsprogs 1.44.x(good!) 와 함께 제공

켜져 16.04있고 최신 Ubuntu 릴리스로 업그레이드 할 수없는 경우 소스 패키지 지원활성화 하고 최신 버전을 수동으로 설치해야합니다.

$ resize2fs
# if this  prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps

크기 조정

1 단계 : 파일 시스템을 올바르게 마운트 해제

$ sudo umount /dev/mapper/target-device

2 단계 : 파일 시스템 오류 확인

$ sudo e2fsck -fn /dev/mapper/target-device

3 단계 : 파일 시스템에서 64 비트 지원 활성화

문의 man tune2fsman resize2fs-일부 파일 시스템 플래그를 변경할 수 있습니다.

$ sudo resize2fs -b /dev/mapper/target-device

일반적인 HDD RAID에서는 4 분의 높은 IO 및 CPU로드가 필요합니다.

4 단계 : 파일 시스템 크기 조정

$ sudo resize2fs -p /dev/mapper/target-device

명령 행에서 크기를 전달하지 않으면 resize2fs 는 "사용 가능한 모든 공간으로 증가"라고 가정합니다. 이는 일반적으로 원하는 것입니다. -p플래그는 진행률 표시 줄을 활성화 -하지만 사람들은 일부 초기 단계 이후에 표시됩니다.

일반적인 HDD RAID에서는 4 분의 높은 IO 및 CPU로드가 필요합니다.

다시 확인

파일 시스템을 다시 확인하십시오

$ sudo e2fsck -fn /dev/mapper/target-device

최신 버전의 e2fsck는 이전 버전에서 잘못 처리 한 타임 스탬프 또는 범위 트리를 수정하도록 제안 할 수 있습니다. 이는 심각한 문제를 나타내는 것이 아니므로 지금 또는 나중에 문제를 해결하도록 선택할 수 있습니다.

오류가 발생하면, 않습니다 하지 당황 할 수 없습니다 볼륨에 쓰기를 시도; 추가 작업으로 인해 데이터가 손상 될 수 있으므로 파일 시스템에 대한 광범위한 지식을 가진 사람에게 문의하십시오!

오류가 발생하지 않으면 장치를 다시 마운트하십시오.

$ sudo mount /dev/mapper/target-device

성공!

업그레이드 된 파일 시스템의 지속적인 작동을 위해 우분투가 아닌 e2fsprogs 버전이 필요하지 않습니다. 커널은 현재 꽤 오랫동안 지원합니다. 업그레이드를 시작하기 만하면됩니다.


참고로 부적절한 옵션으로 거대한 장치를 만들라는 메시지가 표시되면 mke2fs가 인쇄하는 비슷한 오류 메시지가 있습니다.

$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.

1
맞습니다. Redhat (RHEL, Centos 등)이 16TB 이상의 파일 시스템을 파티션 할 때 설치 프로그램에서 Ext4보다 XFS를 선호하고 이제는 기본 파일 시스템으로 XFS를 선호한다고 덧붙였습니다.
Diablo-D3

예. RedHat World에서 여전히 중요한 대부분의 이전 커널에는 아직 64 비트 ext4를 안정적으로 지원하지 않습니다. Afaik Ubuntu는 많은 리눅스 전문가들이 말한 것과 함께 진행됩니다 .ext4는 btrfs로 대체되어야합니다 .ext4는 현재 btrfs에 가깝지만 btrfs는 디자인이 더 우아하고 버그가 적습니다.
anx

2
btrfs는 프로덕션 환경에 준비되지 않았으며, 오라클은이를 백 버너에 개발했기 때문에 생산 준비가되지 않았을 수도 있습니다. 필자의 개인적인 의견은 그 수준의 파일 시스템 복잡성이 필요한 경우 실제 데이터 스토리지 요구에 ZFS를 사용하여 작은 8GB XFS 루트를 사용하는 것입니다.
Diablo-D3

0

16.04 Ubuntu와 함께 초기 설치 후 업데이트 된 Ubuntu 18.04에서 최근에 나에게 일어났습니다 ... 스토리지 배열 (/ dev / sdb)은 처음에 2 개의 14TB 파티션으로 분할되었으므로 확대하고 싶습니다. 문제가 발생한 28TB의 첫 번째 파티션.

최신 버전 인 resize2fs의 새 버전을 다운로드 할 필요가 없었습니다.

# resize2fs 
resize2fs 1.44.1 (24-Mar-2018)

유일한 문제는 32 비트로 포맷 된 64 비트 파티션 1을 변환하는 것이 었습니다 ... 독자가 tune2fs의 설명서를 참조하도록 권유하는 대신 (Anx가 제안한대로) 실제 예제를 제안합니다!

# tune2fs -O 64bit /dev/sdb1
tune2fs 1.44.1 (24-Mar-2018)
Please run "resize2fs -b /dev/sdb1" to enable 64-bit mode.

# resize2fs -b /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Convert the file system to 64 bits.
The file system on /dev/sdb1 now has a size of 3662109119 blocks (4k).

마지막으로 디스크 파티션을 확대합니다!

# resize2fs /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Resizing the file system on /dev/sdb1 to 7324303099 (4k) blocks.
The file system on / dev / sdb1 now has a size of 7324303099 blocks (4k).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.