답변:
-O 64bit
옵션이 기본값이 되기 전에 작성된 파일 시스템의 크기를 조정하려고합니다 . ext 파일 시스템을 64 비트 주소로 업그레이드하여 훨씬 더 큰 (16TiB 대신 1024 PiB) 볼륨으로 확장 할 수 있습니다.
대상 장치가라고 가정하면 다음 /dev/mapper/target-device
과 같이해야합니다.
$ cat /proc/partitions
필요한 경우 확인 하고 재부팅하십시오.uname -r
64 비트 ext4 파일 시스템을 올바르게 처리 할 수있는 커널을 실행하고 있는지 확인 (확인 ) 하십시오 . 4.4.x
커널 이상 을 사용하려는 경우 (기본 Ubuntu 16 이상).최소 버전의 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 tune2fs
및 man 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.
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).