ここでは、ZFS ブート環境において、以下の構成で ZFS ミラー方式のシステムディスクミラーリングを解除する方法を説明します。
GDS : Global Disk Services
以降の手順では、物理スライス名、ボリューム名、プール名などを、実際のシステムで使用する名前に置き換えてください。
ZFSミラー方式のシステムディスクミラーリングの解除は、以下の手順で行います。
GDS : Global Disk Services
上図 [8] の手順 19) でシステムの再起動が必要ですが、それ以外の設定は、業務やアプリケーションプログラムを動作させたまま実行できます。
上図 [4] の手順 10) で ZFS による再同期化処理が実行されますが、このときも、業務やアプリケーションプログラムを停止する必要はありません。
ただし、より安全性が求められる場合は、業務やアプリケーションプログラムを停止し、システムのバックアップを採取してから解除を行ってください。
所要時間は、サーバやディスクの性能、ディスクやファイルシステムのサイズなどに左右され、システムによって異なります。
1) ミラーリングを解除した後にシステムディスクとして使用するディスクを決定し、物理スライス番号、SDX ディスク名、グループ名、ボリューム名を確認します。
プールに接続されているボリュームを確認し、ボリュームが存在するディスクを確認します。どちらのディスクもミラーリング解除後のシステムディスクにすることができます。
# zpool status rpool (*1) ZFS ルートプール名 pool: rpool state: ONLINE scan: resilvered ~ config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror ONLINE 0 0 0 /dev/sfdsk/System/dsk/Volume2 ONLINE 0 0 0 (*2) /dev/sfdsk/System/dsk/Volume1 ONLINE 0 0 0 (*3)
(*2) プールに接続されているボリュームのボリューム名
(*3) プールに接続されているボリュームのボリューム名
ボリューム情報の詳細を確認します。
# sdxinfo -e long -o Volume2 OBJ NAME TYPE CLASS GROUP ~ SNUM PJRM ------ ------- ------ ------- ------- ~ ---- ---- volume Volume2 mirror System Group2 ~ 0 * (*4)
(*4) ボリュームを構成しているスライスのスライス番号
# sdxinfo -e long -o Volume1 OBJ NAME TYPE CLASS GROUP ~ SNUM PJRM ------ ------- ------ ------- ------- ~ ---- ---- volume Volume1 mirror System Group1 ~ 0 * (*5)
(*5) ボリュームを構成しているスライスのスライス番号
# sdxinfo -D -c System (*6) ルートクラス名 OBJ NAME TYPE CLASS GROUP DEVNAM ~ ----- ------- ------ ------- ------- ------- ~ disk Root2 mirror System Group2 c1t0d0 ~ disk Root1 mirror System Group1 c0t0d0 ~
# sdxinfo -S -c System (*7) ルートクラス名 OBJ CLASS GROUP DISK VOLUME STATUS ------ ------- ------- ------- ------- -------- slice System Group2 Root2 Volume2 ACTIVE slice System Group1 Root1 Volume1 ACTIVE
この例では、ディスク c1t0d0 を、ミラーリング解除後のシステムディスクにします。
物理スライス番号は 0 、SDX ディスク名は Root2 、グループ名は Group2 、ボリューム名は Volume2 です。
2) ミラーリング解除後にシステムディスクとして使用するディスク上のボリュームを ZFS ルートプールから切り離します。
# zpool detach rpool /dev/sfdsk/System/dsk/Volume2 (*1) (*2) (*3)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) ルートクラス名
(*3) ボリューム名
3) ミラーリングが解除されていることを確認します。
# zpool status rpool (*1) ZFS ルートプール名 pool: rpool state: ONLINE scan: resilvered ~ config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 /dev/sfdsk/System/dsk/Volume1 ONLINE 0 0 0 (*2)
以下のように表示されることを確認します。
state に ONLINE と表示されること。
config に、ボリューム (*2) だけが表示されること。
4) ボリュームを停止します。
# sdxvolume -F -c System -v Volume2 (*1) (*2)
(*1) ルートクラス名
(*2) ボリューム名
5) ボリュームを削除します。
# sdxvolume -R -c System -v Volume2 (*1) (*2)
(*1) ルートクラス名
(*2) ボリューム名
6) グループを削除します。
# sdxgroup -R -c System -g Group2 (*1) (*2)
(*1) ルートクラス名
(*2) システムディスクが接続されていたグループのグループ名
7) ディスクをルートクラスから削除します。
# sdxdisk -R -c System -d Root2 (*1) (*2)
(*1) ルートクラス名
(*2) SDX ディスク名
8) 手順 7) のディスクを初期化します。
# dd if=/dev/zero of=/dev/rdsk/c1t0d0s0 bs=1024k (*1) (*2)
(*1) 手順 7) でルートクラスから削除したディスク
(*2) ZFS ルートプールを構成するボリュームの物理スライス番号 ( 手順 1) で確認した物理スライス番号 )
# format -e
(*1) のディスク (c1t0d0) を選択し、"Disk not labeled. Label it now?" という問合せが表示された場合、y を入力します。
9) 手順 8) のディスクにスライスを作成します。
OS の format(1M) コマンド等を使用し、元のシステムディスクと同じスライス構成にします。
参考
システムディスクのミラーリングを設定する際にシステムディスクのスライス構成を紙などに記録しなかった場合、システムディスクのグループに接続されているディスク ( この例では Root1) と同じスライス構成にしてください。グループに接続されているディスクのスライス構成は、OS のインストール CD でシステムを起動し、 format(1M) コマンドまたは prtvtoc(1M) コマンドで確認してください。
10) 手順 9) で作成したスライスを、 ZFS ルートプールに接続します。
zpool attach コマンド実行後、ZFS の再同期処理が実行されます。このとき、コンソールに OS のメッセージ (SUNW-MSG-ID: ZFS-8000-QJ) が出力されることがありますが、システムには影響ありません。
# zpool attach rpool /dev/sfdsk/System/dsk/Volume1 c1t0d0s0 (*1) (*2) (*3) (*4)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) ルートクラス名
(*3) ZFS ルートプールを構成するボリュームのボリューム名
(*4) 手順 9) で作成したスライス
11) ZFS ルートプールの状態を確認します。
# zpool status rpool (*1) ZFS ルートプール名 pool: rpool state: ONLINE scan: resilvered ~ config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror ONLINE 0 0 0 /dev/sfdsk/System/dsk/Volume1 ONLINE 0 0 0 (*2) c1t0d0s0 ONLINE 0 0 0 (*3)
以下のように表示されることを確認します。
state に ONLINE と表示されること。
※ ZFS の再同期処理実行中、state に "DEGRADED" と表示されることがありますが、再同期処理完了後、state に "ONLINE" と表示されれば問題ありません。
scrub または scan に "resilvered" または "resilver completed" と表示されること。
※再同期処理実行中は、 scrub または scan に "resilver in progress" と表示されます。
config に、ボリューム (*2) と、手順 10) で接続したスライス (*3) が表示されること。
12) 手順 10) で接続したスライスに、ブートブロックをインストールします。
以下の環境の場合、この手順は実行しないでください。
Solaris 10 を使用し、カーネルパッチ 144500-19以降を適用している場合
Solaris 11 11/11以降の場合
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk \ /dev/rdsk/c1t0d0s0 (*1) 手順 10) で接続したスライス
13) ZFS ルートプールに接続されているボリュームを切り離します。
# zpool detach rpool /dev/sfdsk/System/dsk/Volume1 (*1) (*2) (*3)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) ルートクラス名
(*3) ボリューム名
14) ミラーリングが解除されていることを確認します。
# zpool status rpool (*1) ZFS ルートプール名 pool: rpool state: ONLINE scan: resilvered ~ config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 (*2)
以下のように表示されることを確認します。
state に ONLINE と表示されること。
config に、手順 10) で接続したスライス (*2) だけが表示されること。
15) ボリュームを停止します。
# sdxvolume -F -c System -v Volume1 (*1) (*2)
(*1) ルートクラス名
(*2) ボリューム名
16) ボリュームを削除します。
# sdxvolume -R -c System -v Volume1 (*1) (*2)
(*1) ルートクラス名
(*2) ボリューム名
17) グループを削除します。
# sdxgroup -R -c System -g Group1 (*1) (*2)
(*1) ルートクラス名
(*2)グループ名
18) ディスクをルートクラスから削除します。
# sdxdisk -R -c System -d Root1 (*1) (*2)
(*1) ルートクラス名
(*2) SDX ディスク名
19) OpenBoot の boot-device プロパティを設定します。
設定手順は、以下の4つの場合で異なります。
SANブート環境でシステムディスクが12Gbps SASカードに接続されている場合
6Gbps SAS カードに接続されている増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合
SAN ブート環境の場合
その他の場合
[SANブート環境でシステムディスクが12Gbps SASカードに接続されている場合]
19a-1) チューニングパラメタを削除します。
/etc/opt/FJSVsdx/sdx.cfファイルに“SDX_BOOT_PROPERTY=off”を削除します。
# vi /etc/opt/FJSVsdx/sdx.cf
~
SDX_BOOT_PROPERTY=off ← 本行を削除
19a-2) チューニングパラメタが削除されていることを確認します。
# grep SDX_BOOT_PROPERTY /etc/opt/FJSVsdx/sdx.cf
#
19a-3) ZFSルートプール用のボリュームを構成するスライスのパーティションを確認します。
# ls -l /dev/dsk | grep c0t600000E00D28000000280CC600000000d0s0 (*1) lrwxrwxrwx 1 root root 64 Feb 2 13:57 c0t600000E00D28000000280CC600000000d0s0 -> ../../devices/scsi_vhci/disk@g600000e00d28000000280cc600000000:a (*2)
(*1) ZFSルートプール用のボリュームを構成するスライス
(*2) スライスのパーティション
19a-4) ブートディスクの情報を確認します。
# prtconf -v /dev/rdsk/c0t600000E00D28000000280CC600000000d0s0 disk, instance #0 Driver properties: ~ Hardware properties: ~ Paths from multipath bus adapters: Path 33: /pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/iport@f0/disk@w500000e0da0cc620,0 lsc#3(online) (*1) (*2) ~
(*1) diskノード名 ( この例では disk@w500000e0da0cc620,0 )
(*2) SAS Address ( この例では 500000e0da0cc620 )
19a-5) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
19a-6) ディスクが接続しているSAS HBAのデバイスパスを確認します。
ok probe-scsi-all
/pci@8100/pci@4/pci@0/pci@0/LSI,sas@0 (*1)
FCode Version 1.00.65, MPT Version 2.05, Firmware Version 4.00.00.00 Target a Unit 0 Disk TOSHIBA MBF2300RC 3706 585937500 Blocks, 300 GB SASDeviceName 50000393d82956d4 SASAddress 500000e0d0460306 PhyNum 0 (*2) Target b Unit 0 Disk TOSHIBA MBF2300RC 3706 585937500 Blocks, 300 GB SASDeviceName 50000393d828bbfc SASAddress 500000e0da0cc620 PhyNum b ~ ok
(*1) デバイスパス
(*2) SAS Address (手順19a-4)の*2で確認したSAS Address)
19a-7) OpenBoot 環境でboot-deviceプロパティを設定します。
ok setenv boot-device /pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/disk@w500000e0da0cc620:a (*4)
(*4) 手順 19a-6) の デバイスパス(*1) と、手順 19a-4) のdiskノード名(*1)と、手順19a-3)のスライスのパーティション (*2) を連結したデバイス名
19a-8) OpenBoot 環境でmultipath-boot?プロパティを設定します。
ok setenv multipath-boot? false
19a-9) システムを起動します。
ok boot
[6Gbps SAS カードに接続されている増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合 ]
19b-1) ZFSルートプールを構成するスライスのパーティションを確認します。
[Solaris 11.3 以前の例]
# ls -l /dev/dsk | grep c0t5000CCA0150FEA10d0s0 (*1) lrwxrwxrwx 1 root root 48 Apr 25 13:46 c0t5000CCA0150FEA10d0s0 -> ../../devices/scsi_vhci/disk@g5000cca0150fea10:a (*2)
(*1) 手順 10) で接続したスライス
(*2) スライスのパーティション
[Solaris 11.4 以降の例]
# ls -l /dev/dsk | grep c0t50000397683346A9d0s0 (*1) lrwxrwxrwx 1 root root 48 Jul 27 19:23 c0t50000397683346A9d0s0 -> ../../devices/scsi_vhci/disk@g50000397683346a9:a (*2)
(*1) 手順 10) で接続したスライス
(*2) スライスのパーティション
19b-2) ブートディスクの情報を確認します。
[Solaris 11.3 以前の場合]
obp-path パラメタを確認します。
# prtconf -v /dev/rdsk/c0t5000CCA0150FEA10d0s0 disk, instance #0 Driver properties: ~ Hardware properties: ~ Paths from multipath bus adapters: ~ name='obp-path' type=string items=1 value='/pci@400/pci@2/pci@0/pci@e/scsi@0/disk@w5000cca0150fea11,0' (*3) ~ Device Minor Nodes: ~
(*3) obp-pathのパラメタ
[Solaris 11.4 以降の場合]
ddi-boot-path パラメタを確認します。
# prtconf -v /dev/rdsk/c0t50000397683346A9d0s2 disk, instance ~ Device Hold: ~ Driver properties: ~ Hardware properties: ~ Paths from multipath bus adapters: Path 1: /pci@8000/pci@4/pci@0/pci@0/scsi@0/iport@f/disk@w50000397683346aa,0 mpt_sas#2 (online) name='ddi-boot-path' type=string items=1 value='/pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0' (*3) ~ Device Minor Nodes: ~
(*3) ddi-boot-path のパラメタ
19b-3) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
19b-4) boot-device プロパティを設定します。
[Solaris 11.3 以前の場合]
ok setenv boot-device /pci@400/pci@2/pci@0/pci@e/scsi@0/disk@w5000cca0150fea11,0:a (*4)
(*4) 手順 19b-2) で確認した obp-path パラメタ (*3) と 手順 19b-1) で確認したパーティション (*2) を連結したデバイス名
[Solaris 11.4 以降の場合]
ok setenv boot-device /pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0:a (*4)
(*4) 手順 19b-2) で確認した ddi-boot-path パラメタ (*3) と手順 19b-1) で確認したパーティション (*2) を連結したデバイス名
19b-5) システムを起動します。
ok boot
[SAN ブート環境の場合 ]
19c-1) 「7.2.1.2 システムディスクミラーリングの設定手順 (ZFS ブート環境 : ZFS ミラー方式)」の手順 2) で確認したデバイスパスのうち、本小項の手順 10) で接続したスライスのデバイスパス名を、boot-device プロパティに設定します。
参照
boot-device プロパティの設定方法は、以下のドキュメントを参照してください。
MPxIO を使用する場合
SPARC Enterprise SAN Boot環境構築ガイド (Leadvilleドライバ編)
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-8info/
ETERNUS マルチパスドライバを使用する場合
SPARC Enterprise SAN Boot環境構築ガイド
https://updatesite.jp.fujitsu.com/unix/jp/download/driver/pfca-4/
[その他の場合 ]
19d-1) ZFSルートプールを構成するスライスのデバイスパスを確認します。
# ls -l /dev/dsk | grep c1t0d0s0 (*1) lrwxrwxrwx 1 root root 63 Aug 20 12:00 c1t0d0s0 -> ../../devices/pci@1f,4000/scsi@3/sd@1,0:a (*2)
(*1) 手順 10) で接続したスライス
(*2) スライスのデバイスパス
19d-2) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
19d-3) OpenBoot 環境でデバイス名を確認し、確認結果に応じた方法で boot-device プロパティを設定します。
ok show-devs /pci@1f,4000/scsi@3 (*3) ~ /pci@1f,4000/scsi@3/disk ~
(*3) 手順 19d-1)で表示されたパス (*2) から最終要素 ( この例では /sd@1,0:a) を除いたパス
上記確認結果に応じた方法で、 boot-device プロパティを設定します。
show-devs で表示されたパスの最終要素に "disk" であるデバイス名が出力されなかった場合:
ok setenv boot-device /pci@1f,4000/scsi@3/sd@1,0:a (*4)
(*4) 手順 19d-1) で表示されたパス (*2)
show-devs で表示されたパスの最終要素に "disk" であるデバイス名が出力された場合:
ok setenv boot-device /pci@1f,4000/scsi@3/disk@1,0:a (*5)
(*5) 手順 19d-1) で表示されたパス (*2) の最終要素の @ より前の部分 ( この例では sd) を disk に置き換えたパス
19d-4) システムを起動します。
ok boot