btrfsは、「エラー:ターゲットデバイスがソースデバイスよりも小さい」を置き換えます。

btrfsは、「エラー:ターゲットデバイスがソースデバイスよりも小さい」を置き換えます。

私が見る理由:

btrfs replace "ERROR: target device smaller than source device"

ソースデバイスファイルシステムを次の方法でターゲットデバイスより小さく縮小した場合:

btrfs filesystem resize <devid>:<small-size> /mountpoint

ベストアンサー1

ディスクを交換しようとしたときにこの問題が発生しました。少し小さいです。ソースドライブのファイルシステムのサイズを変更した後も、このエラーが発生します。ディスク全体を使用しているため、パーティションのサイズを変更できません。デバイスパスの代わりにソースドライブのデバイスを渡すのがトリックです。これにより、btrfs filesystem replaceデバイス自体のサイズではなく、ソースデバイスの実際のファイルシステムサイズを確認できるようになります。

私の初期状態:

# btrfs fi show /mnt/storage
Label: 'Storage'  uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    Total devices 5 FS bytes used 15.25TiB
    devid    1 size 7.28TiB used 3.84TiB path /dev/sdb
    devid    2 size 7.28TiB used 3.84TiB path /dev/sdc
    devid    3 size 7.28TiB used 3.84TiB path /dev/sdd
    devid    4 size 7.28TiB used 3.84TiB path /dev/sde
    devid    5 size 7.28TiB used 3.84TiB path /dev/sdf

/dev/sdfを/dev/sdgに置き換えたいです。

試み#1:

# btrfs replace start /dev/sdf /dev/sdg /mnt/storage
ERROR: target device smaller than source device (required 8001561124864 bytes)

/dev/sdf(devid 5) でファイルシステムのサイズを変更します。

# blockdev --getsize64 /dev/sdg 
8001546444800

# btrfs fi res 5:8001546444800 /mnt/storage
Resize '/mnt/storage' of '5:8001546444800'

試み#2:

# btrfs replace start /dev/sdf /dev/sdg /mnt/storage
ERROR: target device smaller than source device (required 8001561124864 bytes)

お金を守ってください。ソースがブロックデバイスとして指定されており、ターゲットreplaceに十分なスペースがあることを確認したときにのみブロックデバイスのサイズを表示した場合に発生します。しかし、ソースコードを詳しく見てみると、replaceソースデバイスが異なる方法で処理され、実際にファイルシステムから正しいサイズが取得されることがわかりました。

これは試み#3を引き起こします。

# btrfs replace start 5 /dev/sdg /mnt/storage

以前のサイジングと組み合わせたこの式を使用すると、交換操作を正常に開始できます。

おすすめ記事