zpool replace コマンドを使用して、ストレージプール内のデバイスを置き換えることができます。
冗長プール内の同じ場所にある別のデバイスでデバイスを物理的に置き換える場合は、置き換えられるデバイスを特定するだけで済むことがあります。一部のハードウェアでは、デバイスは同じ場所にある別のディスクであるということが ZFS によって認識されます。たとえば、障害の発生したディスク (c1t1d0) を置き換える場合、そのディスクを取り除き、同じ場所でそれを置き換えるには、次の構文を使用します。
# zpool replace tank c1t1d0
ストレージプール内のデバイスを、物理的に異なる場所にあるディスクに置き換えようとしている場合は、両方のデバイスを指定する必要があります。例:
# zpool replace tank c1t1d0 c1t2d0
ZFS ルートプール内のディスクを交換する場合は、ZFS ルートプールのディスクを交換する方法 (SPARC または x86/VTOC)を参照してください。
ディスクを置き換えるための基本的な手順は次のとおりです。
必要に応じて、zpool offline コマンドでディスクをオフラインにします。
置き換えるディスクを取り外します。
交換用ディスクを挿入します。
format の出力を確認して、交換用ディスクが認識できるかどうかを判断します。
さらに、デバイス ID が変更されているかどうかも確認します。交換用ディスクに WWN が含まれている場合、障害のあるディスクのデバイス ID は変更されます。
ディスクが交換されたことを ZFS に知らせます。例:
# zpool replace tank c1t1d0
上記に示したように、交換用ディスクに異なるデバイス ID が含まれている場合は、新しいデバイス ID を追加します。
# zpool replace tank c0t5000C500335FC3E7d0 c0t5000C500335BA8C3d0
必要に応じて、zpool online コマンドでディスクをオンラインに戻します。
デバイスが交換されたことを FMA に知らせます。
fmadm faulty の出力から、Affects: セクション内の zfs://pool=name/vdev=guid 文字列を確認し、その文字列を fmadm repaired コマンドの引数として指定します。
# fmadm faulty # fmadm repaired zfs://pool=name/vdev=guid
SATA ディスクを備えた一部のシステムでは、オフラインにする前にディスクを構成解除する必要があります。このシステム上の同じスロット位置にあるディスクを置き換えようとしている場合は、このセクションの最初の例で説明したように zpool replace コマンドを実行するだけで置き換えを実行できます。
SATA ディスクの置き換えの例については、Example 10–1 を参照してください。
ZFS ストレージプール内のデバイスを置き換えるときは、次のことを考慮します。
プールの autoreplace プロパティーをオンに設定した場合、そのプールに以前属していたデバイスと物理的に同じ位置に新しいデバイスが検出されると、そのデバイスが自動的にフォーマットされて置き換えられます。このプロパティーが有効なときは、zpool replace コマンドを使用する必要はありません。ハードウェアの種類によっては、この機能を使用できない場合があります。
システムの実行中にデバイスまたはホットスペアが物理的に取り外されると、ストレージプールの状態は REMOVED になります。可能であれば、取り外されたデバイスはホットスペアデバイスで置き換えられます。
デバイスをいったん取り外してから挿入し直すと、デバイスはオンラインになります。デバイスを挿入し直したときにホットスペアがアクティブになっていた場合は、オンライン処理が完了すると、そのホットスペアが取り外されます。
デバイスの着脱時の自動検出はハードウェアに依存しているため、すべてのプラットフォームには対応していない可能性があります。たとえば、USB デバイスは挿入時に自動的に構成されます。ただし、cfgadm –c configure コマンドを使用して SATA ドライブを構成する必要がある場合もあります。
ホットスペアは、オンラインおよび使用可能かどうか定期的に確認されます。
交換用デバイスの容量が、ミラー化構成または RAID-Z 構成内でもっとも容量の小さいディスク以上である必要があります。
置き換える前のデバイスよりもサイズが大きい交換デバイスをプールに追加しても、プールは自動的にその最大サイズにまで拡張されません。プールの autoexpand プロパティーの値は、ディスクをプールに追加したときに、置き換え後の LUN がその最大サイズにまで拡張されるかどうかを決定します。デフォルトでは、autoexpand プロパティーは無効になっています。容量の大きい LUN をプールに追加する前後どちらでも、このプロパティーを有効にすることで LUN のサイズを拡張できます。
次の例では、ミラー化プール内の 16G バイトのディスク 2 台を 72G バイトのディスク 2 台で置き換えます。2 番目のデバイスの交換を試行する前に、最初のデバイスが完全に再同期化されていることを確認してください。ディスクの交換後に autoexpand プロパティーを有効にして、ディスクをその最大サイズまで拡張します。
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE -
大規模プール内で多数のディスクを置き換える場合は、新しいディスク上にデータを再同期化するために時間がかかります。また、ディスクの置き換えの合間に zpool scrub コマンドを実行して、置き換えたあとのデバイスが動作可能なこと、およびデータが正しく書き込まれることを確認することもできます。
障害の発生したディスクがホットスペアに自動的に置き換えられた場合は、障害の発生したディスクが置き換えられたあとでスペアの切り離しが必要になることがあります。zpool detach コマンドを使用して、ミラー化プールまたは RAID-Z プールのスペアを切り離すことができます。ホットスペアの切り離しについては、ストレージプール内のホットスペアをアクティブにする/非アクティブにするを参照してください。
デバイスの置き換えの詳細は、見つからないデバイスまたは削除されたデバイスを解決するおよび 破損したデバイスを交換または修復するを参照してください。