ハードウェアの管理に使用する主なコマンドは,hwmgr
コマンド行インタフェース (CLI) です。SysMan タスクなどのその他インタフェースには,hwmgr
機能の部分的な機能だけを提供します。たとえば,hwmgr
であれば,クラスタを構成する全メンバのすべての SCSI アダプタに接続されている同じタイプ (SCSI ディスクなど) の全コンポーネントの属性を設定できます。
ほとんどのハードウェア管理はシステムによって自動的に実行されるので,操作が必要になるのは特定の状況に限られます。たとえば,故障したコンポーネントを交換して,代わりに組み込んだ正常なコンポーネントを故障したコンポーネントと同じ ID で動くようにする場合です。この章では,次の項目について説明します。
ハードウェア管理モデル (3.1 節)
hwmgr
コマンドで使用できる主なユーザ・オプション (3.2 節)
hwmgr
コマンド環境の構成 (3.3 節)
hwmgr
コマンドを使用した次の管理作業の実施 (3.4 節)
SCSI デバイスの場所の確認 (3.4.1 項)
ハードウェア階層またはシステム・トポロジの表示 (3.4.2 項)
コンポーネントのカテゴリの表示 (3.4.3 項)
コンポーネントの属性の表示 (3.4.4 項)
変更可能なコンポーネント属性の設定 (3.4.5 項)
クラスタ・ハードウェアの状態の表示 (3.4.6 項)
コンポーネントの状態の表示 (3.4.7 項)
ハードウェア管理トランザクションの表示 (3.4.8 項)
カスタムのワールドワイド識別子 (WWID) の定義 (3.4.9 項)
SCSI デバイスの削除 (3.4.10 項)
RAID アレイのディスクの構成設定 (3.4.11 項)
故障した SCSI ディスクの交換 (3.4.12 項)
故障した SCSI テープ・ドライブの交換。これは,redirect
オプションを使って交換することのできないディスクのための代替手順でもあります (3.4.13 項)。
故障したクラスタ・ブート・ディスクの交換 (3.4.14 項)
name サブシステムのデータベースの表示 (3.4.15 項)
name 永続データベースからのコンポーネントの抹消と登録解除 (3.4.16 項)
refresh
オプションを使った無効なパスの削除とデータベースの最適化 (3.4.17 項)
コンポーネントの名前の付け替え (3.4.18 項)
システム内でのコンポーネントの移動 (3.4.19 項)
オペレーティング・システム・カーネルの内部では,ハードウェアに関するデータは,KSM (Kernel Set Manager) が管理するハードウェア・セットとしてまとめられています。アプリケーションからのリクエストは,ライブラリ・ルーチンによってカーネル・コードまたはリモート・コードに渡されます。後者は,他のシステムとの間でやり取りされるリクエストを処理します。ハードウェア・コンポーネント・モジュール (HWC) はカーネルにあり,この中に,ハードウェア・セット内のハードウェア・コンポーネントを作成したり保守したりするための登録ルーチンがすべて含まれています。また,dsfmgr
コマンドを用いて実行するデバイス特殊ファイルの管理に必要なデバイス・ノードも含まれています。
ハードウェア・セットは,システムのハードウェア・コンポーネントをすべて記述するデータ構造で構成されています。ハードウェア・コンポーネントは,そのドライバによって登録されると,ハードウェア・セットに組み込まれます。多くのコンポーネントが,機能や内容を表す属性や,操作を制御する属性をサポートしています。属性には,それぞれ値が割り当てられています。これらの属性値は,hwmgr
コマンドを用いて読み取り,ときには操作することができます。
システム・ハードウェアは,hwmgr
コマンドでサブシステムとして識別される 3 つの部分にまとめられています。サブシステムは,component,SCSI,および name として識別されます。サブシステムとシステム・ハードウェアの対応は,次のとおりです。
component サブシステムには,(バイナリ形式の)
/etc/dec_hwc_ldb
および
/etc/dec_hwc_cdb
データベースで指定されるすべてのハードウェア・コンポーネントが対応する。このサブシステムには,システムのほとんどのコンポーネントが入ります。
name サブシステムには,バイナリ形式の
/etc/dec_hw_db
データベースにあるハードウェア・コンポーネントすべてが対応する。これは,ハードウェア・トポロジと呼ばれることがよくあります。データベースには,カーネル・ドライバ・フレームワークが維持するハードウェア永続情報や,バス,コントローラ,コンポーネントのデータが含まれます。
SCSI サブシステムには,バイナリ形式の
/etc/dec_scsi_db
データベースにある SCSI デバイスすべてが対応する。SCSI データベースには,SCSI/CAM アーキテクチャが管理するデバイスすべてに対して,それぞれエントリがあります。
hwmgr
の一般的な特性と機能は,次のとおりです。
1 つのコマンドで,広範なハードウェア管理機能を提供する。
今はシステムに接続されていないが,直前のブートで認識されたハードウェア・コンポーネントを (簡単な範囲で) 管理できる。
クラスタの複数のシステムに接続されているハードウェア・コンポーネントを管理できる。
管理リクエストを,クラスタの複数のメンバに送信できる。
hwmgr
コマンドは,カーネル内のハードウェア管理モジュールを使って,ハードウェア・コンポーネントの管理を実行します。ハードウェア・コンポーネントの例としては,ディスクやテープといったストレージ・デバイスや,CPU やバスといったシステム・コンポーネントなどがあります。hwmgr
コマンドを使用すれば,シングル・システムとクラスタのどちらについても,そのハードウェア・コンポーネントを管理できます。
操作コマンドは,コマンド名の後のサブシステム識別子で区別されます。サブシステムは,次のとおりです。component
,name
,scsi
hwmgr
操作コマンドによっては,2 つ以上のサブシステムに対して使用することができます。view
および
show
コマンド・オプションを使って入手したパラメータ情報に従って,実行したい操作の種類に最も関連性の高いサブシステムを使用する必要があります。
コマンドによっては,サブシステム名を指定する必要があります。ただし,ハードウェア・コンポーネントの識別情報を指定した場合には,サブシステム名を指定する必要はありません。hwmgr
コマンドは,コンポーネント識別子に基づいて,操作対象の正しいサブシステムを識別することができます。
コマンド・オプションは,タスク・アプリケーション別に編成されています。コマンド・オプション,操作対象のサブシステム,および操作の種類を次の表に示します。
オプション | サブシステム | 操作 |
add |
name |
データベース管理 |
delete |
component ,name ,scsi |
データベース管理 |
edit |
name ,scsi |
データベース管理 |
locate |
component |
ハードウェア構成 |
offline |
component ,name |
オンラインでの追加および削除 |
online |
component ,name |
オンラインでの追加および削除 |
power |
component ,name |
オンラインでの追加および削除 |
redirect |
scsi |
ハードウェア構成 |
refresh |
component ,scsi |
データベース管理 |
reload |
name |
ドライバ構成 |
remove |
name |
データベース管理 |
scan |
component ,name ,scsi |
ハードウェア構成 |
status |
component |
ハードウェア構成 |
unconfigure |
component ,name |
ハードウェア構成 |
unindict |
component |
オンラインでの追加および削除 |
unload |
name |
ドライバ構成 |
hwmgr
コマンドには,表示される情報量を制御するための環境設定があります。次のコマンドで,省略時の環境設定を表示できます。
# /sbin/hwmgr view env HWMGR_DATA_FILE = "/etc/hwmgr/hwmgr.dat" HWMGR_DEBUG = FALSE HWMGR_HEXINTS = FALSE HWMGR_NOWRAP = FALSE HWMGR_VERBOSE = FALSE
これらの環境変数の値は,ログイン・スクリプトやコマンド行で次の例のようにして設定できます。
# HWMGR_VERBOSE=TRUE # export HWMGR_VERBOSE
通常,定義の必要なものは,次の
HWMGR_HEXINTS
,HWMGR_NOWRAP
,および
HWMGR_VERBOSE
環境変数の値に限られます。
HWMGR_HEXINTS
環境変数を
TRUE
に定義すると,hwmgr
コマンドの数値の出力はすべて 16 進数で表示されます。
HWMGR_NOWRAP
環境変数を
TRUE
に定義すると,hwmgr
コマンドの出力は 80 文字で切り捨てられます。hwmgr
コマンド・オプションによる出力は,折り返されて読みにくくなる場合があります。HWMGR_NOWRAP
環境変数の値を
TRUE
に設定すると,コンソール出力が読みやすくなります。切り捨てられた行には,水平方向の省略記号が付けられます。
HWMGR_VERBOSE
環境変数を
TRUE
に定義すると,hwmgr
コマンドの出力にはさらに詳細な情報が含まれるようになります。hwmgr
コマンドの省略時の設定では,重大でないエラーは表示されません。詳細な情報を表示させる場合は,hwmgr
のコマンド・オプションに
verbose
を追加するという方法もあります。
たとえば,一部のハードウェア・コンポーネントにしか存在しない属性を照会すると,特に指定しない限り,hwmgr
コマンドはその属性をサポートするハードウェア・コンポーネントからの出力のみを表示します。次にその例を示します。
# /sbin/hwmgr get attribute -a type 6: type = local 7: type = local 9: type = MOUSE
システムのハードウェア・コンポーネントがすべて
type
属性をサポートしているとは限りません。HWMGR_VERBOSE
環境変数が
TRUE
に定義されていなければ,このコマンドが生成するエラーの中には,表示されないものもあります。それらのエラーを表示させるには,次のように,コマンド行で
-verbose
スイッチを指定します。
# /sbin/hwmgr get attribute -a type -verbose 1: Attribute "type" not defined. 2: Attribute "type" not defined. 4: Attribute "type" not defined. 5: Attribute "type" not defined. 6: current type = local 7: current type = local 8: Attribute "type" not defined. 9: current type = MOUSE 10: Attribute "type" not defined. 11: Attribute "type" not defined. . . (以下,省略)
verbose
スイッチはすべての
hwmgr
コマンドで使用できますが,追加出力が必ず得られるとは限りません。
この節では,hwmgr
コマンドを用いて実行しなければならない作業の例を示します。例の中には,CPU に接続されているコンポーネントが少ない小規模なサーバの管理には向いていないものがあるかもしれません。しかし,ネットワークに接続された多数のシステムで構成される大規模な環境や,コンポーネントが何百個もあるようなクラスタを管理する場合には,非常に役立ちます。hwmgr
コマンドを使用すれば,詳細が不明なシステムに接続し,そのコンポーネント階層の情報を入手して,管理作業を行うことができます。システムの構成を事前に調べておく必要も,システムのログやファイルを調べてコンポーネントを探す必要もありません。
3.4.1 SCSI ハードウェアの位置の特定
locate
オプションは,現在一部の SCSI デバイスでしか動作しませんが,デバイスの識別に使用できます。このコマンドは,SCSI ディスクの物理的な位置を探す場合に使用できます。次のコマンドを実行すると,SCSI ディスクのランプが 1 分間点滅します。
# /sbin/hwmgr locate -id 42 -time 60
このようにして,ディスク・ベイでランプが点滅しているコンポーネントを探せば,目的のディスクの場所を知ることができます。CD-ROM リーダやアレイの一部になっているディスク (たとえば,HSV110) などの SCSI デバイスを見つけるのに,このオプションを使用することはできません。ただし,アレイの一部になっているディスクは故障した場合には検出され,Event Manager のログにイベントがポストされます。アレイ・コントローラは,読み取りランプまたは黄色のエラー表示ランプを点滅させることで故障したディスクを示します。故障したデバイスを手作業で探す必要はありません。
3.4.2 システム階層の表示
view
コマンドを使用すると,システム内部のハードウェア階層を表示できます。このコマンドでは,どのアダプタがデバイスを制御しており,バス上のどこにアダプタがインストールされているかを調べることができます。次の例は,クラスタに属さない独立の小規模システムを対象にこのコマンドを実行した場合の,典型的な出力を示します。
#/sbin/hwmgr view hierarchy HWID: hardware hierarchy ---------------------------------------------------- 1: platform AlphaServer 800 5/500 2: cpu CPU0 6: bus pci0 7: connection pci0slot5 15: scsi_adapter isp0 16: scsi_bus scsi0 32: disk bus-0-targ-0-lun-0 dsk0 33: disk bus-0-targ-4-lun-0 cdrom0 34: disk bus-0-targ-5-lun-0 dsk1 35: disk bus-0-targ-6-lun-0 dsk2 36: disk bus-0-targ-8-lun-0 dsk3 9: connection pci0slot6 17: graphics_controller s3trio0 以下,省略
コンポーネントの中には,階層内で複数のエントリに現れるものがあります。たとえば,2 つのアダプタの間で共用される SCSI バスにディスクがある場合,階層内に同じデバイスに対する 2 つのエントリが表示されます。SysMan Station GUI を使っても,同じようにシステム・ハードウェアの階層が表示できます。
3.4.3 コンポーネント・カテゴリの表示
同じカテゴリのすべてのコンポーネントを対象にハードウェア管理オプションを実行したり,カテゴリ内の特定のコンポーネントを選択したりする場合には,利用できるコンポーネント・カテゴリを知っている必要があります。ハードウェア・マネージャの
get category
コマンドを使用することにより,どのようなハードウェア・カテゴリがあるかを知ることができます。
このコマンドは
get attributes
と
set attributes
オプションとともに使用すると便利です。これらのオプションは,特定のコンポーネントの属性 (またはプロパティ) を表示したり構成したりします。ハードウェア・カテゴリがわかれば,次のように,特定のタイプのハードウェアに限定して属性を照会できるようになります。
# /sbin/hwmgr get category Hardware Categories ------------------- category = undefined category = platform category = cpu category = pseudo category = bus category = connection category = serial_port category = keyboard category = pointer category = scsi_adapter category = scsi_bus category = network category = graphics_controller category = disk category = tape
カテゴリがわかれば,次のようにカテゴリを指定し,的を絞って属性を照会できます。
# /sbin/hwmgr get attribute -category platform 1: name = AlphaServer 800 5/500 category = platform
この出力から,システム・プラットフォームに ID が 1 のハードウェアがあり,そのプラットフォーム名が AlphaServer 800 5/500 であることがわかります。get attribute
コマンド・オプションと
set attribute
コマンド・オプションも参照してください。
3.4.4 コンポーネント属性の取得
属性はコンポーネントの特性です。コンポーネントのモデル番号のような読み取り専用属性や,動作速度のように,コンポーネントの何らかの動作を制御する値を設定できる属性があります。get attribute
コマンド・オプションは,コンポーネントの属性を表示します。ハードウェア・マネージャのコマンドは,ハードウェア管理専用であり,ハードウェア・セットから属性だけを取得します。ハードウェア・コンポーネントはすべて,一意なハードウェア識別子 (ハードウェア ID または HWID ともいう) を使って識別されます。
次のコマンドは,ローカル・システムにある全ハードウェア・コンポーネントの属性をすべて取得し,ファイルに出力して,情報を検索できるようにします。
# /sbin/hwmgr get attribute > sysattr.txt
しかし,3.4.3 項 で示したように,照会するコンポーネント・カテゴリがわかっている場合は,特定のカテゴリに的を絞って照会することもできます。
ハードウェア・コンポーネントのカテゴリを指定して属性を照会すると,役に立つ情報が得られます。たとえば,何らかの理由でネットワークが正常に動作しているかどうかはっきりしない場合があったとします。また,システムにインストールされているネットワーク・アダプタの種類やその構成もわからないかもしれません。次の例のように
get attribute
オプションを使用すれば,ネットワーク・アダプタの状態を判断できます。
# /sbin/hwmgr get attribute -category network 203: name = ln0 category = network sub_category = Ethernet model = DE422 hardware_rev = firmware_rev = MAC_address = 08-00-2B-3E-08-09 MTU_size = 1500 media_speed = 10 media_selection = Selected by Jumpers/Switches media_type = loopback_mode = 0 promiscuous_mode = 0 full_duplex = 0 multicast_address_list = CF-00-00-00-00-00 \ 01-00-5E-00-00-01 interface_number = 1
この出力には,次のような情報が含まれています。
HWID の下に続くフィールドと値は,それぞれ属性名とその現在の値です。ドライバが値を初期化していない場合,値の部分が空白になっていることもあります。この情報から,システムには DE422 というモデル番号のイーサネット・アダプタがあり,そのコンポーネント名は
ln0
であることがわかります。
この情報を基に次のように
ifconfig
コマンドを用いて,このネットワーク・アダプタの状態を調べることができます。
# ifconfig ln0 ln0:flags=c62 inet XX.XXX.XXX.XX netmask ffffff00 \ broadcast XX.XXX.XX.XXX ipmtu 1500
コンポーネント属性の値を変更して,コンポーネント情報やシステムにおける動作を変更できる場合もあります。属性の設定については,3.4.5 項
で説明しています。どの属性が設定できるかを調べるには,次の例のように
get
オプションを使ってすべての属性を取得し,grep
コマンドで
(settable)
というキーワードを探します。
# /sbin/hwmgr get attribute | grep settable device_starvation_time = 25 (settable) device_starvation_time = 0 (settable) device_starvation_time = 25 (settable) device_starvation_time = 25 (settable) device_starvation_time = 25 (settable) device_starvation_time = 25 (settable)
この出力は,このシステムに設定可能な属性が 1 つあり,それが
device_starvation_time
であることを示しています。この名前がわかれば,次のようにして,その属性をサポートするコンポーネントのリストを取得できます。
# /sbin/hwmgr get attribute -a device_starvation_time 23: device_starvation_time = 25 (settable) 24: device_starvation_time = 0 (settable) 25: device_starvation_time = 25 (settable) 31: device_starvation_time = 25 (settable) 34: device_starvation_time = 25 (settable) 35: device_starvation_time = 25 (settable)
このコマンドの出力は,device_starvation_time
属性をサポートしているコンポーネントの HWID を示しています。階層の出力で HWID を読むことで,この属性が SCSI ディスクでサポートされているどうかがわかります。
ファイバ・チャネルのリンク速度を調べるには,次のようにしてリンク速度を照会できます。
# /sbin/hwmgr get attribute -a link_speed 656: link_speed = 1Ghz
アダプタが複数ある場合,このコマンドはすべてのアダプタの属性値を表示します。link_speed
属性は,次の値をサポートします。
速度を示す値。1GHz
または
2GHz
。
不適用を示す文字列
N/A
。アダプタのファームウェアが
link_speed
属性をサポートしていないことを示します。
set attribute
オプションと
get category
オプションも参照してください。
3.4.5 コンポーネント属性の設定
set attribute
コマンド・オプションを使用すると,設定可能な属性の値を設定 (または構成) できます。ただし,すべてのコンポーネント属性を設定できるとは限りません。get attribute
コマンド・オプションを使用したとき,設定が可能な属性については,属性値の隣に
(settable)
というラベルが表示されます。そのような属性を見つける方法を,3.4.4 項で説明しています。
3.4.4 項で述べたように,device_starvation_time
は SCSI ディスクがサポートする設定可能な属性の例です。この属性は,SCSI バスの障害 (データが転送されない) によってコンポーネントへ到達できないという判断をディスク・ドライバが下すまでの経過時間を制御します。device_starvation_time
に設定されている時間が経過してもドライバがコンポーネントの存在を認識できないと,ドライバはバイナリ・エラー・ログにエラー・イベントを記録します。
次のコマンドを使用することにより,HWID が 24 であるコンポーネントの
device_starvation_time
属性の値を変更するとともに,その新しい値を確認できます。
#/sbin/hwmgr set attribute -id 24 \ -a device_starvation_time=60 # /sbin/hwmgr get attribute -id 24 \ -a device_starvation_time 24: device_starvation_time = 60 (settable)
ただし,この操作では,属性の
saved
値は変更できません。属性にはすべて,current
値,saved
値,および
default
値という 3 種類の値があります。default
値は定数値であり,変更することはできません。属性の値を設定していなければ,default (省略) 値が適用されます。saved
値を設定すると,ブートにまたがって値が維持されます。この値は,default
値を永続的に指定変更した値であると考えることができます。
current
値として設定した値は,ブートにまたがって維持されません。この値は,属性の一時的な値であると考えることができます。システムをリブートすると,属性の値は
saved
値に戻ります (saved
値がある場合)。saved
値がなければ,属性の値は
default
値に戻ります。属性の値を設定するたびに,属性の
current
値が変更されます。次の例に,属性の
saved
値を調べる方法と設定する方法を示します。
# /sbin/hwmgr get attribute saved -id 24 \ -a device_starvation_time 24: saved device_starvation_time = 0 (settable) # /sbin/hwmgr get attribute saved -id 24 \ -a device_starvation_time=60 saved device_starvation_time = 60 (settable) # /sbin/hwmgr get attribute saved -id 24 \ -a device_starvation_time 24: saved device_starvation_time = 60 (settable)
get attribute
および
get category
コマンド・オプションを参照してください。
3.4.6 クラスタの表示
クラスタで作業している場合,クラスタに属する特定のホストに的を絞ってハードウェア管理コマンドを実行しなければならないことがよくあります。view cluster
コマンド・オプションを使えば,クラスタに属するホストの詳細情報を取得できます。次の例に,一般的なクラスタを示します。
# /sbin/hwmgr view cluster Member ID State Member HostName --------- ----- --------------- 1 UP ernie.zok.paq.com (localhost) 2 UP bert.zok.paq.com 3 DOWN bigbird.zok.paq.com
また,このオプションを使って,hwmgr
コマンドがクラスタのすべてのメンバとそれらの現在の状態を認識していることを確認できます。
上記の例は,クラスタにメンバが 3 つあり,その 1 つ (bigbird
) が現在ダウンしていることを示しています。(localhost)
のマークは,hwmgr
が現在クラスタ・メンバ
ernie
で動作していることを示しています。-cluster
オプションを指定して実行した
hwmgr
コマンドはすべて,メンバ
bert
と
ernie
に送られますが,bigbird
には,システムが使用できないため,送られません。また,-member bigbird
オプションを指定して実行した
hwmgr
コマンドもすべて失敗します。そのホストのクラスタ・メンバ状態が
DOWN
になっているためです。
view cluster
コマンド・オプションは,システムがクラスタのメンバである場合にのみ有効です。シングル・システムで実行すると,エラー・メッセージが表示されます。clu_get_info
コマンドを参照してください。クラスタ・システムについては,TruCluster Server のマニュアルを参照してください。
3.4.7 デバイスの表示
hwmgr
コマンドに
view devices
オプションを指定して使用すると,デバイス特殊ファイル名 (/dev/disk/dsk34
など) を持つコンポーネントをすべて表示できます。ハードウェア・マネージャは,dev_base_name
属性を持つハードウェア・コンポーネントをアクセス可能なデバイスと想定します (デバイス属性の取得方法については
3.4.4 項を参照)。
view devices
オプションにより,システムのハードウェア管理に現在登録されているコンポーネントを調べることができます。また,このオプションで得た情報を基に,デバイス特殊ファイル名を通してコンポーネントにアクセスできます。たとえば,CD-ROM をリーダに挿入したとき,CD-ROM リーダを
/dev/disk/cdrom0
としてマウントすべかどうかが,この出力によってわかります。登録されているデバイスの HWID を調べる場合にも,view devices
オプションは便利です。デバイスの HWID がわかっていれば,他の
hwmgr
コマンドのオプションを用いてそのデバイスの属性を照会したり,そのデバイスに対してその他の操作を行うことができます。
このコマンドの一般的な出力を,次の例に示します。
# /sbin/hwmgr view dev
HWID: DSF Name Mfg Model Location ---------------------------------------------------------------------- 3: /dev/kevm 22: /dev/disk/dsk0c DEC RZ26 bus-0-targ-3-LUN-0 23: /dev/disk/cdrom0c DEC RRD42 bus-0-targ-4-LUN-0 24: /dev/disk/dsk1c DEC RZ26L bus-1-targ-2-LUN-0 25: /dev/disk/dsk2c DEC RZ26L bus-1-targ-4-LUN-0 29: /dev/ntape/tape0 DEC TLZ06 bus-1-targ-6-LUN-0 35: /dev/disk/dsk8c COMPAQ RZ1CF-CF bus-2-targ-12-LUN-0
出力には,ローカル・システム上の
dev_base_name
属性を持つハードウェア・コンポーネントがすべて表示されています。ハードウェア・マネージャは,dev_base_name
を展開して,デバイス特殊ファイルまでのフル・パス (/dev/ntape/tape0
など) を生成しようとします。必ずパーティション
c
のデバイス特殊ファイルまでのパスが使用されます。パーティション
c
は,テープの場合を除き,デバイスの総容量を表します。デバイス特殊ファイル名とその機能については,第 1 章を参照してください。
クラスタで作業している場合は,次のように
-cluster
オプションを使って,クラスタ全体にわたって,ハードウェア管理に登録されているすべてのコンポーネントが表示できます。
# /sbin/hwmgr view devices -cluster
HWID: DSF Name Model Location Hostname ------------------------------------------------------------------ 20: /dev/disk/floppy0c 3.5in fdi0-unit-0 tril7e 34: /dev/disk/cdrom0c RRD46 bus-0-targ-5-LUN-0 tril7e 35: /dev/disk/dsk0c HSG80 bus-4-targ-1-LUN-1 tril7d 35: /dev/disk/dsk0c HSG80 bus-6-targ-1-LUN-1 tril7e 36: /dev/disk/dsk1c RZ26N bus-1-targ-0-LUN-0 tril7e 37: /dev/disk/dsk2c RZ26N bus-1-targ-1-LUN-0 tril7e 38: /dev/disk/dsk3c RZ26N bus-1-targ-2-LUN-0 tril7e 39: /dev/disk/dsk4c RZ26N bus-1-targ-3-LUN-0 tril7e 40: /dev/disk/dsk5c RZ26N bus-1-targ-4-LUN-0 tril7e 41: /dev/disk/dsk6c RZ26N bus-1-targ-5-LUN-0 tril7e 42: /dev/disk/dsk7c RZ26N bus-1-targ-6-LUN-0 tril7e 43: /dev/disk/dsk8c HSZ40 bus-3-targ-2-LUN-0 tril7d 43: /dev/disk/dsk8c HSZ40 bus-3-targ-2-LUN-0 tril7e 44: /dev/disk/dsk9c HSZ40 bus-3-targ-2-LUN-1 tril7d 44: /dev/disk/dsk9c HSZ40 bus-3-targ-2-LUN-1 tril7e 45: /dev/disk/dsk10c HSZ40 bus-3-targ-2-LUN-2 tril7d 45: /dev/disk/dsk10c HSZ40 bus-3-targ-2-LUN-2 tril7e
HWID が
45:
であるディスクのように,複数回現れるデバイスがあります。これらは,2 つのクラスタ・メンバが共用しているバス上にあるコンポーネントです。ハードウェア・マネージャは,各クラスタ・メンバでコンポーネント・エントリを見つけるたびにそれを表示します。
次の
hwmgr
コマンド・オプションを参照してください。show scsi
,show components
,get attributes
3.4.8 トランザクションの表示
ハードウェア管理操作は,クラスタ内で同期をとる必要があるトランザクションです。view transaction
コマンド・オプションは,システムをブートしてから行われたハードウェア管理トランザクションの状態をすべて表示します。このオプションを使って,失敗したハードウェア管理トランザクションを見つけることができます。
-cluster
や
-member
オプションを指定していなければ,このコマンドは,ローカル・ホスト (コマンドを入力したシステム) で処理または開始されたトランザクションの状態を表示します。view transaction
コマンド・オプションは,主にクラスタ内のハードウェア管理に関する問題のデバッグに使用するものなので,このコマンドを使うようなことはあまりありません。通常,このコマンドの出力は次のようになります。
# /sbin/hwmgr view transactions hardware management transaction status ----------------------------------------------------- there is no active transaction on this system the last transaction initiated from this system was: transaction = modify cluster database proposal = 3834 sequence = 0 status = 0 the last transaction processed by this system was: transaction = modify cluster database proposal = 3834 sequence = 0 status = 0 proposal last status success fail ---------------------------- ----------- ------- ---- Modify CDB/ 3838 0 3 0 Read CDB/ 3834 0 3 0 No operation/ 3835 0 1 0 Change name/ 3836 0 0 0 Change name/ 3837 0 0 0 Locate HW/ 3832 0 0 0 Scan HW/ 3801 0 0 0 Unconfig HW - confirm/ 3933 0 0 0 Unconfig HW - commit/ 3934 0 0 0 Delete HW - confirm/ 3925 0 0 0 Delete HW - commit/ 3926 0 0 0 Redirect HW - confirm/ 3928 0 0 0 Redirect HW - commit1/ 3929 0 0 0 Redirect HW - commit2/ 3930 0 0 0 Refresh - lock/ 3937 0 0 0
この出力は,最後のトランザクションがクラスタ・データベースの変更であったことを示します。
3.4.9 ユーザ定義 SCSI デバイス名の作成
ほとんどのコンポーネントには,デバイスに対して一意に定まる ID 属性があります。これは SCSI デバイスの
serial_number
または名前の属性として読み取ることができます。次の
hwmgr
コマンドは,HWID が 30 のコンポーネント (SCSI ディスク) についてこれら 2 つの属性を表示させる例です。
# /sbin/hwmgr get attribute -id 30 -a serial_number -a name 30: serial_number = SCSI-WWID:0c000008:0060-9487-2a12-4ed2 name = SCSI-WWID:0c000008:0060-9487-2a12-4ed2
この文字列は,システム上の各コンポーネントに対して一意であるため,ワールドワイド識別子 (WWID) といいます。
コンポーネントには,一意の ID を持たないものがあります。オペレーティング・システムは,そのようなコンポーネントに対して ID となる番号を作成します。その際,デバイスの物理的な位置を表す有効なパス・データ
bus/target/LUN
を使用します。デバイスを複数のシステムで共用する場合,コンポーネントにアクセスするシステムはそれぞれが異なるパスでそのデバイスを認識するため,システムごとに異なる一意の WWID を作成します。そのような共用デバイスに対しては,入出力アクセスが並列に発生し,データが破壊される可能性があります。共用デバイスを見つけるには,次のコマンドを使います。
# /sbin/hwmgr show component -cshared HWID: HOSTNAME FLAGS SERVICE COMPONENT NAME ----------------------------------------------- 40: joey -cd-- iomap SCSI-WWID:04100026:"DEC \ RZ28M (C) DEC00S846590H7CCX" 41: joey -cd-- iomap SCSI-WWID:04100026:"DEC \ RZ28L-AS (C) DECJEE019480P2VSN" 42: joey -cd-- iomap SCSI-WWID:0410003a:"DEC \ RZ28 (C) DECPCB=ZG34142470 ; HDA=000034579643" 44: joey rcd-- iomap SCSI-WWID:04100026:"DEC \ RZ28M (C) DEC00S735340H6VSR" . . .
TL895 モデルのメディア・チェンジャなど一部のデバイスは,INQUIRY
ページ 0x80 または 0x83 をサポートしておらず,一意の WWID をシステムに提供することができません。パス・フェイルオーバまたは共用バス上でのクラスタへのインストールなどの機能をサポートするには,そのようなデバイスをシステムに手作業で追加する必要があります。これは,メディア・チェンジャだけを共用バスに追加するための推奨されている方法です。ディスク,CD-ROM リーダ,テープ・ドライブ,RAID コントローラなど,他の種類のデバイスはシリアル番号など一意の文字列を持っているため,システムが一意の WWID を生成できます。このようなコンポーネントは,WWID が常に同じであり,オペレーティング・システムが常に同じデバイスとして認識するため,共用バス上で使用できます。
hwmgr
コマンドを使って,ユーザ定義による一意の名前を作成し,デバイスを共用する全システムが認識する WWID を作成することができます。コンポーネントに共通の WWID があるため,デバイス特殊ファイル名が何通りにもならず,入出力が同時に発生することを防止できます。
ユーザ定義名を作成する手順は次のとおりです。
割り当てる名前を選択します。この名前をデバイスにアクセスする全システムの間で一意に定まるものにします。上の例に示した WWID ほど長く複雑でなくてもかまいませんが,名前を変更したコンポーネントを認識でき,他のコンポーネントとも区別できるだけの情報が入る長さにしてください。
どのコンポーネントにこの名前を与えるかを決定します。名前を変更すると,そのコンポーネントはどのシステムでも同じコンポーネントとして認識されます。もちろん,システムを更新してコンポーネントが認識されるようにしなければなりません。
コンポーネントを共用する各システムは,その文字列を用いて新しい WWID を作成し,その後はシステムへの登録にこの新しい WWID を用います。内部的には,コンポーネントは依然として,省略時の WWID (存在していれば) を用いて追跡されます。しかし,外部的な表示はユーザ定義名に基づく新しい WWID で行われます。クラスタの場合には,デバイスにアクセスするすべてのクラスタ・メンバで
edit scsi
コマンド・オプションを実行しなければなりません。
注意
デバイスにアクセス可能なすべてのクラスタ・システムを更新しなければなりません。
次の例に,ユーザ定義名を割り当てる方法を示します。edit scsi
コマンド・オプションは,一意の WWID を持たないデバイスの場合にだけお勧めしますが,例ではわかりやすいようにディスクを対象にしています。
# /sbin/hwmgr show scsi SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOST TYPE SUBTYPE OWNER PATH FILE VALID ID NAME PATH ------------------------------------------------------------ 22: 0 ftwod disk none 0 1 dsk0 [0/3/0] 23: 1 ftwod cdrom none 0 1 cdrom0 [0/4/0] 24: 2 ftwod disk none 0 1 dsk1 [1/2/0] 25: 3 ftwod disk none 2 1 dsk2 [2/4/0]
このコマンドは,システム上にある SCSI デバイスを表示します。この表示からはわかりませんが,このシステムには共用バスがあり,ハードウェア・コンポーネントの 24 と 25 が実際には同じデバイスであるとします。このコンポーネントの WWID は,bus/target/LUN のアドレス情報を用いて作成されています。bus/target/LUN アドレスが異なっているので,このコンポーネントは別々のデバイスとして表示されます。オペレーティング・システムが 2 つの異なるデバイス特殊ファイル (dev/disk/dsk1
と
/dev/disk/dsk2
) をこのディスクへのアクセスに使用できるため,データが破壊されるおそれがあります。
次のコマンド例に,デバイスの名前を変更する方法と,名前を変更した後どのように表示されるかを示します。
# /sbin/hwmgr edit scsi -did 2 -uwwid "this is a test" hwmgr:Operation completed successfully. # /sbin/hwmgr show scsi -did 2 -full
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH ---------------------------------------------------------------------- 24: 2 ftwod disk none 0 1 dsk1 [1/2/0] WWID:0910003c:"DEC (C) DECZG41400123ZG41800340:d01t00002l00000" WWID:ff10000e:"this is a test" BUS TARGET LUN PATH STATE ------------------------------ 1 2 0 valid
この操作をもう一方のコンポーネント,つまりアドレス 2/4/0 のコンポーネントにも実行して,同じ名前を割り当てます。この操作を行うと,ハードウェア管理機能はユーザ定義名を用いてコンポーネントを調べ,それが同じデバイスへの代替パス名であると認識します。
# /sbin/hwmgr edit scsi -did 3 -uwwid "this is a test" hwmgr:Operation completed successfully. # /sbin/hwmgr show scsi -did 3 -full
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH ---------------------------------------------------------------------- 25: 3 ftwod disk none 0 1 dsk1 [2/4/0] WWID:0910003c:"DEC (C) DECZG41400123ZG41800340:d02t00004l00000" WWID:ff10000e:"this is a test" BUS TARGET LUN PATH STATE ------------------------------ 2 4 0 valid
これで,両方のデバイスが同じデバイス特殊ファイル名 (/dev/disk/dsk1
) を使うようになります。2 つの異なるデバイス特殊ファイルを通じて同じディスクにアクセスすることで生じるデータ破壊の危険がこれでなくなります。
3.4.10 SCSI デバイスの削除
SCSI デバイスをシステムから取り外したい場合があります。エラーが続いてログに記録されたために交換が必要になった場合などがそうです。SCSI コンポーネントをクラスタにあるすべてのハードウェア管理データベースから削除するには,delete scsi
コマンド・オプションを使用します。このオプションは,カーネルから対象コンポーネントの登録を解除し,そのデバイスに対する永続データベース・エントリをすべて削除した後,該当するデバイス特殊ファイルをすべて削除します。SCSI コンポーネントを削除すると,そこにはアクセスできなくなり,対応するデバイス特殊ファイルが
/dev
サブディレクトリから削除されます。現在オープンされている SCSI コンポーネントは,削除できません。デバイスへの I/O 接続 (マウントなど) はすべて外す必要があります。
SCSI コンポーネントをシステムから取り外した後で,そのコンポーネントに関する情報をシステムに残したくなければ,その SCSI コンポーネントを削除する必要があります。また,ハードウェアではなくオペレーティング・システムに問題があるために,SCSI コンポーネントを削除したいことがあります。たとえば,コンポーネントが正常に動作しているのにもかかわらず,何らかの理由でデバイス特殊ファイルによるアクセスが行えないということがあります。このような場合,そのコンポーネントをいったん削除した後,scan scsi
コマンド・オプションを用いてそのコンポーネントを検索して登録できます。
SCSI コンポーネントを交換する (または元のコンポーネントに戻す) には,scan scsi
コマンド・オプションを用いてそのコンポーネントを再度検索します。ただし,コンポーネントを削除し,scan
操作を実行してからそのコンポーネントをオンラインに戻しても,常に同じデバイス特殊ファイルを持つわけではありません。コンポーネントを交換して,オリジナルとまったく同じ複製として組み込む場合は,3.4.12 項
で述べる操作も実行する必要があります。コンポーネントがスキャンの際にアクティブに応答しなければ,scan
操作を行ってもコンポーネントを検出できないことがあります。
このオプションは,SCSI デバイス ID の
-did
を受け付けます。この ID は,HWID と同じものではありません。次の例に,SCSI データベースを調べて SCSI デバイスを削除する方法を示します。
# /sbin/hwmgr show scsi
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOST- TYPE SUBTYPE OWNER PATH FILE VALID NAME PATH ------------------------------------------------------------ 23: 0 bert disk none 2 1 dsk0 [0/3/0] 24: 1 bert cdrom none 0 1 cdrom0 [0/4/0] 25: 2 bert disk none 0 1 dsk1 [1/2/0] 30: 4 bert tape none 0 1 tape2 [1/6/0] 31: 3 bert disk none 0 1 dsk4 [1/4/0] 34: 5 bert disk none 0 1 dsk7 [2/5/0] 35: 6 bert disk none 0 1 dsk8
この例では,ID が 23 であるコンポーネントの
DRIVER OWNER
フィールドはゼロではありません。これは,デバイスがドライバによってオープンされていることを示します。DRIVER OWNER
フィールドがゼロ以外の値の場合,コンポーネントがドライバによってオープンされ,使用されていることを意味します。したがって,SCSI コンポーネントの 23 は,現在使用されているので削除できません。
しかし,ID が 35 のコンポーネントはドライバによってオープンされておらず,FIRST VALID PATH
フィールドに有効なパスが表示されていません。コンポーネントは現在アクセス不可能であり,安全に削除できます。デバイスを削除するとき,デバイス特殊ファイルの
/dev/disk/dsk8*
と
/dev/rdisk/dsk8*
も削除できます。
SCSI デバイスを削除する場合は,delete
オプションに SCSI DEVICEID という値を指定してから,次のようにして SCSI データベースを調べます。
# /sbin/hwmgr delete scsi -did 6 hwmgr: The delete operation was successful. # /sbin/hwmgr show scsi SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICE HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID ID PATH ------------------------------------------------------------- 23: 0 bert disk none 2 1 dsk0 [0/3/0] 24: 1 bert cdrom none 0 1 cdrom0 [0/4/0] 25: 2 bert disk none 0 1 dsk1 [1/2/0] 30: 4 bert tape none 0 1 tape2 [1/6/0] 31: 3 bert disk none 0 1 dsk4 [1/4/0] 34: 5 bert disk none 0 1 dsk7 [2/5/0]
コンポーネント
/dev/disk/dsk8
は正常に削除されています。
3.4.11 RAID アレイのディスクの構成設定
RAID アレイを再構成するとき,新しいブロック・ゼロは,以前のブロック・ゼロと同じブロックである可能性があります。そのため,ディスクラベルがディスクの範囲を越えていても有効なラベルと見なしてしまうアプリケーションによって問題が生じることがあります。スキャンを実行すると,システムは新しいユニットを
dsk
NN
として認識します。ディスクを使い始める前に,次のコマンドを実行して不適切なラベルをゼロに初期化します。
# /sbin/disklabel -z dskNN
RAID アレイに新しいユニットを作成した場合や,RAID アレイのユニットを構成する 1 つ以上のディスクを移動してホスト・バス・アダプタに直結したときは,このコマンドを実行します。
続いて,新しい省略時のラベルを作成するか,プロト・ファイルに基づいて事前構成されたラベルを適用するには,次のように disklabel コマンドを実行します。
# /sbin/disklabel -rwn dskNN # /sbin/disklabel -Rr dskNN PROTOFILE
SCSI ディスクが故障した場合,そのデバイスを交換して,交換した新しいディスクに故障デバイスのハードウェア特性 (そのデバイス特殊ファイルの所有者など) を継承させることができます。redirect
コマンド・オプションを使用すれば,そのような特性を割り当てることができます。たとえば,HSZ (RAID) キャビネットのディスクが故障したときは,その故障ディスクをホットスワップによって交換し,次に
redirect
コマンド・オプションを用いて新しいディスクを故障ディスクの代わりとしてオンラインにします。
故障したディスクを AdvFS または LSM などのアプリケーションが管理している場合は,この手順を単独では利用しないでください。管理されたディスクを交換する前に,ディスク管理アプリケーションを適切な状態にするか,管理アプリケーションからディスクを削除します。『Logical Storage Manager』および『AdvFS 管理ガイド』などの,適切なマニュアルを参照してください。
注意
redirect
操作を正常に実行させるには,交換するディスクが元のディスクと同じタイプのものでなければなりません。
次の例は,redirect
オプションの使い方を示します。
# /sbin/hwmgr show scsi SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICE- HOST- TYPE SUB- OWNER PATH FILE VALID ID NAME TYPE PATH --------------------------------------------------------- 23: 0 fwod disk none 2 1 dsk0 [0/3/0] 24: 1 fwod cdrom none 0 1 cdrom0 [0/4/0] 25: 2 fwod disk none 0 1 dsk1 [1/2/0] 30: 4 fwod tape none 0 1 tape2 [1/6/0] 31: 3 fwod disk none 0 1 dsk4 37: 5 fwod disk none 0 1 dsk10 [2/5/0]
この出力から,HWID 31 の SCSI ディスクが故障していることがわかります。このコンポーネントに有効なパスがありません。この故障ディスクを,デバイス特殊ファイル名が
/dev/disk/dsk4
で
dev_t
情報が同じである新しいディスクと交換するには,次の手順を使います。
ハードウェア・マニュアルの説明に従ってコンポーネントをインストールします。
次のコマンドを用いて新しいデバイスを検索します。
# /sbin/hwmgr scan scsi
このコマンドは,SCSI サブシステムを調べて,新しく見つかったデバイスを登録します。show scsi
コマンドをもう一度実行して,交換した新しいディスクの SCSI デバイス ID (did
) を調べます。
次のコマンドを用いて,故障ディスクのコンポーネント特性を交換ディスクに割り当て直します。この例では,新しいディスクに割り当てられた SCSI デバイスの ID (did
) が 36 であるとしています。
# /sbin/hwmgr redirect scsi -src 3 -dest 36
注意
ディスクに対する
redirect
オプションの実行が失敗した場合には,3.4.13 項 で説明している代替手順を使います。
3.4.13 故障した SCSI テープ・ドライブ (またはハード・ディスク) の交換
SCSI テープが故障した場合,そのデバイスを交換して,交換した新しいドライブに故障デバイスのハードウェア特性 (そのデバイス特殊ファイルの所有者など) を継承させることができます。SCSI テープ・ドライブまたはディスクによっては,3.4.12 項
で説明されている
redirect
コマンド・オプションが正しく動作しないことがあります。次の手順に従って,操作が正しく完了するようにします。この手順では,次の前提が適用されます。
交換用のテープ・ドライブは,元のドライブと同じモデルでなければならない。
SCSI テープ・ドライブが動作中に故障した場合,デバイス・ドライバがデバイスをクローズできないことがある。手順を実行する前に,デバイスをリセットするためにシステムをリブートします。
デバイスを追加または交換するためにシステムをシャットダウンする必要がある場合 (内蔵テープ・ドライブなどの場合) には,代替の手順を参照すること。
次のコマンドを用いて,故障したコンポーネントを確認します。
# /sbin/hwmgr show scsi SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICE- HOST- TYPE SUB- OWNER PATH FILE VALID ID NAME TYPE PATH --------------------------------------------------------- 31: 5 rocym tape none 2 1 tape0 [ ]
この出力から,HWID 31 の SCSI テープ・ドライブが故障していることがわかります。このコンポーネントに有効なパスがありません。この故障テープ・ドライブを,デバイス特殊ファイル名が
/dev/tape/tape2
で
dev_t
情報が同じである新しいテープ・ドライブと交換するには,次の手順を使います。
ハードウェア・マニュアルの説明に従ってコンポーネントをインストールします。
次のコマンドを使って,新しいデバイスをスキャンします。
# /sbin/hwmgr scan scsi | grep tape
次のコマンドを使って,故障したデバイスと交換デバイスの SCSI データベース・エントリを検索します。
# /sbin/hwmgr show scsi | grep tape
次の出力例のように,交換デバイスを示す新しいエントリと,元の (故障した) デバイスを示す不完全なエントリが表示されます。
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH --------------------------------------------------------------- 31: 5 rocym tape none 2 1 tape0 [ ] 35: 7 rocym tape none 0 1 tape5 [0/7/0]
hwmgr
コマンドに故障したデバイスのハードウェア識別子 (HWID) を指定して,そのデータベース・エントリを削除します。
# /sbin/hwmgr delete component -id 31
次のコマンドを使って,交換デバイスの名前を付け替え,故障したデバイスのデバイス特殊ファイルを移します。
# /sbin/dsfmgr -m tape5 tape0 tape5=>tape0 tape5_d0=>tape0_d0 tape5_d1=>tape0_d1 tape5_d2=>tape0_d2 tape5_d3=>tape0_d3 tape5_d4=>tape0_d4 tape5_d5=>tape0c
ホットスワップできないデバイスを交換する場合には,システムをシャットダウンする必要があります。その場合,この手順の最初の 2 つの手順を次のように変更します。
交換デバイスを挿入し,システムをブートします。ブート時に SCSI のスキャンが自動的に実行され,コンソールに交換デバイスが検出され登録されたことを示すメッセージが表示されます。
システムがシングル・ユーザ・モードになったら,次のコマンドを実行して交換デバイスが検出されたことを確認します。
# /sbin/hwmgr show scsi | grep device_type
device_type
には,disk
や
tape
など,デバイスのタイプを指定します。
元の手順の手順 3 に進みます。
3.4.14 hwmgr によるクラスタ・メンバのブート・ディスクの交換
シングル・システムでは,故障したディスクを交換する手順の中で,hwmgr
コマンドに
redirect
オプションを指定して使用できます。故障したディスクを交換するときは,redirect
オプションを使って,故障したコンポーネントから新しい交換デバイスに入出力をリダイレクトします。このオプションは,デバイス特殊ファイル名,クラスタの dev_t の値,ローカルの dev_t の値,論理 ID,および HWID をリダイレクトします。
redirect
オプションに指定できるのは一意のデバイス識別子 (did) だけです。クラスタの場合,デバイス識別子が一意であるとは限らず,次に示す例のように,コマンドがエラーになる可能性があります。
# /sbin/hwmgr redirect scsi -src source_did -dest target_did # "Error (95) Cannot start operation."
リダイレクト操作を正常に行うには,クラスタ上の各メンバにハードウェア識別子の両方が存在するか,どちらも存在しない必要があります。次の手順に従って,redirect
操作が正しく行われるようにします。
交換元と交換先のコンポーネントがともに存在することを確認します。クラスの各メンバにおいて,次のコマンドを使います。
# /sbin/hwmgr show scsi -did device_identifier SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOST TYPE SUBTYPE OWNER PATH FILE VALID PATH 32: DID rymoc disk none 2 1 dsk1 [0/1/0]
交換元コンポーネントが別のクラスタ・メンバ上に存在するが,交換先がそこに存在しない場合にだけ,この手順に従います。
交換先コンポーネントをこれらのクラスタ・メンバ上で次のように構成します。
# /sbin/hwmgr scan scsi
注意
バスのスキャンは非同期で実行されます。システム・プロンプトにすぐに戻りますが,これはスキャンが完了したことを示すわけではありません。多数のデバイスがあるシステムでは,スキャンの完了まで数分かかることがあります。
交換先コンポーネントがシステムの別のメンバ上に存在するが,交換元コンポーネントがそこに存在しない場合にだけ,この手順を実行します。
交換先コンポーネントをこれらのクラスタ・メンバから次のように削除します。
# /sbin/hwmgr delete scsi did
これで,redirect
オプションを使って,入出力を交換先のドライブに向けることができます。
3.4.15 name サブシステムの永続データベースの表示
name 永続データベースには,システムのハードウェア・トポロジに関する情報が保存されています。このデータはカーネルによって維持され,コントローラやバスに関するデータが含まれます。show name
コマンド・オプションを使って永続データを表示します。永続データは,他の
hwmgr
コマンドを用いて操作できます。
次の例は,小規模なシステムで
show name
コマンド・オプションを実行した場合の典型的な出力を示します。
# /sbin/hwmgr show name -member ychain HWID: NAME HOSTNAME PERSIST TYPE PERSIST AT ----------------------------------------------------- 13: isp0 ychain BUS pci0 slot 5 4: pci0 ychain BUS nexus 14: scsi0 ychain CONTROLLER isp0 slot 0 29: tu0 ychain CONTROLLER pci0 slot 11
出力には,次の情報が含まれています。
HWID:
- コンポーネントに対して一意に定まるハードウェア ID。この情報は,view hierarchy
コマンド・オプションで調べることもできます。
NAME
- コンポーネント名とインスタンス番号。PCI (Personal Computer Interconnect) バス 0 に対する
pci0
など。PCI バスごとにインスタンス番号が異なります。
HOSTNAME
- コマンドを実行したホスト。クラスタで作業している場合は,コマンドを実行するクラスタ名を指定できます。
PERSIST TYPE
- ハードウェア・コンポーネントの種類。通常はバスかコントローラです。
PERSIST AT
- コンポーネントの論理アドレス。ハードウェア内の物理位置に対応しています。たとえば,SCSI コントローラ
scsi0
は,バス
isp0
の
slot 0
にあります。
3.4.16 name 永続データベースからのコンポーネントの抹消と登録解除
name サブシステムを操作して,永続データベースからコンポーネントを削除することができます。hwmgr
コマンドには,登録解除の方法が 2 通りあります。
remove
- 永続データベースからエントリを登録解除する。動作中のシステムには影響しませんが,リブートするとそのコンポーネントは認識されなくなります。
delete
- 永続データベースからエントリを登録解除するとともに,動作中のシステムから抹消する。このコマンドはコンポーネントの登録と構成を解除し,すべてのハードウェア管理データベースから抹消します。
次の例は,小規模なシステムで
show name
コマンド・オプションを実行した場合の典型的な出力を示します。name
には,3.4.15 項
で説明した
show name
コマンド・オプションの出力で表示されるコンポーネント名を指定します。
# /sbin/hwmgr show name HWID: NAME HOSTNAME PERSIST TYPE PERSIST AT ------------------------------------------------------ 33: aha0 fegin BUS eisa0 slot 7 31: ln0 fegin CONTROLLER eisa0 slot 5 8: pci0 fegin BUS ibus0 slot 0 34: scsi1 fegin CONTROLLER aha0 slot 0 17: scsi0 fegin CONTROLLER psiop0 slot 0 15: tu0 fegin CONTROLLER pci0 slot 0
この例の出力では,2 つの SCSI アダプタが表示されています。scsi0
を対象にして
remove
操作を行っても,scsi1
は
scsi0
になりません。アダプタの位置に関する情報は
aha0s lot 0
のままで,scsi1
の名前はブートしても変わりません。
scsi0
を削除して
scsi1
の名前を変更するには,次のコマンドを使います。
# /sbin/hwmgr remove name -entry scsi0 # /sbin/hwmgr edit name -entry scsi1 -parent_num 0
無効なパスの数がシステムのブート時間に影響する場合があります。データベースの読み取りに余分の時間がかかるからではなく,SCSI サブシステムが無効かどうかにかかわらず各パスをスキャンするからです。このような無効なパスは,ストレージを別のアダプタに移動したり,アダプタを取り外したり交換するなどして,システムの構成に多数の変更を加えたときに発生します。ただし,予想外に多くの無効なパスがシステムにある場合には,構成に問題があるかもしれません。その場合には,refresh
オプションを使用する前に,技術サポート担当までご相談ください。
無効なパスを削除するには,次のオプションを使用します。
# /sbin/hwmgr refresh scsi
このコマンドは SCSI デバイスへの無効なパスを削除しますが,システムがデバイスへの第 1 パスと見なす無効パスは除きます。
refresh component
オプションは必ずしも使用する必要はなく,一般的にはブートに何の影響もしませんが,コマンドの出力がわかりやすくなります。ハードウェアの構成を大幅に変えたとき,特にコンポーネントを取り外したり交換したりしたときは,コマンド出力には多数の不要なエントリが表示されるようになります。これら未使用エントリは,次のコマンドを使ってコンポーネント・データベースを表示したときに目に見えます。
# /sbin/hwmgr show component
次のコマンドを使って,システムに戻されることのないコンポーネントに対応するデータベース・エントリを削除します。
# /sbin/hwmgr refresh component
コンポーネント名は,使用されているドライバ・インタフェースと,デバイスのインスタンスに基づいています。たとえば,tu0
という名前のコンポーネントは,Tulip Ethernet インタフェースをサポートする NIC です
(
tu
(7)ee
N
という名前のコンポーネントとして登場します
(
ee
(7)
コンポーネントは,この物理位置に基づいて永続タイプと永続位置を割り当てられます。この情報は,name データベースに格納されます。永続タイプとしては,ネットワーク・コントローラや,一連のスロットを提供する PCI (Peripheral Component Interconnect) バスなどがあります。コンポーネントの永続位置は,PCI バス 1 のスロット 2 や,主バス位置 (nexus) など,バス上の特定のスロットの論理アドレスがあります。
次の手順は,使用したい名前をコンポーネントに割り当てる方法を示します。これによって,複数の異なるシステムの間でコンポーネント名に一貫性を持たせて,特定のコンポーネントを指定するスクリプトの保守を簡単にできます。
注意
HP では,可能な限りシステムにコンポーネント名を動的に割り当てさせることを推奨します。環境を更新するときにシステムのカスタム設定を保存することを可能にする代替手順もあります。たとえば,システムのクローニングを行うためのサポートされている方法は,インストレーション・クローニング・ユーティリティです。使用しているオペレーティング・システムのバージョンに対応する『インストレーション・ガイド -- 上級ユーザ編』を参照してください。コンポーネント名は動的なので,ローカルのスクリプトやプログラムがコンポーネント名に依存しないように作ることを考えてください。そのために,
hwmgr
およびdsfmgr
コマンドを使ってコンポーネント名とコンポーネントを利用できるかどうかを簡単に調べることができます。静的な名前を指定しなければ,スクリプトやプログラムの信頼性や移植性ははるかに高くなります。
次の
hwmgr
コマンドを使って name データベースの内容を表示できます。
# /sbin/hwmgr show name HWID: NAME HOSTNAME PERSIST TYPE PERSIST AT --------------------------------------------------------- 41: ata1 rocym BUS pci0 slot 205 39: ata0 rocym BUS pci0 slot 105 56: ee2 rocym CONTROLLER pci3 slot 5 19: ee1 rocym CONTROLLER pci2 slot 5 18: ee0 rocym CONTROLLER pci2 slot 4 54: itpsa1 rocym BUS pci3 slot 4
一部が省略されているこの出力例は,システムに 3 つの NIC があり,ee0
,ee1
,および
ee2
という名前であることを示します。この出力例は,コンポーネント
ee1
の物理位置が PCI バス 2,スロット 5 であることなど,ネットワーク・コンポーネントの物理位置も示します。
コンポーネントの名前を
ee3
,ee4
および
ee5
に変えるには,3.4.18.2 項
の手順に従います。
3.4.18.2 コンポーネント名の変更
コンポーネント名を変更するには次の手順に従います。
次のコマンドを使って,name データベースからハードウェア永続エントリを削除します。
# /sbin/hwmgr remove name -entry ee0 # /sbin/hwmgr remove name -entry ee1 # /sbin/hwmgr remove name -entry ee2
名前を変更したいすべてのコンポーネントについて,このコマンドを繰り返します。この操作は,削除する名前を使用しているハードウェア・コンポーネントには影響しません。リブートにまたがった名前の維持にだけ影響します。
注意
delete
オプションの代わりにremove
オプションを使うと,コンポーネントの属性設定がすべて維持されます。たとえば,コンポーネントee0
について,そのuser_name
属性の値を指定することで,独自にユーザ名を定義できます。ユーザ定義の名前 (および他のカスタマイズされた設定) は,delete
オプションを使うと維持されません。
次のコマンドを使って,システムをシャットダウンしリブートします。
# shutdown -r now
システムのリブート時に,永続名が再作成されます。新しい名前がハードウェアが検出された順番で割り当てられます。たとえば,ee0
はハードウェアのスキャン時に最初に見つかった NIC に割り当てられ,ee1
はその次に見つかったものに,そしてすべてのコンポーネントが検出されるまで以降同様となります。
次のコマンドを使って,各コンポーネントの以前の名前を name データベースから削除します。
# /sbin/hwmgr delete name -entry ee0 # /sbin/hwmgr delete name -entry ee1 # /sbin/hwmgr delete name -entry ee2
名前の変更が正しく行われたことを次のようにして確認します。
次のコマンドを使って,どのコンポーネントが特定の PCI スロットに対応するかを確認します。ここでは,コマンドを使って
ee*
という条件に当てはまるコンポーネントを検索しています。
# /sbin/hwmgr show name | grep ee . . . 56: ee5 rocym CONTROLLER pci3 slot 5 19: ee4 rocym CONTROLLER pci2 slot 5 18: ee3 rocym CONTROLLER pci2 slot 4 . . .
次のコマンドを使って,不正な名前がすべて name データベースから恒久的に削除されたことを確認します。
# /sbin/hwmgr show components | grep ee . . . 18: rocym r---- none ee3 19: rocym r---- none ee4 56: rocym r---- none ee5 . . .
名前の変更が正しくできていないようであれば,次の表に示すトラブルシューティングの方法を試してみます。
問題 | 考えられる解決策 |
|
システムをシャットダウンし,コンソール・コマンドを使って,コンポーネントが構成の一部として表示されることを確認する。コンポーネントが表示されない場合,コンポーネントのテストと検証の手順についてハードウェアのドキュメントを参照する。 |
コンポーネントは表示されるが,エラーが発生しているように見える。 |
コンポーネントがコンソールに表示された場合には,システムをリブートし,ブート・メッセージにコンポーネント固有のエラーが表示されないことを確認する。このようなメッセージは, |
システムが正常にリブートするが,ブート後にコンポーネント・エラーが発生する。 |
Event Viewer (EVM) を使用してバイナリ・イベント ( # sysman event_viewer
イベント・ビューアと関連する診断ツールの詳細については,使用するオペレーティング・システムのバージョンに対応する 『システム管理ガイド』を参照すること。 |
正常なリブートと名前変更が行われたにもかかわらず,1 つ以上のコンポーネントの名前が依然として正しくない。 |
コンポーネントがシステムに接続されており,Hardware Manager から認識できることを確認したら,名前変更の手順を再度実行する。 |
コンポーネントの名前を変更できない。 |
まれに,ハードウェア・データベースの内容が壊れることがある。そのような状態のデータベースを編集またはリフレッシュしてはならない。技術サポート担当まで連絡して支援を受けるか,完全インストールを実施してカスタマイズを再度行う。 |
Tru64 UNIX では,コンポーネント名は一意になるように作られています。一部のハードウェア・コンポーネントは,その物理位置に基づいて一意の名前が作られます。特に,ほとんどのバスとコントローラは,システム全体で一意の名前を,その物理位置に基づいて作られます。そのようなコンポーネントのシステム内での物理位置を,ある位置から別の位置に変えてシステムをリブートすると,コンポーネントが新しい名前を持つ新しいデバイスとして表示されることがあります。
特定のコンポーネント (ネットワーク・カードなど) を指定するスクリプトやプログラムは,コンポーネントの名前が変わると,それを見つけられなくなることがあります。システム内のコンポーネントを移動するときに,元のコンポーネント名を維持することができます。この節で説明する手順は,コンポーネント名を維持する方法を示します。ここでは移動コンポーネントの例として,メモリ・チャネル・カードを使います。
3.4.19.1 コンポーネント名の探索
多くのコンポーネント名は,デバイスによって使われるドライバのインタフェースと,デバイスのインスタンスに基づいています。たとえば,mchan0
という名前のコンポーネントは,インスタンス
0
のメモリ・チャネル・カードです。コンポーネントは,この物理位置に基づいて永続タイプと永続位置を割り当てられます。この情報は,name データベースに格納されます。
次の
hwmgr
コマンドを使って name データベースの内容を表示できます。
# /sbin/hwmgr show component HWID: NAME HOSTNAME PERSIST TYPE PERSIST AT 62: ata0 host12 BUS pci0 slot 15 45: emx2 host12 BUS pci0 slot 1 228: mchan0 host12 CONTROLLER pci1 slot 9 . . .
コンポーネントは,複数のスロットを提供する PCI (Peripheral Component Interconnect) のようなバスにインストールされている場合があります。前記の出力では,PERSIST AT
フィールドは以下で構成されています。
parent_nam
- 親コンポーネントの論理名。PCI バスを示す
pci0
など。
parent_num - 親の場所の物理アドレス。PCI バス 1 の 15 番スロットなど。
特定のコンポーネントの下の 2 次コンポーネントのトポロジを表示するは,hwmgr view hierarchy
コマンドを次のように使って,コンポーネントのハードウェア識別子を指定します。
# /sbin/hwmgr view hierarchy -id 610 HWID: hardware hierarchy ------------------------------------------------------- 610: bus pci2 611: connection pci2slot0 617: scsi_adapter itpsa0 618: scsi_bus scsi0 674: disk bus-0-targ-5-lun-0 cdrom51 613: connection pci2slot1 619: scsi_adapter itpsa1 620: scsi_bus scsi1 208: disk bus-1-targ-0-lun-0 dsk1188 209: disk bus-1-targ-1-lun-0 dsk1189 210: disk bus-1-targ-2-lun-0 dsk1190 615: connection pci2slot2 621: network tu0
コンポーネントは次のようにして再配置します。
次のコマンドを使って,再配置するコンポーネントの現在のバスとスロット位置を調べます。この例では,メモリ・チャネル・カード (mchan
) を指定します。
# /sbin/hwmgr show name | mchan 228: mchan0 host12 CONTROLLER pci1 slot 9
次のようにコンポーネントの新しい位置を指定して,ハードウェア name データベースを更新します。
# /sbin/hwmgr edit name -entry mchan0 parent_num 5 slot 8
このコマンドは,コンポーネント
mchan0
を PCI バス 1 (pci1
),スロット 9 の現在の位置から,PCI バス 5 (pci5
),スロット 8 の新しい位置に再配置します。
注意
使用したい名前と位置のペアが取得できない場合には,
hwmgr remove name
コマンドまたはhwmgr delete entry
コマンドを使って,データベース内の既存の名前を削除する必要があるかもしれません。ただし,既存の (移動しない) コンポーネントの必要なエントリを削除しないよう注意してください。
次のようにして,システムをシャットダウンします。
# /usr/sbin/shutdown now
コンポーネントを新しいスロットに物理的に再配置します。
システムをリブートし,次のようにしてシングルユーザ・モードにします。
>>> boot -flags s
コンポーネントが正しい位置で検出されたことを確認します。
# /sbin/hwmgr show name | mchan 228: mchan0 host12 CONTROLLER pci5 slot 8
次のようにして,システムをマルチユーザ・モードにブートします。
# [Ctrl/D] 228: mchan0 host12 CONTROLLER pci5 slot 8
問題 | 考えられる解決策 |
ほとんどの場合,この問題は新しい位置にコンポーネントを正しくインストールできなかったときに生じる。 |
システムをシャットダウンし,コンソール (>>>) のコマンドを使って,コンポーネントが構成の一部として表示されることを確認する。表示されたら,再配置の手順を再度実行する。 コンポーネントが表示されない場合,コンポーネントのテストと検証の手順についてハードウェアのドキュメントを参照する。 |
コンポーネントは表示されるが,エラーが発生しているように見える。 |
コンポーネントがコンソールに表示された場合には,システムをリブートし,ブート・メッセージにコンポーネント固有のエラーが表示されないことを確認する。このようなメッセージは, |
システムが正常にリブートするが,ブート後にコンポーネントエラーが発生する。 |
Event Viewer (EVM) を使用してバイナリ・イベント ( # sysman event_viewer
イベント・ビューアと関連する診断ツールの詳細については,使用するオペレーティング・システムのバージョンに対応する 『システム管理ガイド』を参照すること。 |
正常なリブートと再配置が行われたにもかかわらず,1 つ以上のコンポーネントの名前が依然として正しくない。 |
コンポーネントを新しい位置に正しく挿入したことを確認する。 コンポーネントがシステムに接続されており,Hardware Manager から認識できることを確認したら,再配置の手順を再度実行する。 |