全部產品
Search
文件中心

Alibaba Cloud Linux:Ext4 resize常見錯誤處理

更新時間:Aug 01, 2024

Ext4是一種廣泛使用的檔案系統,它支援線上和離線擴容,以及離線縮容以適應儲存需求的變化。然而,在擴充Ext4檔案系統的過程中,使用者可能會遇到一些常見的錯誤和問題。本文將以磁碟/dev/vdb為例介紹如何識別和處理這些錯誤,以確保檔案系統的擴容操作順利進行。

resize2fs: Bad magic number in super-block while trying to open /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: Device or resource busy while trying to open /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.

The filesystem is already 13106944 (4k) blocks long. Nothing to do!

問題現象

執行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: On-line shrinking not supported

問題現象

執行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: Permission denied to resize filesystem

問題現象

執行resize2fs命令。

 resize2fs /dev/vdb

返回如下錯誤:

resize2fs: Permission denied to resize filesystem

問題原因

該錯誤一般表示執行resize2fs操作需要CAP_SYS_RESOURCE許可權,或者檔案系統存在錯誤。

解決方案

  1. 使用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