web-dev-qa-db-ja.com

FreeBSD ZFS2ディスクのミラーリングされていないプールをミラーリングされたものに変換する

storageと呼ばれるストレージプールがあり、その中に2つのディスクがあります。もともと、2番目のディスクをミラーとして追加したかったのですが、ZFSの初心者がzpool add storage <device>の代わりにzpool attach storage <device>を使用するという間違いを犯しました。

ZFSが冗長ドライブがないことについて文句を言うため、プールから2番目のデバイスをremoveまたはdetachしようとするたびに失敗します。それを読んだ後、私は問題とこれがなぜであるかを理解します。ただし、ドライブを取り外して再接続する方法、またはプール全体をストライプではなくミラーリングに変換する方法を見つけることができませんでした。私はまた、それを行う簡単な方法がないように思われるという事実にも少し戸惑っています。

プールを破壊して再作成するというこの不足を達成する方法はありますか?別の4TBドライブを購入して、そのすべてのデータをコピーする必要はありません。

7
herrbischoff

残念ながら、この時点では、基本的に2つの適切なオプションがあります。

  • 目的の構成でプールを破棄して再作成してから、データを 復元コピー から復元します。
  • さらに2台のドライブ(既存の各ドライブと同じ最小サイズ)を取得し、プールを2つの単一ディスクではなく2つのミラーリングされたペアに拡張します

後者はインプレースで実行でき、追加のストレージスペースを提供するというボーナスがありますが、ハードウェアを追加購入する必要があります(質問でやりたくないと言った)。前者はインプレースで実行することはできませんが、復元戦略をテストする良い機会を提供します(do復元戦略 を持っていると思います) ?)。

ご存知のとおり、ZFSプール内のJBODコンポーネントを削除することはできません。新しいドライブをaddingするのではなくattachingすることで、JBODを作成しました。複数のディスクがある状況。

プールの拡張をdoする場合は、2つのミラーリングされたペアではなくraidz2に拡張することを強く検討することをお勧めします。 (基本的に)同じ使用可能なストレージ容量が得られますが、ペアごとに1つだけではなく、任意の2つのドライブの障害に耐える能力があります。 2つのスパースファイルを使用してraidz2vdevを作成し、それらのファイルを削除してから、データを移行するドライブに置き換えることができます。現在の2ディスクJBODから4ディスクRAIDZ2に移行するには、ディスクを2つ追加するだけです。

3
a CVn

残念ながら、プールを破棄して再作成することが唯一の選択肢です。

この特定の単一ドライブを抽出するだけの場合(他のすべてのドライブよりもパフォーマンスが低い場合など)、ミラードライブをvdevに接続してから、古いドライブをvdevから切り離して、「抽出」することができます。プールをそのままにしてドライブします(もちろん、ミラー時間を差し引いた時間)。しかし、あなたの場合、これはあまり役に立ちません。

したがって、とにかく完全なプールデータを保持するより大きなドライブを購入することをお勧めします。そうしないと、バックアップがありません。 ZFSは、広く利用可能な最も安全なファイルシステムかもしれませんが、エラーがないわけではありません。コントローラーの停止、両方のドライブの同時死亡、電源の誤動作、管理者のミス、不正な攻撃者、または単にZFSまたはホストシステムのバグはすべて、バックアップなしで部分的または完全なデータ損失につながる可能性があります。 RAIDはバックアップではなく、ZFSでもありません。

ZFS send/recvを使用してすべてのデータを送信できるため、投資額と送信時間は別として、非常に簡単であることに注意してください。

0
user121391