次の理由により、ルートプールのディスクの置き換えが必要になることがあります。
ルートプールが小さすぎるため、より大きいディスクに置き換えたい
ルートプールのディスクに障害が発生している。非冗長プールでは、ディスクに障害が発生してシステムがブートしなくなった場合は、CD やネットワークなどの別のソースからブートします。次に、ルートプールディスクを交換します。
zpool replace を使用してディスクを交換したあと、ブートブロックを手動で適用する必要があります。
ミラー化ルートプール構成では、別のソースからブートしなくても、ディスクを交換できます。障害が発生したディスクを交換するには、zpool replace を使用します。または、追加のディスクがある場合は、zpool attach コマンドを使用できます。
SMI (VTOC) ラベルが付いているルートプールディスクを交換している場合は、次の要件を満たしていることを確認してください。
SPARC: そのディスクに SMI (VTOC) ディスクラベルが付いており、スライス 0 にディスク容量の大部分が含まれていることを確認します。ディスクのラベルを変更し、スライス 0 を作成する必要がある場合は、Oracle Solaris 11.3 でのデバイスの管理 の ZFS ルートプール (VTOC) の交換方法を参照してください。
x86: ディスクに fdisk パーティション、SMI ディスクラベル、およびスライス 0 があることを確認してください。ディスクのパーティションを変更し、スライス 0 を作成する必要がある場合は、Oracle Solaris 11.3 でのデバイスの管理 の スライスまたはパーティションの変更を参照してください。
# zpool attach root-pool current-disk new-disk
ここで、current-disk は、この手順の最後に切り離される古いディスクになります。
適切なディスクのラベル付けとブートブロックが自動的に適用されます。
再同期化が完了している場合は、出力に次のようなメッセージが含まれています。
scan: resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 13:57:25 2014
# zpool detach root-pool old-disk
# zpool set autoexpand=on root-pool
SPARC: ブート PROM から eeprom コマンドまたは setenv コマンドを使用します。
x86: システム BIOS を再構成します。
この例では、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 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 -
システムを新しいディスクから自動的にブートするように設定して操作を完了します。
使用例 19 ルートプール内の SATA ディスクの交換 (SPARC または x86/EFI (GPT))SATA ディスクを備えたシステムでは、障害が発生したディスクを zpool replace コマンドで交換する前に、そのディスクをオフラインにして構成解除する必要があります。例:
# 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
x86 システムでは、再同期化が完了したあと、ブートブロックをインストールします。
x86# bootadm install-bootloader使用例 20 ZFS ルートプール内のディスクの交換 (SPARC または x86/VTOC)
この例では、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 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 -
システムを新しいディスクから自動的にブートするように設定して操作を完了します。
使用例 21 ルートプール内の SATA ディスクの交換 (SPARC または x86 (VTOC))SATA ディスクを備えたシステムでは、障害が発生したディスクを zpool replace コマンドで交換する前に、そのディスクをオフラインにして構成解除する必要があります。例:
# zpool offline rpool c1t0d0s0 # cfgadm -c unconfigure c1::dsk/c1t0d0
障害が発生したディスク c1t0d0 を物理的に取り外し、交換用ディスク c1t0d0 を挿入します。一部のハードウェアでは、ディスクをオンラインにしたり、挿入された交換用ディスクを再構成したりする必要はありません。
# cfgadm -c configure c1::dsk/c1t0d0
交換用ディスク c1t0d0s0 に SMI ラベルが付いており、スライス 0 が含まれていることを確認したら、交換作業に進みます。
# zpool replace rpool c1t0d0s0 # zpool online rpool c1t0d0s0 # zpool status rpool
再同期化が完了したあと、ブートブロックをインストールします。
# bootadm install-bootloader