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.
やったー