Arch-Linux
將 ext4 轉換為 btrfs 時出現“失去數據塊”
我在一個測試虛擬機上,我正在嘗試將第二個磁碟轉換為 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 有點溢出。
另見:
- https://github.com/kdave/btrfs-progs/commit/c9c4eb1f3fd343512d50b075b40bba656cbd02cb
- https://www.spinics.net/lists/linux-btrfs/msg103379.html
作為一種解決方法,您可以在轉換之前將文件系統調整為更小/更大的大小。
錯誤出現在 btrfs-progs 版本 5.7(預設在,例如 Ubuntu 20.10)中,並且也出現在其他大小上(這裡我有一個 457.26 GiB 驅動器)。升級到 btrfs-progs 的更高版本(例如,從 Ubuntu 21.04 升級到 5.10)解決了這個問題。
編輯:不建議將其作為生產解決方案(核心/btrfs-progs 版本不匹配),但它可以讓您擺脫棘手的情況。最好使用已經有新版本的恢復系統。