btrfs は使用フィルターを使用して RAID 5 を 1 に変換できますか?

btrfs は使用フィルターを使用して RAID 5 を 1 に変換できますか?

btrfs はファイルシステムの部分的な変換をサポートしていますか?

私は現在この状態です:

btrfs fi df .
Data, RAID5: total=9.83TiB, used=7.68TiB
System, RAID1: total=32.00MiB, used=704.00KiB
Metadata, RAID1: total=12.00GiB, used=8.61GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

また、raid5 モードでバグが見つかったため、raid1 に移行したいと考えています。現時点で完全な変換を行わない理由はいくつかあります。ターゲット モードを raid1 に設定したいと考えています。新しいデータは raid1 に配置され、時間があれば完全な再バランス (またはソフト) をトリガーできます。

それで、このようなことは可能でしょうか?

btrfs balance start -dconvert=raid1 -dusage=10 .

答え1

まあ、誰も情報を持っていなかったので、私は単にそれを試して、その手順をここに記録しました。

btrfs balance start -dconvert=raid1 -dusage=10 .

このコマンドは、フィルタ (使用率 = 10%) に一致するチャンクを単純に変換しました。チャンクの圧縮 (通常のバランスのように) はなく、ターゲット RAID レベルを RAID5 から RAID1 に設定しませんでした。そのため、これはほとんど役に立たず、ほとんど空のデータと無駄な時間を含む大きなチャンクが作成されました。

次のアプローチは、制限フィルターとソフト パラメーターを使用して、段階的に変換を実行することでした。

btrfs balance start -dconvert=raid1 -dlimit=500,soft .

このように、ファイル システムは段階的に変換されました。

ノート:

  1. 変換前に「空のチャンク」のバランスを取ります。これにより時間が節約されます。
  2. このプロセス中、btrfs は常に新しいデータを古い raid プロファイルのチャンクに配置します。これを変更する方法は見つかりませんでした。したがって、新しいデータは常に raid5 チャンクに配置されるか、データを保持するために新しい raid5 チャンクが作成されます。ファイル システム全体が変換されると、この動作は当然なくなります。
  3. これはオンラインで完全に機能しました :)

関連情報