ext4をbtrfsに変換すると「データブロック損失」が発生する

ext4をbtrfsに変換すると「データブロック損失」が発生する

テスト仮想マシンで2番目のディスクを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

答え1

それは抜け穴

これでエラーが確認されたため、符号なし整数を掛けるとわずかなオーバーフローが発生します。

また見なさい:

回避策に変換する前に、ファイルシステムのサイズを小さく/大きくすることができます。

答え2

このバグはbtrfs-progsバージョン5.7(デフォルトではUbuntu 20.10)にあり、他のサイズでも表示されます(ここでは457.26 GiBドライブがあります)。より高いバージョンのbtrfs-progs(Ubuntu 21.04から5.10など)にアップグレードすると、問題が解決する可能性があります。

編集:本番ソリューション(カーネル/ btrfs-progsバージョンの不一致)では推奨されませんが、困難な状況から逸脱する可能性があります。すでに新しいバージョンの回復システムを使用するのが最善です。

関連情報