ここでは、ZFS ブート環境において、以下の構成で ZFS ミラー方式のシステムディスクミラーリングを設定する方法を説明します。
GDS : Global Disk Services
以降の手順では、物理スライス名、ボリューム名、プール名などを、実際のシステムで使用する名前に置き換えてください。
ZFS 方式のシステムディスクミラーリングの設定は、以下の手順で行います。
GDS : Global Disk Services
上図 [8] の手順 16) でシステムの再起動が必要ですが、それ以外の設定は、業務やアプリケーションプログラムを動作させたまま実行できます。
上図 [2] の手順 6) 、および、上図 [6] の手順 12) で ZFS による再同期化処理が実行されます。このときも、業務やアプリケーションプログラムを停止する必要はありません。
ただし、より安全性が求められる場合は、業務やアプリケーションプログラムを停止し、システムのバックアップを採取してから設定を行ってください。
所要時間は、サーバやディスクの性能、スライスやファイルシステムのサイズなどに左右され、システムによって異なります。
1) GDSのチューニングパラメタを設定します。
SANブート環境でシステムディスクが12Gbps SASカードに接続されている場合にのみ、本設定を行います。
1-1) チューニングパラメタを設定します。
/etc/opt/FJSVsdx/sdx.cfファイルに“SDX_BOOT_PROPERTY=off”を追記します。
# vi /etc/opt/FJSVsdx/sdx.cf
~
SDX_BOOT_PROPERTY=off
1-2) チューニングパラメタが設定されていることを確認します。
# grep SDX_BOOT_PROPERTY /etc/opt/FJSVsdx/sdx.cf
SDX_BOOT_PROPERTY=off
2) ミラー先ディスクにスライスを作成します。
OS の format(1M) コマンド等を使用し、ミラー先ディスクのスライス構成をシステムディスクと同じ構成にします。
スライス構成を紙またはファイルなどに記録しておいてください。システムディスクのミラーリングを解除する際に、必要になります。
3) SAN ブート環境の場合、ブートデバイスのパス名を確認します。
OS がインストールされているスライス (ZFS ルートプールを構成するスライス) のデバイスパス名と、手順 2) で作成したスライスのデバイスパス名を確認します。
確認したデバイスパス名は、紙またはファイルなどに記録しておいてください。システム起動時やシステムディスクのミラーリングを解除する際に必要になります。
参照
確認方法の詳細は、以下のドキュメントを参照してください。
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/
4) ミラー先ディスクをルートクラスに登録します。
# sdxdisk -M -c System -a type=root -d c1t0d0=Root2:keep (*1) (*2) (*3)
(*1) ルートクラス名
(*2) ミラー先ディスク
(*3) ミラー先ディスクの SDX ディスク名
5) ミラー先ディスクをグループに接続します。
# sdxdisk -C -c System -g Group2 -d Root2 -v 0=Volume2:on (*1) (*2) (*3) (*4) (*5) (*6)
(*1) ルートクラス名
(*2) グループ名
(*3) ミラー先ディスクの SDX ディスク名
(*4) 手順 2) で作成したスライス ( この例では c1t0d0s0) の番号
(*5) (*4) のスライスに対応するボリューム名
(*6) (*5) のボリュームの JRM モード ( 通常は on)
6) ミラー先ディスク上のボリュームを ZFS ルートプールに接続します。
zpool attach コマンド実行後、ZFS の再同期処理が実行されます。このとき、コンソールに OS のメッセージ (SUNW-MSG-ID: ZFS-8000-QJ) が出力されることがありますが、システムには影響ありません。
# zpool attach rpool c0t0d0s0 /dev/sfdsk/System/dsk/Volume2 (*1) (*2) (*3) (*4)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) OS がインストールされているスライス (ZFS ルートプールを構成するスライス )
(*3) ルートクラス名
(*4) 手順 5) で作成されたボリュームのボリューム名
7) 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 c0t0d0s0 ONLINE 0 0 0 (*2) /dev/sfdsk/System/dsk/Volume2 ONLINE 0 0 0 (*3)
以下のように表示されることを確認します。
state に ONLINE と表示されること。
※ ZFS の再同期処理実行中、state に "DEGRADED" と表示されることがありますが、再同期処理完了後、state に "ONLINE" と表示されれば問題ありません。
scrub または scan に "resilvered" または "resilver completed" と表示されること。
※再同期処理実行中は、scrub または scan に "resilver in progress" と表示されます。
※再同期処理実行中にシステムが再起動された場合、再同期処理は中止され、scrub または scan に "none requested" と表示されます。この場合、zpool scrub コマンドを使用して、再同期処理を再実行してください。
config に、 OS をインストールしたスライス (*2) と、手順 6) で接続したボリューム (*3) が表示されること。
8) ミラー先ディスク上のボリュームにブートブロックをインストールします。
以下の環境の場合、この手順は実行しないでください。
Solaris 10 を使用し、カーネルパッチ 144500-19以降を適用している場合
Solaris 11 11/11以降の場合
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk \ /dev/sfdsk/System/rdsk/Volume2 (*1) (*2)
(*1) ルートクラス名
(*2) 手順 6) で接続したボリュームのボリューム名
9) 元のシステムディスクを ZFS ルートプールから切り離します。
# zpool detach rpool c0t0d0s0 (*1) (*2)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) OS をインストールしたスライス
10) 元のシステムディスクをルートクラスに登録します。
# sdxdisk -M -c System -a type=root -d c0t0d0=Root1:keep (*1) (*2) (*3)
(*1) ルートクラス名
(*2) 元のシステムディスク
(*3) 元のシステムディスクの SDX ディスク名
11) 元のシステムディスクをグループに接続します。
# sdxdisk -C -c System -g Group1 -d Root1 -v 0=Volume1:on (*1) (*2) (*3) (*4) (*5) (*6)
(*1) ルートクラス名
(*2) グループ名
(*3) 元のシステムディスクの SDX ディスク名
(*4) 手順 2)で作成したスライス ( この例では c0t0d0s0) の番号
(*5) (*4) のスライスに対応するボリューム名
(*6) (*5) のボリュームの JRM モード ( 通常は on)
12) 元のシステムディスク上のボリュームを ZFS ルートプールに接続します。
zpool attach コマンド実行後、ZFS の再同期処理が実行されます。このとき、コンソールに OS のメッセージ (SUNW-MSG-ID: ZFS-8000-QJ) が出力されることがありますが、システムには影響ありません。
# zpool attach rpool /dev/sfdsk/System/dsk/Volume2 /dev/sfdsk/System/dsk/Volume1 (*1) (*2) (*3) (*4)
(*1) ZFS ルートプール名 (zpool status コマンドで確認可能 )
(*2) ZFS ルートプールを構成するボリュームのボリューム名
(*3) ルートクラス名
(*4) 手順 11) で作成されたボリュームのボリューム名
13) 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/Volume2 ONLINE 0 0 0 (*2) /dev/sfdsk/System/dsk/Volume1 ONLINE 0 0 0 (*3)
以下のように表示されることを確認します。
state に ONLINE と表示されること。
※ ZFS の再同期処理実行中、state に "DEGRADED" と表示されることがありますが、再同期処理完了後、state に "ONLINE" と表示されれば問題ありません。
scrub または scan に "resilvered" または "resilver completed" と表示されること。
※再同期処理実行中は、scrub または scan に "resilver in progress" と表示されます。
※再同期処理実行中にシステムが再起動された場合、再同期処理は中止され、scrub または scan に "none requested" と表示されます。この場合、zpool scrub コマンドを使用して、再同期処理を再実行してください。
config に、手順 6) で接続したボリューム (*2) と、手順 12) で接続したボリューム (*3) が表示されること。
14) 元のシステムディスク上のボリュームにブートブロックをインストールします。
以下の環境の場合、この手順は実行しないでください。
Solaris 10 を使用し、カーネルパッチ 144500-19以降を適用している場合
Solaris 11 11/11以降の場合
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk \ /dev/sfdsk/System/rdsk/Volume1 (*1) (*2)
(*1) ルートクラス名
(*2) 手順 12) で接続したボリュームのボリューム名
15) 正常にミラーリングされていることを確認します。
# 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)
以下のように表示されることを確認します。
state に ONLINEと表示されること。
config に、手順 6) で接続したボリューム (*2) と 手順 12) で接続したボリューム (*3) が表示されること。
# sdxinfo -S -c System (*3) ルートクラス名 OBJ CLASS GROUP DISK VOLUME STATUS ------ ------- ------- ------- ------- -------- slice System Group2 Root2 Volume2 ACTIVE slice System Group1 Root1 Volume1 ACTIVE
以下のように表示されることを確認します。
元のシステムディスク ( この例では Root1) と、ミラー先ディスク ( この例では Root2) の情報が表示されること。
16) システムを再起動します。
元のシステムディスク、ミラー先ディスクのどちらからでも起動できます。
以下では、ミラー先ディスクから起動する手順を示します。
手順は、以下の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カードに接続されている場合 ]
16a-1) ルートクラスに登録されている物理ディスク名を確認します。
# sdxinfo -D -c System (*1) OBJ NAME TYPE CLASS GROUP DEVNAM ~ ----- ------- ------ ------- ------- ------- ~ disk Root1 mirror System Group1 c0t600000E00D0000000001060300040000d0~ disk Root2 mirror System Group1 c0t600000E00D28000000280CC600000000d0~ ~
(*1) ルートクラス名
16a-2) ZFS ルートプール用のボリュームを構成するスライスのパーティションを確認します。
# ls -l /dev/dsk | grep c0t600000E00D0000000001060300040000d0s0 (*1) (*2) lrwxrwxrwx 1 root root 64 Feb 2 13:57 c0t600000E00D0000000001060300040000d0s0 -> ../../devices/scsi_vhci/disk@g600000e00d0000000001060300040000d0:a (*3) # ls -l /dev/dsk | grep c0t600000E00D28000000280CC600000000d0s0 (*1) (*2)
lrwxrwxrwx 1 root root 64 Feb 2 13:57 c0t600000E00D28000000280CC600000000d0s0 -> ../../devices/scsi_vhci/disk@g600000e00d28000000280cc600000000:a (*3)
(*1) 手順16a-1) で確認した物理ディスク名
(*2) 手順2) で作成したスライスのスライス番号 (この例では s0 )
(*3) スライスのパーティション
16a-3) ブートディスクの情報を確認します。
# prtconf -v /dev/rdsk/c0t600000E00D28000000280CC600000000d0s0 ~ disk, instance #0 ~ 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) ~ # prtconf -v /dev/rdsk/c0t600000E00D0000000001060300040000d0s0
~ disk, instance #0 ~ Paths from multipath bus adapters: Path 33: /pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/iport@f0/disk@w500000e0d0460306,0 lsc#3 (online) (*1) (*2) ~
(*1) diskノード名 (この例では disk@w500000e0da0cc620,0 および disk@w500000e0d0460306,0)
(*2) SAS Address (この例では 500000e0da0cc620 および 500000e0d0460306)
16a-4) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
16a-5) ディスクが接続されている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 (*2) ~ ok
(*1) デバイスパス
(*2) SAS Address(手順16a-3)の*2で確認したSAS Address)
16a-6) boot-device プロパティを設定します。
ok setenv boot-device "/pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/disk@w500000e0da0cc620,0:a
/pci@8100/pci@4/pci@0/pci@0/LSI,sas@0/disk@w500000e0d0460306,0:a" (*3)
(*3) 手順 16a-5) の デバイスパス(*1) と、手順 16a-3) のdiskノード名(*1)と、手順16a-2) のスライスのパーティション (:a) からbootデバイスを作成します。
16a-7) multipath-boot? プロパティを設定します。
ok setenv multipath-boot? true
16a-8) システムを起動します。
ok boot
[6Gbps SAS カードに接続されている増設ファイルユニットのディスク、または、SPARC M12/M10、SPARC T4-4/T4-2/T4-1/T3-4/T3-2/T3-1 の内蔵ディスクの場合 ]
16b-1) ボリュームを構成するスライスのパーティションを確認します。
[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) ボリュームを構成するスライス ( 手順 2) で作成したスライス )
(*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) ボリュームを構成するスライス ( 手順 2) で作成したスライス )
(*2) スライスのパーティション
16b-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 のパラメタ
16b-3) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
16b-4) OpenBoot 環境でシステムを起動します。
[Solaris 11.3 以前の場合]
ok boot /pci@400/pci@2/pci@0/pci@e/scsi@0/disk@w5000cca0150fea11,0:a (*4)
(*4) 手順 16b-2) の obp-path と 手順 16b-1) のパーティションを連結したデバイス名
[Solaris 11.4 以降の場合]
ok boot /pci@8000/pci@4/pci@0/pci@0/scsi@0/disk@w50000397683346aa,0:a (*4)
(*4) 手順 16b-2) の ddi-boot-path と手順 16b-1) のパーティションを連結したデバイス名
[SAN ブート環境の場合 ]
16c-1) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
16c-2) OpenBoot 環境でシステムを起動します。
ok boot /pci@5,700000/QLGC,qlc@0/fp@0,0/disk@w210000e0004101da,0 (*1)
(*1) ボリュームを構成するスライス( 手順 2) で作成したスライス) のデバイスパス名
[その他の場合 ]
16d-1) ボリュームを構成するスライスのデバイスパスを確認します。
# 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) ボリュームを構成するスライス ( 手順 2) で作成したスライス )
(*2) スライスのデバイスパス
16d-2) OpenBoot 環境に移行します。
# shutdown -y -g0 -i0
16d-3) OpenBoot 環境でデバイス名を確認し、確認結果に応じた方法でシステムを起動します。
ok show-devs /pci@1f,4000/scsi@3 (*3) ~ /pci@1f,4000/scsi@3/disk ~
(*3) 手順 16d-1) で表示されたパス (*2) から最終要素 ( この例では /sd@1,0:a) を除いたパス
上記の確認結果に応じた方法でシステムを起動します。
show-devs で表示されたパスの最終要素に "disk" であるデバイス名が出力されなかった場合:
ok boot /pci@1f,4000/scsi@3/sd@1,0:a (*4)
(*4) 手順 16d-1) で表示されたパス (*2)
show-devs で表示されたパスの最終要素に "disk" であるデバイス名が出力された場合:
ok boot /pci@1f,4000/scsi@3/disk@1,0:a (*5)
(*5) 手順 16d-1) で表示されたパス (*2) の最終要素の @ より前の部分 ( この例では sd) を disk に置き換えたパス