VERITAS VolumeManager資料一覧

ミラーリングしているディスク間の整合性が取れなくなった場合の復旧方法(OS起動ディスクの場合)

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になっていることを確認