今回のGLTも、日本オラクル様の大バックアップ付きです。
すばらしい。
次回のテーマは、このようにして決まりました。
</object>
「プレゼンテーションソフトを使わずに、RGB出力からスクリーンに情報を表示して行うLT」
初めて、テーマが採用されました。
テーマ決めるのは、難しいですね。
次回の日程は、12/3です。
詳細は、公式wikiで要チェックです。
Solaris 10でSVMを使ったミラーリング 前編のつづき。
苦労の末に出来たスライスに、ディスクデータ領域のデータベースの複製を行う。
# metadb -a -f c1t0d0s4 c1t1d0s4 c1t2d0s4 c1t3d0s4
このとき、誤って違うスライスを登録した場合、削除は以下のコマンドで行う。
# metadb -f -d ディスクスライス
データベースの確認をする
# metadb
flags first blk block count
a m p luo 16 8192 /dev/dsk/c1t0d0s4
a p luo 16 8192 /dev/dsk/c1t1d0s4
a p luo 16 8192 /dev/dsk/c1t2d0s4
a p luo 16 8192 /dev/dsk/c1t3d0s4
次に、RAID 1を組むわけだが、どのスライスをミラーするのか考える。
今回は、disk0とdisk1、disk2とdisk3で構成する。
パーティション情報から、次のように考える
d10 /
d20 swap その1
d30 /export
d40 /opt
d50 /usr
d60 swap その2
d70 /export/home
そこで、d*1には、disk0, disk2が、d*2にはdisk1, disk3がそれぞれスライスごとに割り当てられる。
d10 = d11:c1t0d0s0 + d12:c1t1d0s0
d20 = d21:c1t0d0s1 + d22:c1t1d0s1
d30 = d31:c1t0d0s3 + d32:c1t1d0s3
d40 = d41:c1t0d0s5 + d42:c1t1d0s5
d50 = d51:c1t0d0s6 + d52:c1t1d0s6
d60 = d61:c1t2d0s1 + d62:c1t3d0s1
d70 = d71:c1t2d0s7 + d72:c1t3d0s7
では、このような設計になるように、ファイルデータベースにスライスを登録していく
# metainit -f d11 1 1 c1t0d0s0
d11: Concat/Stripe is setup
# metainit d12 1 1 c1t1d0s0
d12: Concat/Stripe is setup
(ミラーするディスクの場合、オプションの-fは不要)
名前をつけ間違えた場合は、消してからやり直す。
消すときは、以下のコマンドを入力する。
# metaclear -a
ミラーを作る
# metainit d10 -m d11
d10: Mirror is setup
このとき、d10は"/"(ルート)なので、ルートですよって登録を行う
# metaroot d10
# lockfs -fa
登録が出来たら、/etc/vfstab の"/"が下記のように書き換わる。
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no -
この段階で、一度再起動を行う。
# shutdown -i0 -g0
ok boot -s
再起動後、実際に起動しているディスクの複写(ミラーリング)を行う。
# metattach d10 d12
d10: submirror d12 is attached
ミラーしているか確認
# metastat
d10: ミラー
サブミラー 0: d11
状態: 正常
サブミラー 1: d12
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 33814848 ブロック (16 GB)
d11: d10 のサブミラー
状態: 正常
サイズ: 33814848 ブロック (16 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s0 0 No 正常 Yes
d12: d10 のサブミラー
状態: 正常
サイズ: 33814848 ブロック (16 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s0 0 No 正常 Yes
Device Relocation Information:
Device Reloc Device ID
c1t1d0 はい id1,sd@THITACHI_DK32EJ-72NC_____41437598
c1t0d0 はい id1,sd@THITACHI_DK32EJ-72NC_____414Y7561
これができたら、残りのスライスも同じ手順で行う。
ただし、metarootで/etc/vfstab を書き換えてくれるわけではないので、スライスごとに割り当て部分を手動で書き換えていく。
最終的な/etc/vfstab は、以下のようになる。
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
#/dev/dsk/c1t0d0s1 - - swap - no -
/dev/md/dsk/d20 - - swap - no -
#/dev/dsk/c1t2d0s1 - - swap - no -
/dev/md/dsk/d60 - - swap - no -
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no -
#/dev/dsk/c1t0d0s6 /dev/rdsk/c1t0d0s6 /usr ufs 1 no -
/dev/md/dsk/d50 /dev/md/rdsk/d50 /usr ufs 1 no -
#/dev/dsk/c1t0d0s3 /dev/rdsk/c1t0d0s3 /export ufs 2 yes -
/dev/md/dsk/d30 /dev/md/rdsk/d30 /export ufs 2 yes -
#/dev/dsk/c1t2d0s7 /dev/rdsk/c1t2d0s7 /export/home ufs 2 yes -
/dev/md/dsk/d70 /dev/md/rdsk/d70 /export/home ufs 2 yes -
#/dev/dsk/c1t0d0s5 /dev/rdsk/c1t0d0s5 /opt ufs 2 yes -
/dev/md/dsk/d40 /dev/md/rdsk/d40 /opt ufs 2 yes -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -
metarootでは、自動的に書き換えてくれているので、コメントとして残せていないが、手動で買えた部分は#でコメントアウトしているので、修正の参考にしてください。
参考サイトでは、各スライスごとに再起動していたが、ミラーを始めている関係上、しょっちゅう再起動するのは、どうかと思ったので、私の場合は、swapのミラー化(d20とd60)、その他のミラー化(d30, d40, d50, d70)の順に行った。
最終的なミラー状況は以下のとおりです。
# metastat
d70: ミラー
サブミラー 0: d71
状態: 正常
サブミラー 1: d72
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 126141696 ブロック (60 GB)
d71: d70 のサブミラー
状態: 正常
サイズ: 126141696 ブロック (60 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t2d0s7 0 No 正常 Yes
d72: d70 のサブミラー
状態: 正常
サイズ: 126141696 ブロック (60 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t3d0s7 0 No 正常 Yes
d60: ミラー
サブミラー 0: d61
状態: 正常
サブミラー 1: d62
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 17054976 ブロック (8.1 GB)
d61: d60 のサブミラー
状態: 正常
サイズ: 17054976 ブロック (8.1 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t2d0s1 0 No 正常 Yes
d62: d60 のサブミラー
状態: 正常
サイズ: 17054976 ブロック (8.1 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t3d0s1 0 No 正常 Yes
d50: ミラー
サブミラー 0: d51
状態: 正常
サブミラー 1: d52
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 37559616 ブロック (17 GB)
d51: d50 のサブミラー
状態: 正常
サイズ: 37559616 ブロック (17 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s6 0 No 正常 Yes
d52: d50 のサブミラー
状態: 正常
サイズ: 37559616 ブロック (17 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s6 0 No 正常 Yes
d40: ミラー
サブミラー 0: d41
状態: 正常
サブミラー 1: d42
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 37559616 ブロック (17 GB)
d41: d40 のサブミラー
状態: 正常
サイズ: 37559616 ブロック (17 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s5 0 No 正常 Yes
d42: d40 のサブミラー
状態: 正常
サイズ: 37559616 ブロック (17 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s5 0 No 正常 Yes
d30: ミラー
サブミラー 0: d31
状態: 正常
サブミラー 1: d32
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 17207616 ブロック (8.2 GB)
d31: d30 のサブミラー
状態: 正常
サイズ: 17207616 ブロック (8.2 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s3 0 No 正常 Yes
d32: d30 のサブミラー
状態: 正常
サイズ: 17207616 ブロック (8.2 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s3 0 No 正常 Yes
d20: ミラー
サブミラー 0: d21
状態: 正常
サブミラー 1: d22
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 17054976 ブロック (8.1 GB)
d21: d20 のサブミラー
状態: 正常
サイズ: 17054976 ブロック (8.1 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s1 0 No 正常 Yes
d22: d20 のサブミラー
状態: 正常
サイズ: 17054976 ブロック (8.1 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s1 0 No 正常 Yes
d10: ミラー
サブミラー 0: d11
状態: 正常
サブミラー 1: d12
状態: 正常
パス: 1
読み込みオプション: roundrobin (デフォルト)
書き込みオプション: parallel (デフォルト)
サイズ: 33814848 ブロック (16 GB)
d11: d10 のサブミラー
状態: 正常
サイズ: 33814848 ブロック (16 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t0d0s0 0 No 正常 Yes
d12: d10 のサブミラー
状態: 正常
サイズ: 33814848 ブロック (16 GB)
ストライプ 0:
デバイス 開始ブロック Dbase 状態 Reloc ホットスペア
c1t1d0s0 0 No 正常 Yes
Device Relocation Information:
Device Reloc Device ID
c1t3d0 はい id1,sd@THITACHI_DK32EJ-72NC_____415K0032
c1t1d0 はい id1,sd@THITACHI_DK32EJ-72NC_____41437598
c1t2d0 はい id1,sd@THITACHI_DK32EJ-72NC_____41443830
c1t0d0 はい id1,sd@THITACHI_DK32EJ-72NC_____414Y7561
そのため、metastatで表示される順がdの数の昇順で表示されていません。
metastatは、作ったミラーをstackして表示しています。
これが気になる人は、設計の段階で番号の振り方を考えましょう。
RAIDを考えてこのページに来た方は、ぜひ、インストールの段階で、スライスを切るところから注意してください。
また、今回はホットスワップに対応できるように手続きしていませんので、注意してください。
SunFIRE V440にSolaris 10 10/09をインストールした。
内蔵されているHD4台のうち、2台のHDを利用した。
インストールしたHDは、以下のようにスライスを切ってある。
disk 0
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 3382 - 6704 16.12GB (3323/0/0) 33814848
1 swap wu 0 - 1690 8.21GB (1691/0/0) 17207616
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
3 unassigned wm 1691 - 3381 8.21GB (1691/0/0) 17207616
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 10396 - 14086 17.91GB (3691/0/0) 37559616
6 usr wm 6705 - 10395 17.91GB (3691/0/0) 37559616
7 unassigned wm 0 0 (0/0/0) 0
disk 2
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 swap wu 0 - 1690 8.21GB (1691/0/0) 17207616
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
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 unassigned wm 0 0 (0/0/0) 0
7 home wm 1691 - 14086 60.15GB (12396/0/0) 126141696
これは、disk0とdisk1, disk2とdisk3でそれぞれミラーリングをしようと思ったので、こう切ってみた。
ところが、これが後で失敗の元になるが、それはおいておこう。
Solaris 10でRAIDするために使うツールは、Solaris Volume Managerである。
GUIを使いたい場合は、Solaris管理コンソールを以下のコマンドで呼び出す。
# smc
Javaで動いているので、そこそこ重い。
ただし、このGUIではいまひとつ使い方が良くわからなかった。
そこで、Solaris Volume Manager(SVM)でミラーリング(RAID1) を見ながら設定を行った。
ここでも、スライスの話題にふれられていた。何が問題というと、RAIDのマッピング情報を記録する専用のスライスが必要だということ。
・・・そういうことは、OSのインストールの説明の段階で早く書いてもらいたいなぁ
切っていません。そこでどうするのかというと、全てのスライスを使っていなかったのが幸い。
しょうがないので、swap領域を削って、その分を確保した。
確保する場合、以下の手順で行った。
まずシングルユーザーモードにする
# init S
まず、swap領域を確認する
# swap -l
/dev/dsk/c1t0d0s1, /dev/dsk/c1t2d0s1 が確認できた。
そこで、swap領域を解除したいのだが、参考サイトの場合は、swapコマンドで解除が完全に出来るようなのだが、実際はうまくいかなかったので、/etc/vfstab のswap領域をコメントアウトする。
#/dev/dsk/c1t0d0s1 - - swap - no -
#/dev/dsk/c1t2d0s1 - - swap - no -
#swap - /tmp tmpfs - yes -
上記のように修正が終わったら、もう一度シングルユーザーモードで再起動する。
# shutdown -i0 -g0
ok boot -s
再起動して、プロンプトが出たら、スライスの変更を行う。
参考サイトの様子から、15ブロック空けばいいようなので、swapから15ブロック削って、スライスの4番目にその分を割り当てしなおした。
「partition> 」のプロンプトが出ているところで、直したいスライス番号を入力する。
最初はswapなので、1を入力後、「パーティションラベル」、「フラグ」、「開始シリンダブロック」、「サイズ」の順で聞かれるので、「サイズ」のところで、15ブロック分少ないシリンダの数「1675e」を入力する。このとき最後の「e」を忘れてはいけない。
次に「partition> 」のプロンプトが出ているところで、再度割り当て直したいスライス番号「4」を入力する。
「パーティションラベル」、「フラグ」は、そのまま。
「開始シリンダブロック」は、先程、swapの最後に入力した値に1を加えた「1676」を入力する。「サイズ」は、もともとのswapの最後のシリンダ「1690e」を入力する。このときも最後の「e」を忘れてはいけない。
「partition> 」のプロンプトが出たところで、「print」を入力し、シリンダ番号が正しく変わっているか確認をして、変更を書き込む「label」を入力する。
その結果は以下のようになる。
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@1f,700000/scsi@2/sd@0,0
1. c1t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@1f,700000/scsi@2/sd@1,0
2. c1t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@1f,700000/scsi@2/sd@2,0
3. c1t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@1f,700000/scsi@2/sd@3,0
Specify disk (enter its number): 0
format> partition
partition> print
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 3382 - 6704 16.12GB (3323/0/0) 33814848
1 swap wu 0 - 1675 8.13GB (1676/0/0) 17054976
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
3 unassigned wm 1691 - 3381 8.21GB (1691/0/0) 17207616
4 unassigned wm 1676 - 1690 74.53MB (15/0/0) 152640
5 unassigned wm 10396 - 14086 17.91GB (3691/0/0) 37559616
6 usr wm 6705 - 10395 17.91GB (3691/0/0) 37559616
7 unassigned wm 0 0 (0/0/0) 0
再度「partition> 」のプロンプトが出たら、終了の「quit]を入力する。
「format>」のプロンプトが出たら、次は、diskを変えて設定をしたい。
「format>」のあとに「disk」と入力すると、先程のformatコマンド入力直後と同じようにディスクが選択できるので、順に残りも行う。
disk1は、disk0と全てのスライスが同じシリンダ番号になるように、設定をしなおす。
disk2は、disk0同様の手順でswapを削って、スライス4に削ったシリンダ番号を与える。
disk3は、disk2と全てのスライスが同じシリンダ番号になるように、設定をしなおす。
対になるディスクのシリンダが同じになったところで、「format>」のプロンプトが出たら、終了の「quit]を入力する。
これで、変更作業が完了する。
変更が完了したところで、ファイルシステムの再割り当てが必要になる。
# newfs /dev/rdsk/c1t0d0s4
ファイルシステムのチェック
# fsck -F ufs /dev/rdsk/c1t0d0s4
これを修正をしたスライス全てに対して行う。
ただし、swapについては、行う必要が無い。
disk1とdisk3は、結構な数を行わなくてはいけないので、入力ミスに気をつけましょう。
# newfs /dev/rdsk/c1t0d0s4
# fsck -F ufs /dev/rdsk/c1t0d0s4
# newfs /dev/rdsk/c1t2d0s4
# fsck -F ufs /dev/rdsk/c1t2d0s4
# newfs ufs /dev/rdsk/c1t1d0s0
# fsck -F ufs /dev/rdsk/c1t1d0s0
# newfs ufs /dev/rdsk/c1t1d0s3
# fsck -F ufs /dev/rdsk/c1t1d0s3
# newfs ufs /dev/rdsk/c1t1d0s4
# fsck -F ufs /dev/rdsk/c1t1d0s4
# newfs ufs /dev/rdsk/c1t1d0s5
# fsck -F ufs /dev/rdsk/c1t1d0s5
# newfs ufs /dev/rdsk/c1t1d0s6
# fsck -F ufs /dev/rdsk/c1t1d0s6
# newfs ufs /dev/rdsk/c1t3d0s7
# fsck -F ufs /dev/rdsk/c1t3d0s7
ここまできて、RAIDのためのスライス環境が出来ました。
SunFIRE V440が2台あるのだが、諸事情により電源を切っていた。
Ultra 1とEnterprise 450がNIS + File Severとして動いていたのだが、その2台の設定をうまく呼び込めないことが原因のひとつでもある。
そこで、NISで一元管理するということをあきらめて、マシン単独で動くように再設定することにした。
理由としては、今、動いているマシーンのOSは、ばらばらで何でユーザー管理するのが良いのか決めきれずにいた。
動いているマシンを列挙する。
Xserve G5 - MacOS X Server 10.4
PowerMac G5 - MacOS X 10.5
x235 - Fedora Core 11
NEC PC1 - Fedora Core 11
NEC PC2 - Fedora Core 6
FMV PC - Fedora Core 11
Compaq PC - Vine Linux 4.2
Cobalt RaQ550 - CobaltOS
たぶんOpen LDAPで管理したほうがいいのだろうが、そこまで色々調べて準備するほどの余裕も無いので、ひとまずSunだからSolarisかなぐらいで、OSのインストールを考えた。
OpenSolarisを最初にインストールしようと思ったが、なぜかCDから起動しない。
原因を調べる気力も無かったので、おとなしくSolaris 10をインストールすることにした。
パーティションをきるのに、Sunの「ディスクスライスについて」を読みながら、4台の74GBのSCSI HDをどのように利用するのか考えた。
HDは2台でRAID 1(ミラー)して、homeとその他に分けたので、disk0とdisk1、disk2とdisk3のセットにすることを考え、こんな感じでパーティションを切った。
(あとで、助かったこともあったが、RAIDするならRAID用のDBファイルを入れるためのスライスが必要なので、それを切っておいたほうがいいので、以下の切り方はそれが考慮されていないので注意してください)
disk 0
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 3382 - 6704 16.12GB (3323/0/0) 33814848
1 swap wu 0 - 1690 8.21GB (1691/0/0) 17207616
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
3 unassigned wm 1691 - 3381 8.21GB (1691/0/0) 17207616
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 10396 - 14086 17.91GB (3691/0/0) 37559616
6 usr wm 6705 - 10395 17.91GB (3691/0/0) 37559616
7 unassigned wm 0 0 (0/0/0) 0
disk 2
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 swap wu 0 - 1690 8.21GB (1691/0/0) 17207616
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
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 unassigned wm 0 0 (0/0/0) 0
7 home wm 1691 - 14086 60.15GB (12396/0/0) 126141696
あとは、インストーラのフルパッケージをインストーラーにしたがって、インストール。
めでたく、起動完了。
さ、RAIDしようと思ったら、Solarisで昔DisSouite?を使った記憶があるのだが、それらしいコマンドが見つからず、どうしていいのかわからないので、twitしたら、「Solaris Volume Manager(SVM)」に変わっていると教えてもらえた。
RAID 1については、結構大変だったので、別の記事にしようと思う。
大きく変わった点は、CDEが動いているけど、次のバージョンから廃止だよってことが出てきた部分。うーん、寂しいな。
SunFIRE V440は、SPARCベースのマシンなので、Open Boot PRAMによって起動する。
わかったことは、Boot Device がHDDになっていない。
そこで、HDD(disk0)から起動するように、どのHDDから起動するのかということを記述する。
・HDD(disk0)を起動ディスクにする
ok setenv boot-device=disk0
・HDDから起動する
ok setenv auto-boot? ture
・設定を確認する
ok printenv
(中略)
auto-boot? true
(中略)
boot-device disk net
(中略)
・再起動
ok reset-all
これで、問題なく起動します。
再起動してもDiskから起動できない場合、printenvで設定を確認したとき、設定が記録されていない場合は、内臓電池が切れている場合があります。
その場合は、修理が必要です。
今回は、そこまでの消耗に至っていなかったのは幸いでした。