次の理由により、ルートプールのディスクの置き換えが必要になることがあります。
ルートプールが小さすぎるため、より大きいディスクに置き換えたい
ルートプールのディスクに障害が発生している。非冗長プールでは、ディスクに障害が発生してシステムがブートしなくなった場合は、CD やネットワークなどの別のソースからブートします。次に、ルートプールディスクを交換します。
2 つのうち、いずれかの方法を使用してディスクを交換できます。
zpool replace コマンドを使用します。
この方法は、ダーティータイムログ (DTL) のルートプールをスクラブおよびクリアして、ディスクを交換します。新しいディスクを取り付けたあと、ブートブロックを手動で適用します。
zpool detach|attach コマンドを使用します。
この方法では、新しいディスクを取り付け、ディスクが正常に動作していることを検証し、故障したディスクを切り離します。
SMI (VTOC) ラベルが付いているルートプールディスクを交換している場合は、次の要件を満たしていることを確認してください。
SPARC: そのディスクに SMI (VTOC) ディスクラベルが付いており、スライス 0 にディスク容量の大部分が含まれていることを確認します。ディスクのラベルを変更し、スライス 0 を作成する必要がある場合は、Managing Devices in Oracle Solaris 11.4 の How to Replace a ZFS Root Pool Diskを参照してください。
x86: ディスクに fdisk パーティション、SMI ディスクラベル、およびスライス 0 があることを確認してください。ディスクのパーティションを変更し、スライス 0 を作成する必要がある場合は、Managing Devices in Oracle Solaris 11.4 の Modifying Slices or Partitionsを参照してください。
この手順では zpool attach|detach コマンドを使用してディスクを交換します。
$ zpool attach root-pool current-disk new-disk
ここで、current-disk は、この手順の最後に切り離される old-disk になります。
適切なディスクのラベル付けとブートブロックが自動的に適用されます。
再同期化が完了している場合は、出力に次のようなメッセージが含まれています。
scan: resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 13:57:25 2014
$ zpool detach root-pool old-disk
ここで、old-disk はStep 2 のcurrent-disk です。
$ zpool set autoexpand=on root-pool
SPARC: ブート PROM から eeprom コマンドまたは setenv コマンドを使用します。
x86: システム BIOS を再構成します。
この例では、zpool attach|detach コマンドを使用して、rpool という名前のルートプール内の c2t0d0 を交換します。ここでは、交換用ディスク c2t1d0 がシステムにすでに物理的に接続されていることを前提にしています。
$ zpool attach rpool c2t0d0 c2t1d0 Make sure to wait until resilver is done before rebooting. $ zpool status rpool pool: rpool state: ONLINE scan: resilvered 11.7G in 0h5m with 0 errors on Fri Jul 20 13:45:37 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 errors: No known data errors
新しいディスク c2t1d0 からのブートテストを完了したら、c2t0d0 を切り離し、必要に応じて autoexpand プロパティーを有効にします。
$ zpool detach rpool c2t0d0 $ zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 29.8G 152K 29.7G 0% 1.00x ONLINE - $ zpool set autoexpand=on rpool $ zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 279G 146K 279G 0% 1.00x ONLINE -
システムを新しいディスクから自動的にブートするように設定して操作を完了します。
使用例 20 ルートプール内の SATA ディスクの交換 (SPARC または x86/EFI (GPT))この例では、zpool replace コマンドを使用して c1t0d0 を交換します。
SATA ディスクを備えたシステムでは、障害が発生したディスクを zpool replace コマンドで交換する前に、そのディスクをオフラインにして構成解除する必要があります。ベストプラクティスとして、ディスクを交換する前に最初にルートプールをスクラブおよびクリアします。
システムの c1t0d0 を交換するとします。次のコマンドを発行します。
$ zpool scrub rpool $ zpool clear rpool $ zpool offline rpool c1t0d0 $ cfgadm -c unconfigure c1::dsk/c1t0d0
この時点で、障害が発生したディスク c1t0d0 を物理的に取り外し、交換用ディスクを同じスロットに挿入します。したがって、新しいディスクは c1t0d0 のままです。一部のハードウェアでは、ディスクをオンラインにしたり、挿入された交換用ディスクを再構成したりする必要はありません。
$ cfgadm -c configure c1::dsk/c1t0d0 $ zpool online rpool c1t0d0 $ zpool replace rpool c1t0d0 $ zpool status rpool
再同期化が完了したあと、ブートブロックをインストールします。
$ bootadm install-bootloader使用例 21 ZFS ルートプール内のディスクの交換 (SPARC または x86/VTOC)
この例では、zpool attach|detach コマンドを使用して、rpool という名前のルートプール内の c2t0d0s0 を交換します。ここでは、交換用ディスク c2t1d0s0 がシステムにすでに物理的に接続されていることを前提にしています。
$ zpool attach rpool c2t0d0s0 c2t1d0s0 Make sure to wait until resilver is done before rebooting. $ zpool status rpool pool: rpool state: ONLINE scan: resilvered 11.7G in 0h5m with 0 errors on Fri Jul 20 13:45:37 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0s0 ONLINE 0 0 0 c2t1d0s0 ONLINE 0 0 0 errors: No known data errors
新しいディスク c2t1d0s0 からのブートをテストします。c2t1d0s0 に障害が発生した場合は、古いディスク c2t0d0s0 からのブートもテストします。
ok boot /pci@1f,700000/scsi@2/disk@1,0 ok boot /pci@1f,700000/scsi@2/disk@0,0
ブートテストを完了したら、c2t0d0s0 を切り離し、必要に応じて autoexpand プロパティーを有効にします。
$ zpool detach rpool c2t0d0s0 $ zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 29.8G 152K 29.7G 0% 1.00x ONLINE - $ zpool set autoexpand=on rpool $ zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 279G 146K 279G 0% 1.00x ONLINE -
システムを新しいディスクから自動的にブートするように設定して操作を完了します。
使用例 22 ルートプール内の SATA ディスクの交換 (SPARC または x86 (VTOC))この例では、zpool replace コマンドを使用して c1t0d0 を交換します。
SATA ディスクを備えたシステムでは、障害が発生したディスクを zpool replace コマンドで交換する前に、そのディスクをオフラインにして構成解除する必要があります。ベストプラクティスとして、ディスクを交換する前に最初にルートプールをスクラブおよびクリアします。
システムの c1t0d0 を交換するとします。次のコマンドを発行します。
$ zpool scrub rpool $ zpool clear rpool $ zpool offline rpool c1t0d0s0 $ cfgadm -c unconfigure c1::dsk/c1t0d0
この時点で、障害が発生したディスク c1t0d0 を物理的に取り外し、交換用ディスクを同じスロットに挿入します。したがって、新しいディスクは c1t0d0 のままです。一部のハードウェアでは、ディスクをオンラインにしたり、挿入された交換用ディスクを再構成したりする必要はありません。
$ cfgadm -c configure c1::dsk/c1t0d0
交換用ディスク c1t0d0s0 に SMI ラベルおよびスライス 0 があることを確認したあと、zpool replace コマンドを発行して、交換プロセスを続行します。
$ zpool replace rpool c1t0d0s0 $ zpool online rpool c1t0d0s0 $ zpool status rpool
再同期化が完了したあと、ブートブロックをインストールします。
$ bootadm install-bootloader