3つのドライブ(8TB、4TB、3TB)があります。最初は8TBドライブにbtrfsパーティションを作成し、そこにすべてのデータをコピーしました。 btrfsデバイスの追加を使用して4TBおよび3TBドライブを追加した後、バランス変換を実行しました。
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
これでバランスが完了しましたが、元のドライブの「シングル」モードと「DUP」モードでまだいくつかのデータが表示されます。これは次の出力ですbtrfs fi usage /mnt/btrfs
。
Overall:
Device size: 13.37TiB
Device allocated: 4.62TiB
Device unallocated: 8.75TiB
Device missing: 0.00B
Used: 4.60TiB
Free (estimated): 4.98TiB (min: 4.38TiB)
Data ratio: 1.76
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,single: Size:645.00GiB, Used:645.00GiB
/dev/mapper/8TB 645.00GiB
Data,RAID1: Size:1.98TiB, Used:1.98TiB
/dev/mapper/3TB 551.00GiB
/dev/mapper/4TB 1.44TiB
/dev/mapper/8TB 1.98TiB
Metadata,RAID1: Size:8.00GiB, Used:3.84GiB
/dev/mapper/4TB 8.00GiB
/dev/mapper/8TB 8.00GiB
Metadata,DUP: Size:7.00GiB, Used:6.41GiB
/dev/mapper/8TB 14.00GiB
System,DUP: Size:8.00MiB, Used:400.00KiB
/dev/mapper/8TB 16.00MiB
Unallocated:
/dev/mapper/3TB 2.19TiB
/dev/mapper/4TB 2.19TiB
/dev/mapper/Seagate_Archive_8TB-btrfs 4.37TiB
質問:
- データありますか?いいえ複数のディスクに保存されますか?つまり、ディスクに障害が発生するとデータが失われますか?それでは、どのようにしてこの遅い「シングル」ストレージデータをRAID1に強制的に配置できますか?
- 「シングル」と「DUP」のデータストアが不要で、すべてがRAIDに切り替えられたと仮定すると、それをクリアする方法はありますか?
編集:以下はいくつかのシステム情報です。
uname -a
Linux 4.8.0-0.bpo.2-amd64 #1 SMP Debian 4.8.11-1~bpo8+1 (2016-12-14) x86_64 GNU/Linux
btrfs --version
btrfs-progs v4.9
さらに、このコンピュータはバランス調整中に再起動し、再び動作したときにbtrfsボリュームをまったくマウントできませんでした(ただし中断されました)。さまざまなマウントパラメータ(skip-param、リカバリ)を試しましたが、効果があった唯一の方法は読み取り専用でマウントすることでした(を使用して-o ro
)。少しイライラして、最新のカーネルとbtrfsプログラムを含むAntergos Live USBで起動しましたが、問題なくインストールされました。自動的に開始されたバランシングタスクを一時停止してDebianで再起動しましたが、インストールがうまくいってバランシングを復元しました。
答え1
btrfs ircユーザーの助けを借りて質問(1)に答えることができました。再起動とインストールの試みの失敗とは関係がないようです(まだそれが何であるかわからない)。代わりに、「単一」として保存された645 GBのデータは、raid1変換の開始後にbtrfsボリュームに追加されたデータであるように見えます。したがって、btrfs fi usage
変換後にすべてのデータがraid1として保存されると仮定する前に、出力を確認することをお勧めします。また、「ソフト」フィルタを使用すると、ターゲットプロファイルに従って保存されていないデータのバランスを再調整できます。たとえば、次のように実行しました。
btrfs balance start --bg -mconvert=raid1,soft /mnt/btrfs
btrfs balance start --bg -dconvert=raid1,soft /mnt/btrfs
(btrfs ircフォーラムのユーザーが提案したように、最初にメタデータのバランシングを実行してからデータのバランシングを実行します。)これは、残りのデータをraid1に変換しています。
また、質問(2)に対する答えは、raid1ファイルシステムにいくつかの「単一」ブロックがあるかもしれませんが、その使用量はゼロでなければならないということです。これが発生した場合は、以下を実行してクリーンアップできます。
btrfs balance start -dusage=0 -musage=0 /mnt/btrfs
(望むよりbtrfs FAQ)