要約:長いストーリーのおかげで、デバイスと/dev/sde1
(ID 1と2)/dev/sde1
で構成されたBtrfs RAID1ファイルシステムが得られました。 Btrfs は rw をマウントせず、これはデバイスがないことを示します。他のデバイスを取り外すためにこれらのデバイスのどれが動作しているかを確認し、正しい2番目のドライブを追加するにはどうすればよいですか/dev/sdb1
?現在は読み取り専用でのみマウントできるため、ドライブの追加に失敗します。
Btrfsを使用するRAID1(ミラー)には2つの外付けハードドライブがあります。 Aドライブは問題ありませんでしたが、定期清掃中にBドライブで何百万ものエラーが発生しました。テスト中にデバイスBは大丈夫に見えたので、同期が合っていないようです(ホストはラップトップなので、バッテリーが停電しても生き残ることができますが、ドライブはそれができないので1台が来るようです)。他のものより先にオンラインで))。デバイスBからデバイスAの画像を書き換えたいです。
replace
検索を少し試してみると、サブコマンドを使用する必要があるようです。デバイスBをデバイスBに交換したいです。もちろん、btrfsを使ってこのコマンドを理解していることを確認しました。
btrfs replace start /dev/deviceB /dev/deviceB /mountpoint
残念ながら、これは機能しません。マニュアルページでは、「ライブファイルシステムから現在のソースデバイスに保存されているターゲットデバイスにデータのコピーを開始します。」そのため、そこからコピーできるので、利用可能な他のデバイスを渡しました。
btrfs replace start /dev/deviceA /dev/deviceB /mountpoint
後で「作業が完了すると、ソースデバイスがファイルシステムから削除されます」という内容があるため、マニュアルページをよく読んでください。これで、/dev/deviceB
そのデバイスのみを持つファイルシステムが作成されました。
ただし、元の(破損した)デバイスBは削除されませんでした。
今、このような状況が発生しました。
$ btrfs device usage /mountpoint
/dev/sde1, ID: 1
Device size: 3.64TiB
Device slack: 0.00B
Data,single: 1.00GiB
Data,RAID1: 2.00TiB
Data,DUP: 40.91GiB
Metadata,single: 1.00GiB
Metadata,RAID1: 5.00GiB
Metadata,DUP: 3.00GiB
System,single: 32.00MiB
System,RAID1: 32.00MiB
System,DUP: 128.00MiB
Unallocated: 1.59TiB
/dev/sde1, ID: 2
Device size: 3.64TiB
Device slack: 0.00B
Data,RAID1: 2.00TiB
Metadata,RAID1: 5.00GiB
System,RAID1: 32.00MiB
Unallocated: 1.63TiB
(/dev/sde1
デバイスBはどこにありますか?でマウントできます-o degraded,ro
。)
この状況をどのように解決できますか?
デバイスA()を追加しようとしましたが、sdb1
「エラー: '/dev/sdb1'デバイスの追加中にエラーが発生しました:読み取り専用ファイルシステム」というメッセージで失敗しました。どのデバイスIDがどれかわからないので、どのように進むべきかわかりません。したがって、それらの1つを削除すると(rwをマウントするために)災害になる可能性があります。それにもかかわらず、現在では端末を削除するのが最善の措置であるかどうかはわかりません。おそらく(どのデバイスIDであるかを調べた後)、replace
デバイスIDをパラメータとして使用する必要がありますか?
デバイスAのファイルシステムはBtrfsとして認識されなくなり、hexdumperでチェックするときに無効になっているようです。最初の部分の近く(0x10 000の直後のiirc)には、リテラル文字列BTRFSが含まれていましたが、もはや含まれていません。データはまだあるようです。ヘッダーは間違っているだけです(ゼロ以外の最初のデータは0x400 000にあります)。
ベストアンサー1
しばしば無視される警告から始めます(私もこれについて有罪です)...今データをバックアップしてください。もちろん、データをバックアップするのに十分な空き容量がある場合は、ファイルシステムを再作成できますか?これは芸術であり、正しく理解するのが難しいことに注意してください。これがirc.freenode.netのbtrfs IRCチャンネルにいる人と話すことをお勧めします。
最初に試したことは、デバイスAを復元することでした。これはbtrfs rescue super-recover /dev/deviceA
またはで行うことができますbtrfsck --repair /dev/deviceA
。これらのいずれかが成功した場合は、そのデバイスを消去してdeviceB
新しいデバイスとして追加できます(またはそれがdeviceA
破損していると思われる場合は交換してください)。
dm-snapshot
そうでなければ、この場合は、デバイスのスナップショットを最初に作成し、スナップショットを操作して状況が悪化しないようにするのが好きです。時々、btrfsコマンドの順序を正しく取得するには、数回の試みが必要です。スナップショットファイルを保存するには多くの空き容量が必要です(上記の基準で10〜100G程度になると思います)。
上記の出力を見るとdevid 1
。隣のパス)。 btrfsが読み取り専用でマウントされていないことを確認してください。それ以外の場合は、問題を解決するために書き込みを実行できません。それでも機能しない場合は、まずデバイスを使用して取り外してみてください。失敗した場合は、ブロックをwithに変換してからデバイスをもう一度削除してみてください。すべて成功したら、デバイスとして追加してすべてを再変換できます。さらに、これらの変換命令には時間がかかる可能性があるため、忍耐が必要です。devid 2
btrfs filesystem show
btrfs device delete missing /mountpoint
btrfs device remove 2 /mountpoint
RAID1
single
btrfs balance -mconvert=single -sconvert=single -dconvert=single /mountpoint
deviceA
RAID1