Edited at

resize2fsで16TBの壁を突破する

More than 3 years have passed since last update.


tl;dr

デバイス名は任意に置換して下さい。

## resize2fs >= 1.43

$ sudo e2fsck -f /dev/md1
$ sudo resize2fs -b /dev/md1
$ sudo e2fsck -f /dev/md1
$ sudo resize2fs /dev/md1


story

raidで実用量20TB上に、気付かずに16TBのext4のパーティションを作成して、データを突っ込んでしまったのが事の始まり。

パーティション作成時に、ext4の64bitフラグを明示的に有効にしてやらないと、16TBより大きいパーティションが作れない。

ググってみたが、あとから64bitの壁を超えることはできない旨の内容が出てくる。

しかし、その検索結果の中にE2fsprogsのMLがあった。

内容を読むと、tune2fsで、tune2fs -O 64bitをやろうとするユーザ向けのresize2fsを使う方法についての優しいメッセージを表示する機能を追加するものだった。= resize2fsを使えば、あとから64bitフラグを有効にできる!!

パッチの適用先などを追っていった所、まだリリースされてない物だったので、レポジトリから最新のソースを取得して冒険にでることになった。


how to

## e2fsprogsのビルド&インストール

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local
$ make
$ make check
$ sudo make install

## 64bitフラグの有効化
$ sudo tune2fs -O 64bit /dev/md1
tune2fs 1.43-WIP (18-May-2015)

Please run e2fsck on the filesystem.

After running e2fsck, please run `resize2fs -b /dev/md127' to enable 64-bit mode.
$ sudo e2fsck /dev/md1
e2fsck 1.43-WIP (18-May-2015)
/dev/md1: clean, 94181/536870912 files, 3476142818/4294967295 blocks

$ resize2fs -b /dev/md1
resize2fs 1.43-WIP (18-May-2015)
Please run 'e2fsck -f /dev/md1' first.

$ e2fsck -f /dev/md1
e2fsck 1.43-WIP (18-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md1: 94181/536870912 files (15.4% non-contiguous), 3476142818/4294967295 blocks

$ resize2fs -b /dev/md1
resize2fs 1.43-WIP (18-May-2015)
Converting the filesystem to 64-bit.
The filesystem on /dev/md127 is now 4294967295 (4k) blocks long.

## パーティションの拡張
$ e2fsck -f /dev/md1
e2fsck 1.43-WIP (18-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md127: 94181/536870912 files (15.4% non-contiguous), 3476168421/4294967295 blocks

$ resize2fs /dev/md1
resize2fs 1.43-WIP (18-May-2015)
Resizing the filesystem on /dev/md127 to 4883606400 (4k) blocks.
The filesystem on /dev/md127 is now 4883606400 (4k) blocks long.

やったー