今日はbtrfs RAID1デバイスを交換する必要がありました。作業前のファイルシステムの状態は次のとおりです。
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 0 used 0 path MISSING
devid 2 size 5.46TiB used 2.17TiB path /dev/mapper/datadungeon
それから私は走ったbtrfs replace start -r 1 /dev/mapper/eternalepoch /mnt
。間違った部分を読んで-r
間違って配置しましたが、マニュアルページには問題ありません。作業を開始した直後のファイルシステムは次のとおりです。
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 3 FS bytes used 2.11TiB
devid 0 size 2.73TiB used 2.17TiB path /dev/mapper/eternalepoch
devid 1 size 0 used 0 path MISSING
devid 2 size 5.46TiB used 2.18TiB path /dev/mapper/datadungeon
以下は、作業が完了した後のファイルシステムです(私も作成しましたbtrfs filesystem resize 1:max /mnt
)。
$ btrfs filesystem show /mnt
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 5.46TiB used 2.17TiB path /dev/mapper/eternalepoch
devid 2 size 5.46TiB used 4.35TiB path /dev/mapper/datadungeon
私はdu -sch
マウントされたデバイス2のルートでこれを実行し-o degraded
(対応するドライブの結果を別にしたい)、予想通り2.17TBを得ました。それで、私の質問は、報告されたサイズがなぜ倍増し、どのように戻すことができるのかということです。 ?まるで自分自身を複製したのと同じです。バランス調整が機能していますか、それとも別のデバイスのサイズが倍になりますか?
答え1
だから時々確認した結果filesystem usage
(device usage
同様の情報を提供filesystem show
)2.17TBは実際には非常に小さいデータであることがわかりました。
$ btrfs filesystem usage /mnt
Overall:
Device size: 10.92TiB
Device allocated: 6.52TiB
Device unallocated: 4.39TiB
Device missing: 0.00B
Device slack: 0.00B
Used: 4.22TiB
Free (estimated): 4.45TiB (min: 3.72TiB)
Free (statfs, df): 1.17TiB
Data ratio: 1.50
Metadata ratio: 1.50
Global reserve: 512.00MiB (used: 0.00B)
Multiple profiles: yes (data, metadata, system)
Data,single: Size:2.17TiB, Used:256.00KiB (0.00%)
/dev/mapper/datadungeon 2.17TiB
Data,RAID1: Size:2.17TiB, Used:2.10TiB (97.22%)
/dev/mapper/eternalepoch 2.17TiB
/dev/mapper/datadungeon 2.17TiB
Metadata,single: Size:10.00GiB, Used:112.00KiB (0.00%)
/dev/mapper/datadungeon 10.00GiB
Metadata,RAID1: Size:10.00GiB, Used:3.05GiB (30.50%)
/dev/mapper/eternalepoch 10.00GiB
/dev/mapper/datadungeon 10.00GiB
System,single: Size:32.00MiB, Used:240.00KiB (0.73%)
/dev/mapper/datadungeon 32.00MiB
System,RAID1: Size:32.00MiB, Used:336.00KiB (1.03%)
/dev/mapper/eternalepoch 32.00MiB
/dev/mapper/datadungeon 32.00MiB
Unallocated:
/dev/mapper/eternalepoch 3.28TiB
/dev/mapper/datadungeon 1.11TiB
それで結局バランスをとることになりましたbtrfs balance start -dprofiles=single,convert=raid1,soft -mprofiles=single,convert=raid1,soft /mnt
(この場合はソフトとプロフィール=シングルが重複すると思います)。数分後、次のようになります。
btrfs filesystem show /data
Label: none uuid: b19e1a48-a25b-4f63-941d-c009949a5d51
Total devices 2 FS bytes used 2.11TiB
devid 1 size 5.46TiB used 4.35TiB path /dev/mapper/eternalepoch
devid 2 size 5.46TiB used 4.35TiB path /dev/mapper/datadungeon
しかし! 、ファイルシステムの使用量は実際には2.10TBです。
Data,RAID1: Size:4.33TiB, Used:2.10TiB (48.61%)
/dev/mapper/eternalepoch 4.33TiB
/dev/mapper/datadungeon 4.33TiB
used
したがって、交換コマンドを実行する前に、一部のデータが最初のディスクに書き込まれ、btrfsは何らかの理由ですぐに2.17TBを割り当てました。これは、btrfs出力の理解不足による問題ではありません。実際には使用されず、割り当てのみです。)