ssig33.com

ext4 を 16TB より大きくする

結論: 表題のことは諦めろ

ext3 で作成されたパーティションの最大サイズは 16TB とか 32TB とかであることがよく知られています。 ext4 であればこれが 1EiB まで増えると喧伝されています。

実務上 16TB を越えるパーティションを作成することなどまず無いと思いますが、僕のサーバーはもはやこのような惨状であり

惨状

とりあえずパーティションを 21TB まで拡大したくなった。 LVM を使ってればまあこんなこともあるわけです。 1EiB までいけるんだから 21TB なんて余裕だろう。

というわけで resize2fs を何も考えずに使ってみますがなんと resize2fs は 16TB までしかリサイズできません。糞野郎。

e2fsprogs 1.42.6 以上であれば 16TB を越えるパーティションを扱えるらしいので、最新の e2fsprogs を自分でビルドしましょう。

最新の resize2fs を使うとなお 16TB を越えるパーティションを作成できません。 32bit 環境じゃそんなデカいパーティション作れないよデブみたいなことを言われます。

これはパーティションのオプションに 64bit というオプションが有効になっていないと駄目ということらしく、 e2fsprogs は 16TB 以下のパーティションを作るときは気を遣ってこのオプションを無効にします。

パーティションのオプションをいじるコマンドとして tune2fs というコマンドがありますがこれで tune2fs -O 64bit /dev/fuckspace/fuckvolume などとしても無駄です。 64bit オプションはあとからいじれません。既に作られたパーティションをいじるという場合はここで諦めるしかないです。

ですが追加されたディスク領域が既存のデータを全部ぶっこめるくらい大きいという場合は mke2fs コマンドで新しくパーティションを作りそこに古いの全部いれて古いの消して〜みたいな手法が使えます。この時 -O 64bit というオプションを使えば 64bit オプションが有効になります。

さて満を持してリサイズをしようとするとこんどは

Not enough reserved gdt blocks for resizing

と怒られます。よう分かりませんが検索してみるとカーネル 3.7 以上じゃないと 16TB よりデカいパーティションへリサイズできないという話っぽいです。

カーネルビルドしたら起動に失敗したというのが現在のステータスなのでここから先のことは分かりませんがここまで意味わからん問題が続くとカーネル上げた先にはそれはそれでトラブルがありそうな気がします。

とりあえず 16TB より大きい ext4 なパーティションを作るのは諦めたほうがよい感じがします、、、

back to index of texts


Site Search

Update History of this content