質問
RAID1アレイに新しいドライブを追加しましたが、そのドライブはアレイの一部としてリストされていますが、新しいデータは書き込まれませんでした(最大のドライブで空になっていますが)。また、sudo btrfs fi usage
配列の一部として表示されますが、Data,RAID1
「nor」Metadata,RAID1
セクションには表示されません(下記の出力を参照)。
私が見つけることができるすべてのガイドは、既存のRAID1アレイに新しいデバイスを正しく追加したことを示していましたが、これは本当ではありませんでした。
全奏曲
RAIDに精通しているが必ずしもBtrfsを実装していない人は、RAID1が奇数のディスクでは実行できないと思うかもしれません。しかし、Btrfsは実際には伝統的な「RAID1」ではなく他のものです。これは間違いなく柔軟性があり、サイズが1より大きいディスクを必要に応じて使用でき、各ブロックが2つの異なるディスク(通常は空き領域が最も多いディスクから始まる)に書き込まれることを保証します(おそらく)。奇数のディスク使用を明示的にサポートします。こここれに関する質問の例です。
スピード
まず、最近バランスのとれた4ディスクBtrfs RAID1アレイとして機能し始めました。 (1x4tb、2x8tb、および1x10tbドライブを使用)4つのディスクはすべて、データとメタデータRAID1アレイの一部です(以下の出力を参照)。
その後、次のように新しい10TBディスクを追加しました。
sudo btrfs device add -f /dev/sdj /mnt/btrfs/ba07
sudo btrfs balance start /mnt/btrfs/ba07 ### As later noted, I also ran this with RAID1 conversion filters.
その後の出力はsudo btrfs fi usage /mnt/btrfs/ba07
実際には配列の一部ではないように見えます。
Overall:
Device size: 36.38TiB
Device allocated: 17.19TiB
Device unallocated: 19.19TiB
Device missing: 0.00B
Used: 16.73TiB
Free (estimated): 9.82TiB (min: 9.82TiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 96.53MiB)
Data,RAID1: Size:8.58TiB, Used:8.35TiB
/dev/sdf 5.68TiB
/dev/sdg 5.53TiB
/dev/sdh 3.57TiB
/dev/sdi 2.38TiB
Metadata,RAID1: Size:18.00GiB, Used:14.21GiB
/dev/sdf 8.00GiB
/dev/sdg 17.00GiB
/dev/sdh 4.00GiB
/dev/sdi 7.00GiB
System,RAID1: Size:32.00MiB, Used:1.47MiB
/dev/sdh 32.00MiB
/dev/sdj 32.00MiB
Unallocated:
/dev/sdf 1.59TiB
/dev/sdg 1.73TiB
/dev/sdh 5.52TiB
/dev/sdi 1.26TiB
/dev/sdj 9.09TiB
エントリには新しいディスクは含まれData,RAID1
ません。Metadata,RAID1
/dev/sdj
トラブルシューティング手順
暗闇の中で撮影しながら、次のことを試しました。
sudo btrfs filesystem resize max /mnt/btrfs/ba07
そして
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/btrfs/ba07
結果は同じで、ディスクはData,RAID1
下にリストされませんMetadata,RAID1
。
最近、私はEarthMindの以下のコメントのヒントを次のように組み合わせて試しました。これおすすめ:
btrfs device delete /dev/sdj /mnt/btrfs/ba07 #Succeeded
btrfs device add /dev/sdj /mnt/btrfs/ba07 #Succeeded
btrfs balance start -mconvert=raid1,soft /mnt/btrfs/ba07 #Tip said to do these balances separately, metadata first
btrfs balance start -dconvert=raid1,soft /mnt/btrfs/ba07
すべてのステップはすぐに完了し、バックグラウンドで操作は実行されません。これはおそらくバランス変更を何度も実行し、削除する前に移動するデータがsdjにないためです。
sudo btrfs fi usage
同じ内容が表示されます。 / dev / sdjは、データまたはメタデータRAID1の一部ではありません。
狂気は一般的に同じことを繰り返しながら別の結果を期待するものと定義されるので、現在次のようにしています。
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/btrfs/ba07
理由が何であれ、それ本当に何かしているようです。 (しかし、以前は同じコマンドを複数回試しましたが、単独で実行した場合はそうではありません)。完了するまでに数時間、数日かかることがあるので、勝利を宣言するには早すぎます。特に出力のこの部分はbtrfs fi usage /mnt/btrfs/ba07
有望に見えます。
Data,RAID1: Size:8.40TiB, Used:8.36TiB
/dev/sdf 5.56TiB
/dev/sdg 5.45TiB
/dev/sdh 3.47TiB
/dev/sdi 2.31TiB
/dev/sdj 19.00GiB
最後の行/dev/sdjが増えています。
追加情報
システムメッセージ:
$ btrfs --version
btrfs-progs v4.15.1
$ uname -r
4.15.0-54-generic
$ lsb_release -d
Description: Ubuntu 18.04.2 LTS
オンラインでも同様の質問があります
- btrfs raid1はすべてのディスクを使用しませんか?
- 期待通りに行われます。既存のドライブには空き容量が多いため、新しいディスクの前に書き込まれます。私の状況は正反対でした。新しいドライブにはより多くの空き容量がありました。
- Btrfs は RAID1 に小さなドライブを追加します。
- ディスクに障害が発生した場合、ユーザーはまったく異なるアプローチを取る必要があります。
- btrfsがメタデータをRAID1に変換することを拒否する理由
- これは、特定のBtrfsバージョン(4.0)の回帰が原因で発生します。しかし、4.4と4.15の両方でこれらの手順を試しました。
- BTRFS残高は完了しましたが、まだ「シングル」モードで保存されているデータが表示されます。
-mconvert=raid1,soft
フィルタを変換する前に、「soft」パラメータを追加して個別に実行することをお勧めします-dconvert=raid1,soft
。このソリューションは私の問題を解決できませんでした。
一般化する
明らかに私が何か間違っていることは間違いありませんが、これまで数時間インターネット検索と実験を行った結果、「正しく行われており、「作業しなければならない」」以外は何も出ていませんでした。
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/btrfs/ba07
アレイからディスクを取り出して再度追加した後、同じコマンドを使用した3回目または4回目の試みにもかかわらず一時的に動作するように見えました。完了したら、数時間または数日後に回答として追加します。
#Repeat the third command below a few times if the whole thing doesn't work the first time.
#Note, don't specify "soft" parameter.
#If it's still not working, try the whole 3-line series of commands below multiple times.
#Because, software.
btrfs device delete /dev/sdj /mnt/btrfs/ba07
btrfs device add /dev/sdj /mnt/btrfs/ba07
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/btrfs/ba07
ベストアンサー1
私も同じ問題を見つけました。私の最初のRAID 1ペアは(2)12TBドライブでした。より多くのドライブ(2)8 TBを追加すると、新しいドライブが8 TBベースではない理由がわかりません。/path を使用した btrfs ファイルシステム。もっと調べてみると、btrfsが空き容量が最も多くのドライブに追加するアルゴリズムを使用していることがわかりました。したがって、12TB ペアが 4TB をすべて使用するまで、8TB ペアは使用されません。
私のテストによるとbtrfs デバイスの追加 /dev /pathコマンドであり、実行する必要はありません。BTRFS 残高btrfs RAID 1 を動作させるコマンドです。
RAID 1 btrfs ファイルシステムの今後の反復では、絶対的な空き領域ではなくパーセントの空き領域アルゴリズムを使用することを願っています。 SSDディスクをウェアレベリングに使用する場合、これは重要になります。
これで絆創膏を思い出しました。各ディスクのファイルシステムサイズをプール内の最小ディスクサイズに設定してディスクプールを起動しました。これにより、RAID 1はプール内のすべてのディスクを同じように使用します。プールがいっぱいになると、残りのディスクが同じように使用されるように、残りのディスクのサイズを次に最小のディスク容量に調整します。これはまた、データがより分散しているため、ディスク障害が発生した場合の再構築時間を短縮するのに役立ちます。
ディスクのパーティション全体をmkfs.btrfsしてから、次のようにしてプール内の各ドライブの空き容量を設定できます。btrfs ファイルシステムのサイズ変更 {devid}:{size} /path したがって、最小のディスクが4TBの場合btrfs ファイルシステムのサイズ変更{1..4}:4T /path。ディスクデバイスの検索btrfs ファイルシステムの表示。