3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

Linuxでデバイスドライバを確認する方法

PRIMERGY RX100 S7を入れたけど、ちゃんとストレージドライバが認識されているのか確認しようと思いました。

メーカーページよると、CentOS6.2は未サポートOSになっていますが、以下に動作検証の確認情報は掲載されています。 http://jp.fujitsu.com/platform/server/primergy/software/linux/products/distribution/pdf/rx100s7-non-support-os.pdf

上記動作検証情報ではストレージコントローラー毎に検証結果が載っています。

さて、Linuxで現在読み込んでいるデバイスのモジュール(ドライバ)を表示するには、lsmodコマンドを使います。 実行するとこんな感じでした。

# lsmod
Module                  Size  Used by
ebtable_nat             2009  0
ebtables               18135  1 ebtable_nat
ipt_MASQUERADE          2466  3
iptable_nat             6158  1
nf_nat                 22726  2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4       9506  4 iptable_nat,nf_nat
nf_defrag_ipv4          1483  1 nf_conntrack_ipv4
ipt_REJECT              2383  2
xt_CHECKSUM             1303  1
iptable_mangle          3349  1
iptable_filter          2793  1
ip_tables              17831  3 iptable_nat,iptable_mangle,iptable_filter
bridge                 79790  0
stp                     2173  1 bridge
llc                     5642  2 bridge,stp
fuse                   66285  2
autofs4                26888  3
sunrpc                243758  1
cpufreq_ondemand       10448  4
acpi_cpufreq            7955  0
freq_table              4881  2 cpufreq_ondemand,acpi_cpufreq
mperf                   1557  1 acpi_cpufreq
ip6t_REJECT             4628  2
nf_conntrack_ipv6       8748  2
nf_defrag_ipv6         12182  1 nf_conntrack_ipv6
xt_state                1492  3
nf_conntrack           79453  6 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
ip6table_filter         2889  1
ip6_tables             19458  1 ip6table_filter
ipv6                  322029  49 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
vhost_net              31384  1
macvtap                 9036  1 vhost_net
macvlan                10180  1 macvtap
tun                    17051  4 vhost_net
kvm_intel              50380  4
kvm                   305081  1 kvm_intel
uinput                  8216  0
power_meter             9343  0
sg                     30124  0
microcode             112594  0
i2c_i801               11231  0
i2c_core               31276  1 i2c_i801
iTCO_wdt               13662  0
iTCO_vendor_support     3088  1 iTCO_wdt
e1000e                219372  0
ext4                  364410  2
mbcache                 8144  1 ext4
jbd2                   88738  1 ext4
sr_mod                 16228  0
cdrom                  39771  1 sr_mod
sd_mod                 39488  4
crc_t10dif              1541  1 sd_mod
ahci                   40455  0
mptsas                 52939  3
mptscsih               36732  1 mptsas
mptbase                93845  2 mptsas,mptscsih
scsi_transport_sas     35070  1 mptsas
dm_mirror              14101  0
dm_region_hash         12170  1 dm_mirror
dm_log                 10122  2 dm_mirror,dm_region_hash
dm_mod                 81500  2 dm_mirror,dm_log

sg がどうも汎用 SCSI ドライバーのようです。 lsmodの結果に sg がでているのでドライバはロードされているようです。

ちなみに、grep を実行しても sg ドライバーに関する情報が何も表示されない場合には、次のように手動で sg ドライバーをロードします。

# modprobe sg 

sg_map コマンドで、詳細な情報がわかるようです。今回ハードウェアRAID1を組んでたんですが、ディスク名もわかりました。 なお、sg_mapには sg3_utils がいるので、入っていない場合以下のようにインストールが必要です。

# yum install sg3_utils

# sg_map -i
/dev/sg0  SEAGATE   ST3300657SS       1703
/dev/sg1  SEAGATE   ST3300657SS       1703
/dev/sg2  /dev/sda  LSILOGIC  Logical Volume    3000
/dev/sg3  /dev/scd0  TEAC      DV-28S-Y          F.4A

さて、最初にあげた富士通の対応表では、以下のストレージコントローラー別に分かれています。

SASアレイコントローラカード RAID Ctrl SAS6G 5/6 512M(D2616) [PY-SR2C2]
SASアレイコントローラカード RAID Ctrl SAS6G 0/1(D2607) [PY-SR2L2]
SASコントローラカード Integrated Mirroring Enhanced SAS [PY-SC1L4]
オンボード SATAコントローラ(ソフトウェアRAID)

じゃあ、今回のサーバはどれを使っているのかを調べ見てることにしました。

lspciコマンドを使うと、デバイス一覧が表示されます。

# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 Processor Family DRAM Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:16.1 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #2 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b4)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b4)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
00:1f.0 ISA bridge: Intel Corporation C202 Chipset Family LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)
01:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 08)
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 07)

SCSI storage controllerが「LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS」になっている。

対応表をみると、「SASコントローラカード Integrated Mirroring Enhanced SAS [PY-SC1L4]」のところの詳細ページに、「・RAIDLSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS(rev 04) 【mptsas】」とあります。
これで、どのデバイスかちゃんとわかりました。 mptsasはlsmodでもでてきているので、ドライバもきちんと入っているようです。

なかなかLinuxのドライバ関連がよく分かっていない3流PGです。

参考:
IBM:Linux の汎用 SCSI ドライバー
ITmedia:Linuxハードウェア認識の基礎