すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:Ext4ファイルシステムのサイズを変更するときに発生するエラーを処理する方法?

最終更新日:Dec 11, 2024

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/vdb

resize2fs: /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

解決策

  1. パーティションを拡張します。

sudo growpart /dev/vdb 1

次のコマンド出力は、パーティションが拡張されていることを示します。

CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166
  1. ファイルシステムを拡張します。

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

解決策

  1. パーティションを拡張します。

sudo growpart /dev/vdb 1

次のコマンド出力は、パーティションが拡張されていることを示します。

CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166
  1. ファイルシステムを拡張します。

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ファイルシステムはオフラインで縮小できますが、オンラインでは縮小できません。

解決策

  1. デバイスがマウントされているか確認します。

mount | grep /dev/vdb
  1. ファイルシステムのマウントを解除します。

sudo umount /mnt/test
  1. resize2fsコマンドを実行して、ファイルシステムを拡張します。

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特権が必要です。ファイルシステムにエラーが含まれています。

解決策

  1. resize2fsコマンドをsudo権限で実行します。

sudo resize2fs /dev/vdb
  1. 問題が解決しない場合は、ファイルシステムのエラーを確認してください。

dmesg | grep "EXT4-fs"
  1. ファイルシステムにエラーがある場合は、ファイルシステムをアンマウントし、ファイルシステムチェック (fsck) を実行します。

sudo umount /mnt/test
sudo fsck -y /dev/vdb
  1. resize2fsコマンドを実行して、ファイルシステムをオフラインで拡張します。

sudo resize2fs /dev/vdb