よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

HDDに関連する情報を知る方法

HDDから異音がし始めたり、ディスクI/Oまわりでエラーが発生した場合にHDDに関する情報をサーバ管理者ならすぐに確認したいものです。

HDDなどのデバイスに関する情報はBIOSで確認することができますが、稼働中のサーバを停止させて確認する場合は、周知に報知したり、稼働中のサービスが何なのかなどを調べたりしなくてはいけなかったりもします。

サーバの設計/構築を自分自身でしている場合は、デバイスのメーカや型番まで頭の中にあるかもしれませんが、管理を引き継いだ場合はやはり調べる必要があります。

そんなときには、以下で述べる方法でHDDの詳細を知ることができます。

まずは、HDDがIDE接続なのかSCSI接続なのかを確認するために df コマンドを実行します。

[linux]$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda1 4.0G 3.2G 565M 86% /
・・・(略)

上記の結果では、がsdaとなっているため、SCSI接続であることがわかります。
仮にhdaなどと表示されていたらIDE接続となります。
※キーとなる文字は、最初の文字が『s』なのか『h』なのかです。
ちなみにシリアルATAのHDDを利用している場合は、SCSI接続であると認識されるようになっています。

それでは続いて、HDDの情報を確認してみましょう。

[linux]$ cat /proc/scsi/scsi

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: FB080C4080 Rev: n/a
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: FB080C4080 Rev: n/a
Type: Direct-Access ANSI SCSI revision: 05

今回、利用したサーバはProLiant ML115であり、標準HDDは、FB080C4080と
なっているようです。

ちなみにIDE接続の場合は、以下のコマンドになります。

[linux]$ cat /proc/ide/hda/model

TSSTcorp CD-ROM TS-H192C

今回は、HDDではなく、CD-ROMドライブを認識していたようです。

最近のHDDならサポートしていないものは無いかと思いますが、HDDがSMARTをサポートしている場合は、以下のコマンドでも調査することが可能です。

[linux]$ sudo /usr/sbin/smartctl -i /dev/sda -d ata

smartctl version 5.36 [i686-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model: FB080C4080
Serial Number: XXXXXXXXXX
Firmware Version: HPF0
User Capacity: 80,026,361,856 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 4a
Local Time is: Mon Dec 15 00:00:00 2008 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

すべての情報を見るためには、a オプションを指定してください。

[linux]$ smartctl -a /dev/sda -d ata

最後に、RAIDについてです。RAIDが組まれているとしてもRAID何で組まれているかによって障害が発生したときの対応はことなってきます。
そのため、RAID何なのかを調査する方法を知っている必要があります。
ソフトウェアRAIDに関する情報は以下のコマンドで取得します。
※今までの説明で利用したサーバとは異なるサーバのシステム情報であるため、認識しているデバイスがmd0とmd1となっています。

[linux]$ cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
[サイズ] blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
[サイズ] blocks [2/2] [UU]

この場合、RAID 1でミラーリングしていることがわかります。

ちなみにハードウェアRAIDの場合は、dmesgで確認することができます。

scsi0 : ServeRAID
Vendor: ServeRA Model: 8k-l Mirror Rev: V1.0
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: [サイズ] 512-byte hdwr sectors (159896 MB)

今回、紹介したHDD周りの情報を取得するためのコマンド等を覚えておけば、ディスク障害などが発生した際にも迅速な対応ができるようになるはずです。