Ext4は、広く使用されているファイルシステムです。 Ext4ファイルシステムをオンラインで拡張し、ストレージ要件に基づいてExt4ファイルシステムをオフラインで拡張または縮小できます。 ただし、Ext4ファイルシステムを拡張するとエラーが発生することがあります。 このトピックでは、エラーを特定して処理し、Ext4ファイルシステムを確実に拡張できるようにする方法について説明します。 この例では、/dev/vdbディスクが使用されています。
resize2fs: スーパーブロックの悪いマジックナンバー /dev/vdb
問題の説明
次のresize2fsコマンドを実行します。
sudo resize2fs /dev/vdb次のエラーメッセージが表示されます。
resize2fs: Bad magic number in super-block while trying to open /dev/vdb
Couldn't find valid filesystem superblock.原因
拡張するデバイス (/dev/vdbなど) は、Ext4にフォーマットされていません。
解決策
デバイスのファイルシステムを確認します。 デバイス上のファイルシステムがExt4ファイルシステムであることを確認します。
lsblk -- fs /dev/vdbresize2fs: /dev/vdbを開くときにデバイスまたはリソースがビジー
問題の説明
次のresize2fsコマンドを実行します。
sudo resize2fs /dev/vdb次のエラーメッセージが表示されます。
resize2fs: Device or resource busy while trying to open /dev/vdb
Couldn't find valid filesystem superblock.原因
ほとんどの場合、拡張するファイルシステムがパーティション上にあるため、上記の問題が発生します。 たとえば、ディスク名 /dev/vdbを引数としてresize2fsコマンドを実行したが、ファイルシステムが実際には /dev/vdb1パーティションにある場合、前述のエラーメッセージが表示されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 50G 0 part解決策
パーティションを拡張します。
sudo growpart /dev/vdb 1次のコマンド出力は、パーティションが拡張されていることを示します。
CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166ファイルシステムを拡張します。
sudo resize2fs /dev/vdb1次のコマンド出力は、ファイルシステムが拡張されていることを示します。
resize2fs 1.46.0 (29-Jan-2020)
Filesystem at /dev/vdb1 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vdb1 is now 26214139 (4k) blocks long.ファイルシステムは既に13106944 (4k) ブロック長である。 何もしない!
問題の説明
次のresize2fsコマンドを実行します。
sudo resize2fs /dev/vdb1次のエラーメッセージが表示されます。
The filesystem is already 13106944 (4k) blocks long. Nothing to do!原因
ほとんどの場合、拡張するファイルシステムがパーティション上にあるため、上記の問題が発生します。 たとえば、パーティション名 /dev/vdb1を引数としてresize2fsコマンドを実行すると、前述のエラーメッセージが表示されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 50G 0 part解決策
パーティションを拡張します。
sudo growpart /dev/vdb 1次のコマンド出力は、パーティションが拡張されていることを示します。
CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166ファイルシステムを拡張します。
sudo resize2fs /dev/vdb1次のコマンド出力は、ファイルシステムが拡張されていることを示します。
resize2fs 1.46.0 (29-Jan-2020)
Filesystem at /dev/vdb1 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vdb1 is now 26214139 (4k) blocks long.resize2fs: オンラインシュリンクはサポートされていません
問題の説明
次のresize2fsコマンドを実行します。
sudo resize2fs /dev/vdb次のエラーメッセージが表示されます。
Filesystem at /dev/vdb is mounted on /mnt/test; on-line resizing required
resize2fs: On-line shrinking not supported原因
Ext4ファイルシステムはオフラインで縮小できますが、オンラインでは縮小できません。
解決策
デバイスがマウントされているか確認します。
mount | grep /dev/vdbファイルシステムのマウントを解除します。
sudo umount /mnt/testresize2fsコマンドを実行して、ファイルシステムを拡張します。
sudo resize2fs /dev/vdb 50G次のコマンド出力は、ファイルシステムが縮小されていることを示します。
Resizing the filesystem on /dev/vdb to 13107200 (4k) blocks.
The filesystem on /dev/vdb is now 13107200 (4k) blocks long.resize2fs: ファイルシステムのサイズ変更を拒否された権限
問題の説明
次のresize2fsコマンドを実行します。
resize2fs /dev/vdb次のエラーメッセージが表示されます。
resize2fs: Permission denied to resize filesystem原因
resize2fs操作を実行するには、CAP_SYS_RESOURCE特権が必要です。ファイルシステムにエラーが含まれています。
解決策
resize2fsコマンドを
sudo権限で実行します。
sudo resize2fs /dev/vdb問題が解決しない場合は、ファイルシステムのエラーを確認してください。
dmesg | grep "EXT4-fs"ファイルシステムにエラーがある場合は、ファイルシステムをアンマウントし、ファイルシステムチェック (
fsck) を実行します。
sudo umount /mnt/test
sudo fsck -y /dev/vdbresize2fsコマンドを実行して、ファイルシステムをオフラインで拡張します。
sudo resize2fs /dev/vdb