サーバー運用備忘録
Solaris 10
Solaris 10 インストール後にGUIログインになってしまう。
これを止める方法
1.dtloginを停止
# /etc/init.d/dtlogin stop
2.dtloginを起動しないようにする
# /usr/dt/bin/dtconfig -d
3.リブート
# sync;sync;sync;shutdown -y -g0 -i6
あとはrootのホームを/から/rootに変更とかユーザ追加。
セキュリティ設定してあげます。
Recommended_Patchもお忘れなく!!
ALOMにおけるSC用ユーザーの確認とパスワード変更
SC用ユーザーの確認
scadmコマンドに「usershow」オプションを指定します。
# /usr/platform/`uname -i`/sbin/scadm usershow username permissions password -------- ----------- -------- admin cuar Assigned
パスワードの変更
SC用ユーザーのパスワードを設定する場合は、scadmコマンドに「userpassword」オプションを指定します。
scadm userpassword <ユーザー名>
次のように実行します。
# /usr/platform/`uname -i`/sbin/scadm userpassword admin Password: ← 新しいパスワードを入力 Re-enter Password: ← 再度入力
パスワードとして有効なのは、6~8文字のアルファベットと数字を含んだものになります。
Solaris(Sparc)のディスクミラー障害検出
Sunより提供されているcron ジョブによる Solaris ボリュームマネージャの監視をサーバにセットアップしておくと
件名:Solaris Volume Manager Problem: metacheck.HOSTNAME 本文 Solaris Volume Manager: HOSTNAME: metacheck: Report: Fri Oct 2 01:15:00 JST 2009 -------------------------------------------------------------- metacheck: metadb problem, for more detail run: /usr/sbin/metadb -i metacheck: metadevice problem, for more detail run: /usr/sbin/metastat d30 /var mounted on d30
というメールが飛んできます。
ミラーディスクに障害が発生したことを伝えるものです。
早々ログインして確認してみると、
# metastat d10: Mirror Submirror 0: d11 State: Okay Submirror 1: d12 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 2101552 blocks d11: Submirror of d10 State: Okay Size: 2101552 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s0 0 No Okay d12: Submirror of d10 State: Okay Size: 2101552 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s0 0 No Okay d20: Mirror Submirror 0: d21 State: Okay Submirror 1: d22 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 2101552 blocks d21: Submirror of d20 State: Okay Size: 2101552 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s1 0 No Okay d22: Submirror of d20 State: Okay Size: 2101552 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s1 0 No Okay d30: Mirror Submirror 0: d31 State: Okay Submirror 1: d32 State: Needs maintenance Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 8392072 blocks d31: Submirror of d30 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s3 0 No Okay d32: Submirror of d30 State: Needs maintenance Invoke: metareplace d30 c0t1d0s3 <new device> Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s3 0 No Maintenance d40: Mirror Submirror 0: d41 State: Okay Submirror 1: d42 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 8392072 blocks d41: Submirror of d40 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s4 0 No Okay d42: Submirror of d40 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s4 0 No Okay d50: Mirror Submirror 0: d51 State: Okay Submirror 1: d52 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 8392072 blocks d51: Submirror of d50 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s5 0 No Okay d52: Submirror of d50 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s5 0 No Okay d60: Mirror Submirror 0: d61 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 5946544 blocks d61: Submirror of d60 State: Okay Size: 5946544 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s6 0 No Okay d62: Concat/Stripe Size: 5946544 blocks Stripe 0: Device Start Block Dbase c0t1d0s6 0 No
となっており、
d30: Mirror Submirror 0: d31 State: Okay Submirror 1: d32 State: Needs maintenance Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 8392072 blocks d31: Submirror of d30 State: Okay Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t0d0s3 0 No Okay d32: Submirror of d30 State: Needs maintenance Invoke: metareplace d30 c0t1d0s3 <new device> Size: 8392072 blocks Stripe 0: Device Start Block Dbase State Hot Spare c0t1d0s3 0 No Maintenance
からd30のスライス中にエラーが発生していることがわかります。
#dmesg
してみたら書き込みエラーが発生していました。
稼動中のサーバなので停止せずディスク交換する方法をさがしてみると
結構紹介されていました。
ちなみに参考にさせていただいたのは、
Solarisでいきましょか? -SDS OSミラー回復手順-です。
筆者に感謝いたします。
上記のリンク先を参考に実際に障害を復旧した事例を紹介いたします。
- Solaris(Sparc)のディスクミラー復旧手順
(1)状態をチェック
まず、metastatコマンドでDISKの状態確認します。
前述を参照
(2)メタDBの状態をチェックし、削除する
交換するDISK側のメタDBをmetadbコマンドで削除する。
# metadb -i flags first blk block count a m p luo 16 1034 /dev/dsk/c0t0d0s7 a p luo 1050 1034 /dev/dsk/c0t0d0s7 W p l 16 1034 /dev/dsk/c0t1d0s7 a p luo 1050 1034 /dev/dsk/c0t1d0s7 o - replica active prior to last mddb configuration change u - replica is up to date l - locator for this replica was read successfully c - replica's location was in /etc/lvm/mddb.cf p - replica's location was patched in kernel m - replica is master, this is replica selected as input W - replica has device write errors a - replica is active, commits are occurring to this replica M - replica had problem with master blocks D - replica had problem with data blocks F - replica had format problems S - replica is too small to hold current data base R - replica had device read errors # *英字の大文字になっていると壊れていることを意味します。 今回は(W)なので書き込みエラーと分ります。 # metadb -d c0t1d0s7
(3)SVM上で、ボリュームの削除
# metadetach -f d10 d12 d10: サブミラー d12 は切断中 # metadetach -f d20 d22 d20: サブミラー d22 は切断中 # metadetach -f d30 d32 d30: サブミラー d32 は切断中 # metadetach -f d40 d42 d40: サブミラー d42 は切断中 # metadetach -f d50 d52 d50: サブミラー d52 は切断中 # metadetach -f d60 d62 d60: サブミラー d62 は切断中 # metaclear d12 d12: 連結/ストライプがクリアされます # metaclear d22 d22: 連結/ストライプがクリアされます # metaclear d32 d32: 連結/ストライプがクリアされます # metaclear d42 d42: 連結/ストライプがクリアされます # metaclear d52 d52: 連結/ストライプがクリアされます # metaclear d62 d62: 連結/ストライプがクリアされます
(4)DISKを交換する
OS稼動中にDISKを交換する場合は、SCSIの場合cfgadmコマンドで切り離しをします。
# cfgadm -al Ap_Id Type Receptacle Occupant Condition c0 scsi-bus connected configured unknown c0::dsk/c0t0d0 disk connected configured unknown c0::dsk/c0t1d0 disk connected configured unknown c1 scsi-bus connected configured unknown c1::dsk/c1t2d0 CD-ROM connected configured unknown c2 scsi-bus connected unconfigured unknown # cfgadm -c unconfigure c0::dsk/c0t1d0 # cfgadm -al Ap_Id Type Receptacle Occupant Condition c0 scsi-bus connected configured unknown c0::dsk/c0t0d0 disk connected configured unknown c1 scsi-bus connected configured unknown c1::dsk/c1t2d0 CD-ROM connected configured unknown c2 scsi-bus connected unconfigured unknown # format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248> /pci@1f,0/pci@1,1/scsi@2/sd@0,0 Specify disk (enter its number): ^D
ここでDISKを交換します(DISKを抜いて、新しいDISKを挿入)。
(5)DISKをOSへ認識させる
# cfgadm -c configure c0::dsk/c0t1d0 # cfgadm -al Ap_Id Type Receptacle Occupant Condition c0 scsi-bus connected configured unknown c0::dsk/c0t0d0 disk connected configured unknown c0::dsk/c0t1d0 disk connected configured unknown c1 scsi-bus connected configured unknown c1::dsk/c1t2d0 CD-ROM connected configured unknown c2 scsi-bus connected unconfigured unknown # format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248> /pci@1f,0/pci@1,1/scsi@2/sd@0,0 1. c0t1d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248> /pci@1f,0/pci@1,1/scsi@2/sd@1,0 Specify disk (enter its number):
(6)ミラーの再設定と同期
交換したディスクに同じジオメトリを持たせる。
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
メタDBの追加
# metadb -f -a -c 3 c0t1d0s7
ミラーの再同期
metareplace -e d30 c0t1d0s3
サブミラーが無いとしかられます。以下のように訂正します。
ミラーの再同期
# metainit -f d12 1 1 c0t1d0s0 # metainit -f d22 1 1 c0t1d0s1 # metainit -f d32 1 1 c0t1d0s3 # metainit -f d42 1 1 c0t1d0s4 # metainit -f d52 1 1 c0t1d0s5 # metainit -f d62 1 1 c0t1d0s7 # metattach d10 # metattach d20 # metattach d30 # metattach d40 # metattach d50 # metattach d60
(7)SVM上のDISK構成情報の更新
# metadevadm -u c0t1d0 Solaris ボリュームマネージャ内で c0t1d0 に関するデバイス再配置情報を更新しています 古いデバイス再配置情報: id1,sd@SSEAGATE_ST318404LSUN18G_3BT265P30000XXXX 新しいデバイス再配置情報: id1,sd@SSEAGATE_ST318404LSUN18G_3BT265P30000XXXX
(8)ミラー状況の確認
# LANG=C metastat | grep progre Resync in progress: 0 % done Resync in progress: 6 % done Resync in progress: 7 % done
Progressがなくなり全てのStatusが「Ok」になれば終了です。
# LANG=C metastat |grep "State:"
思いついたら、どんどん書き足していきます。