VERITAS VolumeManager
2007/8/22更新
対応バージョン: 3.2
VolumeManager(VxVM)が管理するボリューム情報をVxVMに再認識させる。
以下の例ではHA構成のホスト2台と共有ディスク1台の構成とし、SCSIで接続されているものとする。
ホスト1
SCSIコントローラ0 | +-- 内蔵HDD | +-- 共有ディスクのSCSIコントローラ2に接続
ホスト2
SCSIコントローラ0 | +-- 内蔵HDD | +-- 共有ディスクのSCSIコントローラ2に接続
共有ディスク
SCSIコントローラ2 | +-- 内蔵HDD | +-- ホスト1のSCSIコントローラ0に接続 | +-- ホスト2のSCSIコントローラ0に接続
ここでホスト1でコントローラ2上のディスクのボリューム情報(ここではボリュームグループをapdg01とする)が見えない場合を想定する。
vxdiskコマンドにてVxVMが認識しているボリューム情報を参照すると、
# /usr/sbin/vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced - - online ← c2t0d1s2 sliced - - online
矢印部分がこのホストのapdg01として認識されている必要があるが認識されていない。
尚、それより下に表示されているc2t0d1s2はホスト2で使用しているものとするのでこのホストからみると「-」と表示されていてよい。
矢印部分をVxVMに認識させるにはvxdgコマンドのimportサブコマンドを実行する。
# /usr/sbin/vxdg -C -t import apdg01
-C : importロック解除
-t : 一時的なimport
(*) importの反対はdeportである(例 : /usr/sbin/vxdg -C deport apdg01)
その後vxdisk listを実行すると、
# /usr/sbin/vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced apdg01 apdg online ← c2t0d1s2 sliced - - online
→ apdg01が有効になった。
ちなみに、ホスト2でこのvxdisk listを実行してみると以下のようになる。
# /usr/sbin/vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced dbdg01 dbdg online
→ 今度はapdg01にあたるボリュームが「-」と表示されている。
尚、コントローラ0のディスクは内蔵ディスクなので、当然のことながら両方のホストで使用可能になっている。
2007/8/22更新
対応バージョン: 3.2
vxassistコマンドを使用する。
vxassist -g <ディスクグループ> make <ボリューム名> <サイズ>
例) ディスクグループ「testdg」にボリューム「testvol1」(5GB)を追加する。
# vxassist -g testdg make testvol1 5G
2007/8/22更新
対応バージョン: 3.2
vxlicenseコマンドの-cオプションを使用する。
# /usr/sbin/vxlicense -c Please enter your key: XXXX XXXX XXXX XXXX XXXX XXX
現在インストールされているライセンス情報を参照するには、同じくvxlicenseコマンドの-pオプションを使用する。
# /usr/sbin/vxlicense -p vrts:vxlicense: INFO: Feature name: VxVM [95] vrts:vxlicense: INFO: Number of licenses: 1 (non-floating) vrts:vxlicense: INFO: Expiration date: No expiration date vrts:vxlicense: INFO: Release Level: 25 vrts:vxlicense: INFO: Machine Class: 230596224 vrts:vxlicense: INFO: Feature name: RAID [96] vrts:vxlicense: INFO: Number of licenses: 1 (non-floating) vrts:vxlicense: INFO: Expiration date: No expiration date vrts:vxlicense: INFO: Release Level: 25 vrts:vxlicense: INFO: Machine Class: 230596224 vrts:vxlicense: INFO: Feature name: VXFS [80] vrts:vxlicense: INFO: Number of licenses: 1 (non-floating) vrts:vxlicense: INFO: Expiration date: No expiration date vrts:vxlicense: INFO: Release Level: 22 vrts:vxlicense: INFO: Machine Class: 230596224
ライセンス情報は5行を1組としてライセンスの種類毎に表示される。
この例では3つのライセンス(VxVM、RAID、VxFS)が登録されていることがわかる。
また、期限付ライセンスの場合は3行目のExpiration date:に期限切れとなる日時が表示される。
2008/3/1更新
対応バージョン: 3.2
ディスク障害でもVolumeManager(VxVM)から見て正常の場合は、それがOS起動ディスクかどうかに関わらず以下の手順でオンライン復旧が可能である。
障害ディスクをミラーから切り離す
障害ディスクを交換(ホットスワップ)
交換後のディスクをミラーに接続して再同期
以下、それぞれの手順を示す。
障害ディスクをミラーから切り離す
まず現状を確認する。
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online
VxVM上では正常に見えるが、ここでは障害ディスクがc0t1d0であるものとする。
対象となるプレックスを確認する。
# vxprint -qth Disk group: rootdg dg rootdg default default 0 1185508025.1025.mota201a dm root_disk c0t0d0s2 sliced 2888 71124291 - dm root_backup c0t1d0s2 sliced 2888 71124291 - v rootvol - ENABLED ACTIVE 62731746 ROUND - root pl rootvol-01 rootvol ENABLED ACTIVE 62731746 CONCAT - RW sd root_disk-02 rootvol-01 root_disk 2889 62731746 0 c0t0d0 ENA pl rootvol-02 rootvol ENABLED ACTIVE 62731746 CONCAT - RW sd root_backup-01 rootvol-02 root_backup 0 62731746 0 c0t1d0 ENA v swapvol - ENABLED ACTIVE 8389656 ROUND - swap pl swapvol-01 swapvol ENABLED ACTIVE 8389656 CONCAT - RW sd root_disk-01 swapvol-01 root_disk 62734635 8389656 0 c0t0d0 ENA pl swapvol-02 swapvol ENABLED ACTIVE 8389656 CONCAT - RW sd root_backup-02 swapvol-02 root_backup 62731746 8389656 0 c0t1d0 ENA
障害ディスクのプレックスをボリュームから切り離して削除する。
# vxplex -g rootdg -o rm dis rootvol-02 # vxplex -g rootdg -o rm dis swapvol-02
障害ディスクをディスクグループより切り離す。
# vxdg -g rootdg rmdisk root_backup # vxdisk list
障害ディスクをVxVMで使用できない状態にする。
# vxdiskunsetup -C c0t1d0
障害ディスクを交換する(ホットスワップ)
OSをシャットダウンすることなく、オンラインでディスク交換が可能である。
交換後のディスクをミラーに接続して再同期する
新しいディスクをVxVMで認識させる。
# vxdctl enable
VxVMでディスクを使用できる状態にする。
# vxdisksetup -i c0t1d0
ディスクグループへ追加する。
# vxdg -g rootdg adddisk root_backup=c0t1d0s2 # vxdisk list
ミラーの再同期を行う。
# vxmirror root_disk root_backup
確認
# vxprint -qth
2007/8/22更新
対応バージョン: 3.2
準備
PROMモニタでCD-ROMのデバイス名を調べる
ok probe-scsi-all : /pci@1f,4000/scsi@3,1 Target 6 Unit 0 Removable Read Only device PLEXTOR CD-ROM PX-40TS 1.13 :
→ CD-ROMのデバイス名を確認する。上記の場合は「/pci@1f...」の部分。
CD-ROMで起動する(プライマリディスクにfsckをかけるため)
probe-scsi-allで検出したデバイス名に「disk@6,0:f」を付加してシングルユーザモード(-s)で起動する。
ok boot /pci@1f,4000/scsi@3,1/disk@6,0:f -s
fsck
# fsck /dev/rdsk/c0t0d0s0
シャットダウン
# init 0
ミラーディスクを(物理的に)抜く
リブート
ok boot -sw
OSブート時、あるいはシャットダウン時にSun純正以外のinitスクリプトが起動しないようにスクリプト名を変更(ファイル名の先頭に「_」を付ける)
# cd /etc/rc0.d # mv xx _xx (スクリプト数分) # cd /etc/rc2.d # mv xx _xx (スクリプト数分) # cd /etc/rc3.d # mv xx _xx (スクリプト数分)
VxVM関連のデーモンを起動する
# logout (run level 3に移行する)
プライマリディスクのバックアップ
# ufsdump 0f /dev/rmt/0 /dev/rdsk/c0t0d0s0
ミラーディスクの切り離し
現状の確認
# vxprint Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 dg rootdg rootdg - - - - - - dm root_backup - - - - NODEVICE - - dm root_disk c0t0d0s2 - 71124291 - - - - v rootvol root ENABLED 62928198 - ACTIVE - - pl rootvol-01 rootvol ENABLED 62928198 - ACTIVE - - sd root_disk-02 rootvol-01 ENABLED 62928198 0 - - - pl rootvol-02 rootvol DISABLED 62928198 - NODEVICE - - sd root_backup-01 rootvol-02 DISABLED 62928198 0 NODEVICE - - v swapvol swap ENABLED 8193204 - ACTIVE - - pl swapvol-01 swapvol ENABLED 8193204 - ACTIVE - - sd root_disk-01 swapvol-01 ENABLED 8193204 0 - - - pl swapvol-02 swapvol DISABLED 8193204 - NODEVICE - - sd root_backup-02 swapvol-02 DISABLED 8193204 0 NODEVICE - -
→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がNODEVICEになっている。
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online - - root_backup rootdg failed was:c0t1d0s2
→ ミラーディスク(root_backup)がfailed状態になっている。
rootdgディスクグループからミラーディスク(root_backup)を削除する
# vxdg -g rootdg -k rmdisk root_backup
確認
# vxprint Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 dg rootdg rootdg - - - - - - dm root_backup - - - - REMOVED - - dm root_disk c0t0d0s2 - 71124291 - - - - v rootvol root ENABLED 62928198 - ACTIVE - - pl rootvol-01 rootvol ENABLED 62928198 - ACTIVE - - sd root_disk-02 rootvol-01 ENABLED 62928198 0 - - - pl rootvol-02 rootvol DISABLED 62928198 - REMOVED - - sd root_backup-01 rootvol-02 DISABLED 62928198 0 REMOVED - - v swapvol swap ENABLED 8193204 - ACTIVE - - pl swapvol-01 swapvol ENABLED 8193204 - ACTIVE - - sd root_disk-01 swapvol-01 ENABLED 8193204 0 - - - pl swapvol-02 swapvol DISABLED 8193204 - REMOVED - - sd root_backup-02 swapvol-02 DISABLED 8193204 0 REMOVED - -
→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がNODEVICEからREMOVEDに変化している。
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online - - root_backup rootdg removed was:c0t1d0s2
→ ミラーディスク(root_backup)がfailedからremovedに変化している。
ミラーディスクの初期化
ミラーディスクを(物理的に)挿入
ミラーディスクのプライベートリージョンを削除する。こうしておかないと次回VolumeManager起動時にディスクが破損する。
# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1f,4000/scsi@3/sd@0,0 1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1f,4000/scsi@3/sd@1,0 2. c2t0d0 <HITACHI-DF500- cyl 5442 alt 2 hd 50 sec 768> /pci@1f,4000/scsi@2/sd@0,0 3. c2t0d1 <HITACHI-DF500- cyl 5442 alt 2 hd 50 sec 768> /pci@1f,4000/scsi@2/sd@0,1 Specify disk (enter its number): 1 ← 挿入したディスク selecting c0t1d0 [disk formatted] FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table : quit format> p ← パーティションテーブル操作 PARTITION MENU: 0 - change `0' partition : 7 - change `7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk !<cmd> - execute <cmd>, then return quit partition> p ← パーティションテーブル表示 Current partition table (original): Total disk cylinders available: 24620 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 1 - 21782 30.01GB (21782/0/0) 62928198 1 unassigned wm 0 0 (0/0/0) 0 2 backup wm 0 - 24619 33.92GB (24620/0/0) 71127180 3 - wu 0 - 0 1.41MB (1/0/0) 2889 4 - wu 1 - 24619 33.91GB (24619/0/0) 71124291 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 partition> mod ← パーティションテーブル変更 Select partitioning base: 0. Current partition table (original) 1. All Free Hog Choose base (enter number) [0]? 1 ← パーティション情報を削除 Part Tag Flag Cylinders Size Blocks 0 root wm 0 0 (0/0/0) 0 1 swap wu 0 0 (0/0/0) 0 2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 usr wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 Do you wish to continue creating a new partition table based on above table[yes]? ← リターン Free Hog partition[6]? 7 ← Free Hog(余り)領域のパーティションを指定 Enter size of partition '0' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Enter size of partition '6' [0b, 0c, 0.00mb, 0.00gb]: ← リターン Part Tag Flag Cylinders Size Blocks 0 root wm 0 0 (0/0/0) 0 1 swap wu 0 0 (0/0/0) 0 2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 usr wm 0 0 (0/0/0) 0 7 unassigned wm 0 - 24619 33.92GB (24620/0/0) 71127180 Okay to make this the current partition table[yes]? ← リターン Enter table name (remember quotes): c0t1 ← パーティションテーブルの名前(なんでもよい) Ready to label disk, continue? y ← ラベリング partition> q : format> q
ファイルシステム作成
# newfs /dev/rdsk/c0t1d0s7 newfs: construct a new file system /dev/rdsk/c0t1d0s7: (y/n)? y ← y /dev/rdsk/c0t1d0s7: sector: 71127180 (cylinder: 24620、track: 27、sector: 107) 34730.1MB、770 cylinder group (32 c/g, 45.14MB/g, 5632 i/g) : 32, 92592, 185152, 277712, 370272, 462832, 555392, 647952, 740512, 833072, :
VxVM関連のプロセスが動作しているか確認
# ps -ef | grep vx root 15 1 0 19:16:50 ? 0:01 vxconfigd -m boot root 347 1 0 19:18:47 ? 0:00 /sbin/sh - /usr/lib/vxvm/bin/vxrelocd root root 353 347 0 19:18:47 ? 0:00 /sbin/sh - /usr/lib/vxvm/bin/vxrelocd root root 354 353 0 19:18:47 ? 0:00 vxnotify -f -w 15
→ 4プロセス動作していることを確認する。
デバイス検出
# vxdctl enable
確認
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced - - error c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online - - root_backup rootdg removed was:c0t1d0s2
→ c0t1d0s2がerror状態になっている。
ミラーディスクの再設定
VxVMで設定するディスクの指定
# /usr/lib/vxvm/bin/vxdisksetup -i c0t1d0
rootdgディスクグループにミラーディスクを追加
# vxdg -g rootdg -k adddisk root_backup=c0t1d0s2
確認
# vxprint Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 dg rootdg rootdg - - - - - - dm root_backup c0t1d0s2 - 71124291 - - - - dm root_disk c0t0d0s2 - 71124291 - - - - v rootvol root ENABLED 62928198 - ACTIVE - - pl rootvol-01 rootvol ENABLED 62928198 - ACTIVE - - sd root_disk-02 rootvol-01 ENABLED 62928198 0 - - - pl rootvol-02 rootvol DISABLED 62928198 - RECOVER - - sd root_backup-01 rootvol-02 ENABLED 62928198 0 - - - v swapvol swap ENABLED 8193204 - ACTIVE - - pl swapvol-01 swapvol ENABLED 8193204 - ACTIVE - - sd root_disk-01 swapvol-01 ENABLED 8193204 0 - - - pl swapvol-02 swapvol DISABLED 8193204 - RECOVER - - sd root_backup-02 swapvol-02 ENABLED 8193204 0 - - -
→ ミラーディスクのボリューム(rootvol-02、swapvol-02)がREMOVEDからRECOVERに変化している。
VxVM関連の今までの処理を確定
# vxdctl enable
確認
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online
→ c0t1d0s2がerrorからonlineに変化している。
ミラーディスクの同期
rootvol、swapvol共に同期指示
# vxrecover -v job 001242 dg rootdg volume rootvol: reattach plex rootvol-02 job 001239 done status=0 job 002216 dg rootdg volume swapvol: reattach plex swapvol-02 job 002216 done status=0
上記処理は時間がかかるので以下のコマンドで途中経過を確認できる。
# vxtask list TASKID PTID TYPE/STATE PCT PROGRESS 160 PARENT/R 0.00% 2/0(1) VXRECOVER 161 161 ATCOPY/R 02.80% 0/62928198/1762784 PLXATT rootvol 0.0
同期が終了するとvxtaskで何も表示されなくなる。
# vxtask list TASKID PTID TYPE/STATE PCT PROGRESS
リブート
# init 0 : ok boot
確認
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online
→ 全てのデバイスがonlineになっていることを確認
後処理
OSブート時、あるいはシャットダウン時に起動しない設定にしていたinitスクリプトを元に戻す。
# cd /etc/rc0.d # mv _xx xx (スクリプト数分) # cd /etc/rc2.d # mv _xx xx (スクリプト数分) # cd /etc/rc3.d # mv _xx xx (スクリプト数分)
リブート
# init 0 : ok boot
確認
# vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online c2t0d0s2 sliced - - online c2t0d1s2 sliced - - online
→ 全てのデバイスがonlineになっていることを確認
2007/10/15更新
対応バージョン: 3.2
DiskSuite等ではrootボリュームとしてスライス0を使用するが、VolumeManagerはこれら既存のスライスから独立してディスク全体(cXtXdXs2)を自身の管理下に置いてRAIDボリューム(DiskSuiteでのメタデバイス)を構成する。これはどのRAIDレベルも同じ扱いである。
例)
# vxdisk -g rootdg list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced root_disk rootdg online c0t1d0s2 sliced root_backup rootdg online
2007/8/22更新
対応バージョン: 3.2
vxdg、vxstatを使用する。
例)
# vxdg list NAME STATE ID rootdg enabled 1018423197.1043.motd201a apdg enabled 1018574452.1114.mota201a # vxdg list rootdg Group: rootdg dgid: 1018423197.1043.motd201a import-id: 0.1 flags: version: 80 detach-policy: global copies: nconfig=default nlog=default config: seqno=0.1455 permlen=2112 free=2104 templen=6 loglen=320 config disk c0t0d0s2 copy 1 len=2112 state=clean online config disk c0t1d0s2 copy 1 len=2112 state=clean online log disk c0t0d0s2 copy 1 len=320 log disk c0t1d0s2 copy 1 len=320
# vxstat -g rootdg OPERATIONS BLOCKS AVG TIME(ms) TYP NAME READ WRITE READ WRITE READ WRITE vol rootvol 1937645 2161920 115967230 35782158 4.0 327.3 vol swapvol 91233 7961 8628772 2031856 7.8 20.8
2007/8/22更新
対応バージョン: 3.2
VolumeManagerはDMPドライバを内蔵している。
DMPの実現方法は2通りあるが、
Active/Active : I/Oスループットが2倍
Active/Passive : I/Oスループットはそのまま(片系がスタンバイ)
ディスクコントローラによってDMPのサポートのしかたが異なるので単純にDMPサポートだからといってI/Oスループットが2倍になるわけではないので注意が必要である。
2007/8/22更新
対応バージョン: 3.2
以下のようなものがある。
統合管理ツール
/opt/VRTSvmsa/bin/vmsa
VxVMサーバ
/opt/VRTSvmsa/bin/vmsa_server