回答:
-O 64bit
オプションがデフォルトになる前に作成されたファイルシステムのサイズを変更しようとしています。extファイルシステムを64ビットアドレスにアップグレードして、大幅に大きい(16 TiBではなく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の非Ubuntuバージョンは必要ありません-カーネルは現在、かなり長い間それらをサポートしています。アップグレードの開始のみが必要でした。
参考のために、不適切なオプションを使用して巨大なデバイスを作成するように求められた場合、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.
最近、Ubuntu 18.04が16.04 Ubuntuで最初にインストールされた後に更新されたため、ストレージアレイ(/ dev / sdb)が最初に2つの14 TBパーティションに分割されていました。問題が発生した28 TBの最初のパーティション。
resize2fsの新しいバージョンをダウンロードする必要はありませんでした。それは非常に新しいからです。
# resize2fs
resize2fs 1.44.1 (24-Mar-2018)
唯一の問題は、32ビットでフォーマットされた64ビットパーティション1を変換することでした...読者にtune2fsのドキュメントを参照するように依頼する代わりに(Axが示唆するように)、実際の例を提案します!
# 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).