私は、古典的なmdadm raidからzfsプールに切り替える過程にあり、回復しようとしているいくつかのつまずきを起こしました。
当初、私はRAID 1ミラーに2つの4TBドライブがありました。
次に、マシンに2つの新しい4TBドライブを挿入し、元のドライブを切断しました。ミラー内の新しいドライブを使用してzpoolを作成しましたが、/dev/sda
、および/dev/sdb
を使用しました。これは、使用しているガイドが指示したことであり、考えていなかったためです。
したがって、もちろん、古いドライブを再接続してデータをコピーするとき、/dev/sdb
および/dev/sdc
を使用して、2つのzfsドライブの1つを作成しました/dev/sdd
もちろんzfsプールを台無しにしてUNAVAIL
として表示しました
オンラインで誰かと作業した後、私はzpool export pool
でzpool import -d /dev/disk/by-uuid pool
によってzfsプールをUUIDモードにすることができました。
これにより、UNAVAIL
ドライブを切り離すことができ、それをきれいに拭いて、/dev/disk/by-id
を使用する最初のミラーとしてzfsに追加し直しました。数日後、正常に再同期しました。
現在、識別子として長整数を持つ1つのデバイスと、ata-WDC_WD...
の行に沿った文字列を持つ別のデバイスを持つzpoolがあります。それらをすべて同じページで取得したかったため、整数識別子を持つ最初のディスクを切り離し、/dev/disk/by-id
を使用して再度追加することを計画していました。ただし、デタッチしようとすると、エラーが発生します:cannot detach 13419994393693470939: only applicable to mirror and replacing vdevs
。
わかりました、それで私はそれを別のドライブと取り替えようとし、このエラーを得ました:cannot open '13419994393693470939': name must begin with a letter
プールが機能している間は、すべてが一貫した状態にあることを望みます。 I could古い2つのドライブを使用して新しいプールを作成し、データをコピーしてから、古いプールを破棄し、それらのドライブを新しいプールに追加します(これにより、プールの名前を変更して、その間にサービスが中断する場合があります)、しかし、これを回避する方法があると思います。
最初にディスクを再識別するために使用したプロセスを再実行するだけです。
zpool export pool
zpool import -d /dev/disk/by-id pool
これにより、ドライブがby-id
形式に統合されます。その形式にする場合は、代わりにby-uuid
を使用できます。
表示される2つのエラーは次のとおりです。
cannot detach
:ZFSはデータの有効なレプリカが他にないと考えているため、この切り離しは拒否されています。ミラー内のプールを正しく構成しましたか? CLIがエラーを誤って解釈し、無意味なエラーメッセージを表示している可能性もあります。たぶん、間違ってドライブの間違った名前でコマンドを実行しているだけかもしれません(次のポイントを参照)。cannot open
:提供した情報からはわかりませんが、UUIDだけでなくこのデバイスへのフルパスを提供する必要があると思われます。