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'