zfs rootインストールシステムのディスクを交換する必要があります。
以前は次のようでした(テスト目的でOSを再インストールする前、インストール後にやりたかった作業でもあります)。
zpool Attach rpool /dev/sda2 /dev/sdb を使用してミラーを作成する
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda2 ONLINE 0 0 0
sdb ONLINE 0 0 0
OSを再インストールしました。
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
sda2 ONLINE 0 0 0
sdb保存データ...
pool: rpool-12312656247996879599
id: 12312656247996879599
state: DEGRADED
status: One or more devices contains corrupted data.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
config:
rpool-12312656247996879599 DEGRADED
mirror-0 DEGRADED
sda2 FAULTED corrupted data
sdb ONLINE
OSの再インストール後にミラーを作成し、sdbのデータを現在のミラーに同期したいと思います。 OSを再インストールした後、それぞれ1つのrpoolと1つのsdbプールがありました。両方のプールでデータを送受信でき、sdbプールを破壊してrpoolに接続してミラーを作成できます。しかし、手動でファイルを同期(送信/受信)し、sdbを壊さずにプールからrpoolに接続する方法があるかどうか疑問に思いますか?
答え1
以前のプールからディスクを取り出してsda2
内容を消去し、新しいプール(新しいシステムを含む)をインストールしました。これは冗長vdev(ミラー)なので、デフォルトでは、それぞれ1つのディスクを持つ2つの異なるプールがあります(フォールトトレランスがないことを意味します)。まだ2つのオプションがあります。新しいオプションを使用するか、古いオプションを復元することです。
sda2
既存のプールを捨てて新しいインストール()を使用するには:このステップ:
- ディスクをフォーマット
sdb
し、ディスク上のすべてのデータを削除します。 - フォーマットされたディスクを新しいプールに接続します。
zpool attach rpool sda2 sdb
- 再同期が完了するまで待ってから確認してください。
zpool status rpool
- システムが両方のディスクから起動できるように、起動セクタデータをコピーします(GRUBを使用していると仮定)。
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/sdb
新しいプールを放棄して(ダウングレードされた)古いプール(sdb
)に戻る場合:
- システムをシャットダウンし、ディスクを物理的に取り外します。
sda2
- システムを起動すると、以前のプールが有効な起動可能なルートプールとして認識されます。 (上記の手順と同様に、以前にそのディスクにブートセクタを追加した場合にのみ機能します。そうしないと、ブートエラーが発生します。)
- ディスクを
sda2
システムに物理的に再接続してフォーマットします。 - ディスクを
sda2
古いプールに接続します。zpool attach rpool sdb sda2
Solaris / illumosシステムがある場合は、それを使用して現在の場所で(同じスナップショット内の他のスナップショットから)beadm
アップグレード、テスト、および復元を実行することもできます。rpool
これにより、一時的に冗長性を放棄せずに回復できます。