Dell Optiplex GXa SolarisTM 9  x86  12/02

内蔵ディスクのミラーリング

戻る
OS付属のSolaris Volume Manager (旧DiskSuite)を使用して、内蔵ディスクをRAID-1化する。 勤務先で運用しているサーバーのHardDiskがクラッシュする事故は何度も経験している。 この自宅マシンもずっと以前にクラッシュしてしまったことがある。OSをSolaris9にするついでに、 RAID化することにした。 予めインストール時に同型番のHardDiskを入れた状態でセットアップしてある。 Solaris 8 以前の頃は、OSとは別にDiskSuiteのパッケージを手動でインストールする必要があったが、 Solaris 9の Volume Manager はOSインストール時に一緒にインストールされるようになった。 OSインストール時には、先に片方のDiskだけにセットアップを行い、後に以下のようにもう片方の Diskのミラー設定を行うことになる。 (但し、OSインストール時にmeta領域用に未使用のスライスを確保しておく必要がある。) メタデバイスの識別名はこのようにすることにする。
スライス プライマリDisk セカンダリDisk ミラーデバイス名 マウントポイント
0 d11 d12 d10 /
1 d21 d22 d20 /var
3 d31 d32 d30 swap
4 d41 d42 d40 /opt
5 d51 d52 d50 /usr
6 d61 d62 d60 /export/home
1台目のDiskのmeta領域の作成
formatコマンドを起動する。
# format Searching for disks...done
プライマリのディスク (0) を選択する。
AVAILABLE DISK SELECTIONS: 0. c0d0 <DEFAULT cyl 59832 alt 2 hd 64 sec 63> /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0 1. c0d1 <DEFAULT cyl 59833 alt 2 hd 64 sec 63> /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0 Specify disk (enter its number): 0 selecting c0d0 Controller working list found [disk formatted, defect list found] Warning: Current Disk has mounted partitions. FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk fdisk - run the fdisk program repair - repair a defective sector show - translate a disk address label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions volname - set 8-character volume name !<cmd> - execute <cmd>, then return quit
パーティションを選択する。
format> partition PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' 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
meta領域用のスライス(7)を作成する。
partition> 7 Part Tag Flag Cylinders Size Blocks 7 unassigned wm 0 0 (0/0/0) 0 Enter partition id tag[unassigned]:Enter Enter partition permission flags[wm]:Enter Enter new starting cyl[0]: 59781 Enter partition size[0b, 0c, 59781e, 0.00mb, 0.00gb]: 51c partition>
設定を保存する。
partition> label Ready to label disk, continue? yes
現在のパーティション構成を表示させ、下記の青字の部分をメモしておく。
partition> print Current partition table (original): Total disk cylinders available: 59832 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 3 - 1563 3.00GB (1561/0/0) 6293952 1 var wm 1564 - 9365 15.00GB (7802/0/0) 31457664 2 backup wm 0 - 59831 115.03GB (59832/0/0) 241242624 3 swap wu 9366 - 10406 2.00GB (1041/0/0) 4197312 4 unassigned wm 10407 - 18208 15.00GB (7802/0/0) 31457664 5 usr wm 18209 - 20809 5.00GB (2601/0/0) 10487232 6 home wm 20810 - 59780 74.93GB (38971/0/0) 157131072 7 unassigned wm 59781 - 59831 100.41MB (51/0/0) 205632 8 boot wu 0 - 0 1.97MB (1/0/0) 4032 9 alternates wu 1 - 2 3.94MB (2/0/0) 8064
パーティションメニューから抜ける
partition> quit
2台目のDiskのパーティション設定
現在プライマリのディスクが選択されているので、選択ディスクをセカンダリに変更する。
format> disk AVAILABLE DISK SELECTIONS: 0. c0d0 <DEFAULT cyl 59832 alt 2 hd 64 sec 63> /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0 1. c0d1 <DEFAULT cyl 59833 alt 2 hd 64 sec 63> /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0 Specify disk (enter its number): 1
セカンダリのディスクは未フォーマット(まっさら)で、内容が読み取れないので どのような内容なのかを訊ねられる。とりあえずデフォルトを選択する。
AVAILABLE DRIVE TYPES: 0. DEFAULT 1. other Specify disk type (enter its number): 0 selecting c0d1 No current partition list No defect list found [disk formatted, no defect list found]
fdiskを起動してパーティションタイプを全てSolarisに設定する。
format> fdisk No fdisk table exists. The default partition for the disk is: a 100% "SOLARIS System" partition Type "y" to accept the default partition, otherwise type "n" to edit the partition table. y
パーティションを選択する。
format> partition PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' 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 ! - execute , then return quit
パーティション構成の修正を開始して、上記でメモしたプライマリDiskのパーティション と同じ構成に設定する。
partition> modify Select partitioning base: 0. Current partition table (unnamed) 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 - 59831 115.03GB (59832/0/0) 241242624 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 8 boot wu 0 - 0 1.97MB (1/0/0) 4032 9 alternates wm 1 - 2 3.94MB (2/0/0) 8064 Do you wish to continue creating a new partition table based on above table[yes]? yes Free Hog partition[6]? 7 Enter size of partition '0' [0b, 0c, 0.00mb, 0.00gb]: 1561c Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: 7802c Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]: 1041c Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]: 7802c Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]: 2601c Enter size of partition '6' [0b, 0c, 0.00mb, 0.00gb]: 38971c Part Tag Flag Cylinders Size Blocks 0 root wm 3 - 1563 3.00GB (1561/0/0) 6293952 1 swap wu 1564 - 9365 15.00GB (7802/0/0) 31457664 2 backup wu 0 - 59831 115.03GB (59832/0/0) 241242624 3 unassigned wm 9366 - 10406 2.00GB (1041/0/0) 4197312 4 unassigned wm 10407 - 18208 15.00GB (7802/0/0) 31457664 5 unassigned wm 18209 - 20809 5.00GB (2601/0/0) 10487232 6 usr wm 20810 - 59780 74.93GB (38971/0/0) 157131072 7 unassigned wm 59781 - 59831 100.41MB (51/0/0) 205632 8 boot wu 0 - 0 1.97MB (1/0/0) 4032 9 alternates wm 1 - 2 3.94MB (2/0/0) 8064 Okay to make this the current partition table[yes]? yes Enter table name (remember quotes): disk1 Ready to label disk, continue? yes
formatを終了する。
partition> quit format> quit #
プライマリDiskのmeta領域用スライスにファイルシステムを作成する。
# newfs c0d0s7 newfs: construct a new file system /dev/rdsk/c0d0s7: (y/n)? y /dev/rdsk/c0d0s7: 全セクタ数: 205632 (シリンダ数: 51、トラック数: 64、セクタ数: 63) 100.4MB、4 シリンダグループ (16 c/g, 31.50MB/g, 15104 i/g) スーパーブロックのバックアップの位置 (fsck -F ufs -o b=# のため) : 32, 64608, 129184, 193760,
同じ要領でセカンダリDiskの全てのスライスにファイルシステムを作成していく。
# newfs c0d1s0 # newfs c0d1s1 # newfs c0d1s3 # newfs c0d1s4 # newfs c0d1s5 # newfs c0d1s6 # newfs c0d1s7
meta領域の宣言
両Diskのスライス7をmeta領域として宣言する。
# metadb -a -f -c 2 c0d0s7 c0d1s7
デフォルトのvfstabをバックアップしておく。
# cp /etc/vfstab /etc/vfstab.default
root領域のミラー設定
プライマリDiskのrootスライスを設定する。
# metainit -f d11 1 1 c0d0s0 d11: 連結/ストライプがセットアップされます
セカンダリDiskのrootスライスを設定する。
# metainit d12 1 1 c0d1s0 d12: 連結/ストライプがセットアップされま
root領域のミラーを作成する。
# metainit d10 -m d11
root領域のミラーを宣言する。
# metaroot d10
root領域はアンマウントできないので、ロック状態をコマンドで変更する。
# lockfs -fa
一旦リブートさせる。
#sync ; sync ; /usr/sbin/shutdown -y -g0 -i6
再起動したら、root領域の同期を開始させる。
# metattach d10 d12 d10: サブミラー d12 は接続中
swap領域のミラー設定
続いて、プライマリDiskのswap領域(スライス3)を設定する。
# metainit -f d31 1 1 c0d0s3 d31: 連結/ストライプがセットアップされます
セカンダリDiskのswap領域(スライス3)を設定する。
# metainit -f d32 1 1 c0d1s3 d32: 連結/ストライプがセットアップされます
swap領域のミラーを設定する。
# metainit d30 -m d31 d30: ミラーがセットアップされます
viで/etc/vfstab を開く。
# vi /etc/vfstab
swapの行を以下のように書き換えて保存する。
/dev/md/dsk/d30 - - swap - no -
一旦リブートさせる。
#sync ; sync ; /usr/sbin/shutdown -y -g0 -i6
再起動したら、swap領域の同期を開始させる。
# metattach d30 d32 d30: サブミラー d32 は接続中
全領域のミラー設定
続いて、プライマリDiskの他のスライス全ての設定をする。
# metainit -f d21 1 1 c0d0s1 d21: 連結/ストライプがセットアップされます # metainit -f d41 1 1 c0d0s4 d41: 連結/ストライプがセットアップされます # # metainit -f d51 1 1 c0d0s5 d51: 連結/ストライプがセットアップされます # # metainit -f d61 1 1 c0d0s6 d61: 連結/ストライプがセットアップされます
セカンダリDiskの他のスライス全ての設定をする。
# metainit d22 1 1 c0d1s1 d22: 連結/ストライプがセットアップされます # # metainit d42 1 1 c0d1s4 d42: 連結/ストライプがセットアップされます # # metainit d52 1 1 c0d1s5 d52: 連結/ストライプがセットアップされます # # metainit d62 1 1 c0d1s6 d62: 連結/ストライプがセットアップされます
全ての領域のミラーを設定する。
# metainit d20 -m d21 d20: ミラーがセットアップされます # # metainit d40 -m d41 d40: ミラーがセットアップされます # # metainit d50 -m d51 d50: ミラーがセットアップされます # # metainit d60 -m d61 d60: ミラーがセットアップされます
viで/etc/vfstab を開く。
# vi /etc/vfstab
上記の領域の行を以下のように書き換えて保存する。
/dev/md/dsk/d50 /dev/md/rdsk/d50 /usr ufs 1 no - /dev/md/dsk/d20 /dev/md/rdsk/d20 /var ufs 1 no - /dev/md/dsk/d60 /dev/md/rdsk/d60 /export/home ufs 2 yes - /dev/md/dsk/d40 /dev/md/rdsk/d40 /opt ufs 2 yes -
一旦リブートさせる。
#sync ; sync ; /usr/sbin/shutdown -y -g0 -i6
再起動したら、全ての領域の同期を開始させる。
# metattach d20 d22 d20: サブミラー d22 は接続中 # # metattach d40 d42 d40: サブミラー d42 は接続中 # # metattach d50 d52 d50: サブミラー d52 は接続中 # # metattach d60 d62 d60: サブミラー d62 は接続中
確 認
コマンドmetastatで現在の状態を確認できる。
# metastat
通常運用時にmetastatをそのまま使っていると少々見辛いので、以下のようにすると異常がないか? を簡単に見分けることが出来る。
# metastat | grep State | grep -v Device | sed 's/ //g'