Arch-Linux

將 ext4 轉換為 btrfs 時出現“失去數據塊”

  • May 7, 2021

我在一個測試虛擬機上,我正在嘗試將第二個磁碟轉換為 btrfs。

轉換失敗並出現錯誤missing data block for bytenr 1048576(見下文)。

我找不到有關該錯誤的任何資訊。我能做些什麼來解決這個問題?

$ fsck -f /dev/sdb1
fsck from util-linux 2.35.2
e2fsck 1.45.6 (20-Mar-2020)
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/sdb1: 150510/4194304 files (0.5% non-contiguous), 2726652/16777216 blocks

$ btrfs-convert /dev/sdb1
create btrfs filesystem:
       blocksize: 4096
       nodesize:  16384
       features:  extref, skinny-metadata (default)
       checksum:  crc32c
creating ext2 image file
ERROR: missing data block for bytenr 1048576
ERROR: failed to create ext2_saved/image: -2
WARNING: an error occurred during conversion, filesystem is partially created but not finalized and not mountable

這是一個錯誤

現在我們已經確定了這個錯誤,乘以 unsigned int 有點溢出。

另見:

作為一種解決方法,您可以在轉換之前將文件系統調整為更小/更大的大小。

錯誤出現在 btrfs-progs 版本 5.7(預設在,例如 Ubuntu 20.10)中,並且也出現在其他大小上(這裡我有一個 457.26 GiB 驅動器)。升級到 btrfs-progs 的更高版本(例如,從 Ubuntu 21.04 升級到 5.10)解決了這個問題。

編輯:不建議將其作為生產解決方案(核心/btrfs-progs 版本不匹配),但它可以讓您擺脫棘手的情況。最好使用已經有新版本的恢復系統。

引用自:https://unix.stackexchange.com/questions/597580