Btrfs:未使用のRAID1に新しいデバイスが追加されました。

Btrfs:未使用のRAID1に新しいデバイスが追加されました。

質問

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

オンラインでも同様の質問があります

一般化する

明らかに私が何か間違っていることは間違いありませんが、これまで数時間インターネット検索と実験を行った結果、「正しく行われており、「作業しなければならない」」以外は何も出ていませんでした。

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 ファイルシステムの表示

おすすめ記事