「S.M.A.R.T.」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
1行目: 1行目:
 
[[Category:ストレージ]]
 
[[Category:ストレージ]]
 
[[en:S.M.A.R.T.]]
 
[[en:S.M.A.R.T.]]
S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) は近代的なストレージデバイスに内蔵されている補助コンポーネントです。温度・代替処理された不良セクタの数・シークエラーなどの統計が保存され、ソフトウェアはそれらの値からデバイスの健康状態を推察し、故障を予測したり値が不安定なときに通知することができます。
+
S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) は近代的なストレージデバイスに内蔵されている補助コンポーネントです。ストレージの温度・代替処理された不良セクタの数・シークエラーなどの統計からデバイスの健康状態を推察し、故障を予測したり危険な値が出たときに通知することができます。
  +
 
== Smartmontools ==
 
== Smartmontools ==
   
7行目: 8行目:
   
 
=== デバイスが SMART 対応かどうか確認する ===
 
=== デバイスが SMART 対応かどうか確認する ===
デバイスが SMART 機能を有しているかどうかチェックするには次のコマンドを実行します (対象が ATA デバイスの場合 {{ic|-d ata}} オプションが必要です):
+
デバイスが SMART 機能を有しているかどうかチェックするには次のコマンドを実行します (対象が ATA デバイスの場合 {{ic|1=--device=ata}} オプションが必要です):
   
# smartctl -i /dev/<device>
+
# smartctl --info /dev/<device>
   
(<device> は {{ic|sda, hda,...}} のように置き換えて下さい)。このコマンドはデバイスに関する全般的な情報を表示します。対応している場合、下の2つの行が確認できるはずです:
+
<device> は {{ic|sda, hda,...}} などに置き換えて下さい。このコマンドはデバイスに関する全般的な情報を表示します。対応している場合、下の2行が確認できるはずです:
   
 
SMART support is: Available - device has SMART capability.
 
SMART support is: Available - device has SMART capability.
18行目: 19行目:
 
SMART が有効でない場合、以下を実行して有効化します:
 
SMART が有効でない場合、以下を実行して有効化します:
   
# smartctl -s on /dev/<device>
+
# smartctl --smart=on /dev/<device>
   
 
=== デバイスの健康状態を調べる ===
 
=== デバイスの健康状態を調べる ===
実行中のデバイスの健康状態を調べる3つの方法があります(どもユーザーデータには影響を与えません):
+
実行中のデバイスの健康状態を調べる3つの方法があります (どのテストもユーザーデータには影響を与えません):
   
# Short (検出されているデバイスの中で問題のありそうなデバイスを精査する)
+
# Short (デバイスの問題を高い確率で発見するテ実行する)
# Extended (または Long。Short のチェックを全ての部分で行う)
+
# Extended (または Long。ディスク完全なチェックを行う)
# Conveyance (デバイスの送中に深刻なエラーが発生した場合にそれを特定する)
+
# Conveyance (デバイスの送中に破損が発生しなかっか確認する)
   
デバイスがどのテストに対応しているのか、そしてそれらの診断にどれくらい時間がかかるのか調べるには以下を実行します:
+
{{ic|-c}} (または {{ic|--capabilities}}) フラグを使うことでデバイスがどのテストに対応しているのか、そしてそれらの診断にどれくらい時間がかかるのか調べられます:
  +
# smartctl -c /dev/<device>
 
  +
# smartctl -c /dev/sda
  +
[…]
  +
Short self-test routine
  +
recommended polling time: ( 1) minutes.
  +
Extended self-test routine
  +
recommended polling time: ( 74) minutes.
  +
Conveyance self-test routine
  +
recommended polling time: ( 2) minutes.
  +
[…]
   
 
テストを実行するには:
 
テストを実行するには:
36行目: 46行目:
 
# smartctl -t conveyance /dev/<device>
 
# smartctl -t conveyance /dev/<device>
   
{{Note|SSD などのディスクは全てのテストに対応していないことがあります。デバイスが何に対応しているか調べるには {{ic|smartctl --capabilities /dev/<device>}} を実行してください。}}
+
{{Note|SSD などは全てのテストに対応していないことがあります。}}
==== 結果 ====
+
==== テスト結果を表示 ====
   
  +
デバイスの健康状態は {{ic|-H}} フラグで表示できます。デバイスが不健康だと報告された場合、デバイスが既に壊れているか、あるいは24時間に故障することが予想されます。できる限り早くディスクからデータを抜き出して、どこか別のところにコピーすることを推奨します:
(全てのテストから集めた)テストによる全体の健康状態を見るには:
 
   
 
# smartctl -H /dev/<device>
 
# smartctl -H /dev/<device>
   
テストのエラー数を表示するには:
+
最近のテスト結果リストを表示するには:
   
 
# smartctl -l selftest /dev/<device>
 
# smartctl -l selftest /dev/<device>
   
の詳細な記録を表示するには:
+
デバイスの詳細な情報を表示するには:
   
 
# smartctl -a /dev/<device>
 
# smartctl -a /dev/<device>
 
エラーが記録されていない場合、おそらくデバイスは健康です。もしエラーが多少記録された場合、問題があるかもしれないのでさらなる調査が必要です。デバイスが再起不能に陥る前にデータのバックアップを取りリプレースすることを推奨します。
 
   
 
=== デバイスの監視 ===
 
=== デバイスの監視 ===
smartmontools デーモンにより、デバイスバックグラウンドで定期的に監視して、任意で潜在的問題メールするようにすることができます。起動時にデバイスを監視するには、smartd サービスを有効にしてください:
+
smartd デーモンは SMART の状態を監視して、何か問題が発生したらメールを送信します。起動時にデバイスを監視するには、[[systemd]] で {{ic|smartd.service}} ユニットを有効にしてください。{{ic|/etc/smartd.conf}} で設定をすることが可能です。
systemctl enable smartd.service
 
   
  +
{{Tip|{{ic|/etc/smartd.conf}} は幾分難解なコマンドライン式のオプションを使って設定します。ファイルの中にあるコメントや例を見たり、[http://smartmontools.sourceforge.net/man/smartd.conf.5.html manpage] を参照してください。以下は監視オプションの例です。}}
smart デーモンは {{ic|/etc/smartd.conf}} に更に細かい設定をすることが可能です。
 
   
{{Tip|{{ic|/etc/smartd.conf}} は幾分難解なコマンドライン式のオプションを使って設定します。ファイルの中にあるコメントや例を見たり、[http://smartmontools.sourceforge.net/man/smartd.conf.5.html manpage] を参照してください。以下は監視オプションの例です。}}
 
 
==== 監視するデバイスの定義 ====
 
==== 監視するデバイスの定義 ====
   
全てのデバイスの全ての属性を監視するには以下を定義します:
+
全てのデバイスの全ての属性を監視するには以下を記述します:
   
  +
DEVICESCAN -a
DEVICESCAN
 
   
あるいは、個々デバイスを監視対象にするには以下ように定義します:
+
{{ic|/dev/sda}} と {{ic|/dev/sdb}} の全て SMART エラーを監視するには (他デバイスは無視):
#DEVICESCAN
 
/dev/<first_device> -a
 
/dev/<second_device> -a
 
   
  +
{{hc|/etc/smartd.conf|
{{Tip|ディスク別に異なるモニタリングオプションを指定したい場合、{{ic|DEVICESCAN}} を使うのではなく個々に設定してください。}}
 
  +
/dev/sda -a
  +
/dev/sdb -a
  +
}}
  +
  +
外部接続されたディスクの SMART エラーを監視する場合、再起動で {{ic|/dev/sdX}} が変わってしまう可能性があるため、UUID を使用するほうが良いでしょう。
  +
  +
まず、監視したいディスクの UUID を確認します:
  +
{{hc|ls -lah /dev/disk/by-uuid/|
  +
lrwxrwxrwx 1 root root 9 Nov 5 22:41 820cdd8a-866a-444d-833c-1edb0f4becac -> ../../sde
  +
lrwxrwxrwx 1 root root 10 Nov 5 22:41 b51b87f3-425e-4fe7-883f-f4ff1689189e -> ../../sdf2
  +
lrwxrwxrwx 1 root root 9 Nov 5 22:42 ea2199dd-8f9f-4065-a7ba-71bde11a462c -> ../../sda
  +
lrwxrwxrwx 1 root root 10 Nov 5 22:41 fe9e886a-8031-439f-a909-ad06c494fadb -> ../../sdf1
  +
}}
  +
  +
次に、{{ic|/dev/disk/by-uuid/}} のパスを使って監視したいディスクを SMARTd に設定してください:
  +
  +
{{hc|/etc/smartd.conf|
  +
/dev/disk/by-uuid/820cdd8a-866a-444d-833c-1edb0f4becac -a
  +
}}
   
 
==== 潜在的な問題をメールする ====
 
==== 潜在的な問題をメールする ====
   
新しいエラーが発生したり、なんらかの問題が発生した時にメールされるようにしま{{ic|-m}} を用います:
+
新しいエラーが発生したり、らかの問題が発生した時にメールされるようにするには、{{ic|-m}} を用います:
   
 
DEVICESCAN -m address@domain.com
 
DEVICESCAN -m address@domain.com
   
(root メールアカウントではなく) 外部にメールを送信するには、MTA (Mail Transport Agent) か MUA (Mail User Agent) の事前の設定が必要です。一般的な MTA は [[msmtp|MSMTP]] と [[SSMTP]] です。一般的な MTU は sendmail [[Postfix]] です。メールするだけなら、[[en2:S-nail|S-nail]] を設定するだけで足ります。
+
(root メールアカウントではなく) 外部にメールを送信するには、MTA (Mail Transport Agent) か MUA (Mail User Agent) のインストール・設定が必要です。よく使われる MTA は [[msmtp]] と [[SSMTP]] です。よく使われる MTU は sendmail [[Postfix]] です。メールするだけなら、[[en2:S-nail|S-nail]] を設定するだけで足ります。
   
  +
{{ic|-M test}} オプションを使うと smartd デーモンが起動するたびにテストメールが送信されます:
メールエージェントを設定したら、{{ic|-M test}} を使って一度メールが正しく送れるかどうか確認することができます (デーモンをすぐに再起動してください):
 
  +
DEVICESCAN -m address@domain.com -M test
 
  +
{{hc|/etc/smartd.conf|DEVICESCAN -m address@domain.com -M test}}
  +
  +
メールが届くまでに時間がかかることもあります。すぐに対応が必要な場合、以下のようにスクリプトを定義すると良いでしょう:
  +
  +
{{hc|/etc/smartd.conf|DEVICESCAN -m address@domain.com -M exec /usr/local/bin/smartdnotify}}
  +
  +
メールを送信してシステムの通知を表示するには、{{ic|/usr/local/bin/smartdnotify}} に以下を記述:
  +
  +
#!/bin/sh
  +
  +
# Send mail
  +
echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"
  +
  +
# Notify user
  +
wall "$SMARTD_MESSAGE"
   
 
==== 電源管理 ====
 
==== 電源管理 ====
あなたのコンピューターが電源管理下にあのならsmartd に低電圧時の HDD いについて義しておくべきです。通常スピンアップ時は SMART への反応は smartd コマンドによって発行されます。もしこのオプションを使用しないなら,低電圧運転中に smartd による定期的な監視時にスピンアップ高電モードになることがあります
+
電源管理によってコンピュータを制御してい場合、低電力モードの HDD う方法を設するべきです。通常SMART コマンドが実行されるとディスクのプラッタはスピンアップします。以下のオプションを使うことで、低電圧モードの HDD 定期的にスピンアップさせて高電モードになってしまうを防げます:
 
DEVICESCAN -n standby,15,q
 
DEVICESCAN -n standby,15,q
   
 
詳しい情報は [http://sourceforge.net/apps/trac/smartmontools/wiki/Powermode smartmontools wiki] を見てください。
 
詳しい情報は [http://sourceforge.net/apps/trac/smartmontools/wiki/Powermode smartmontools wiki] を見てください。
  +
  +
デバイスによっては -n が機能しない場合があります。syslog に以下のようなエラーメッセージが出力されます:
  +
  +
{{
  +
hc|journalctl -u smartd|
  +
CHECK POWER MODE: incomplete response, ATA output registers missing
  +
Device: /dev/sdb [SAT], no ATA CHECK POWER STATUS support, ignoring -n Directive
  +
}}
  +
  +
別の方法として smartd の -i オプションを利用することがあります。状態を確認するためにディスクをスピンアップする頻度を制御します。デフォルトは30分です。頻度を変更するには {{ic|/etc/default/smartmontools}} を作成・編集 (例: 3時間ごとに確認):
  +
  +
{{
  +
hc|
  +
head=/etc/default/smartmontools|
  +
output=SMARTD_ARGS="-i 21600"
  +
}}
  +
  +
詳しくは [http://www.smartmontools.org/browser/trunk/smartmontools/smartd.8.in smartd manpage] を参照してください。
  +
 
==== 自己診断の予定を組む ====
 
==== 自己診断の予定を組む ====
   
smartd はスケジュールに従って自己診断の実行をするようディスクに通知することができます。以下の {{ic|/etc/smartd.conf}} 設定では毎日午前2-3時の間に短い自己診断
+
smartd はスケジュールに従って自己診断の実行をするようディスクに通知することができます。以下の {{ic|/etc/smartd.conf}} 設定では毎日午前2-3時の間に短い自己診断、土曜日の午前3-4時の間に長い自己診断が行われるようにします:
加えて、土曜日の午前3-4時の間に長い自己診断が行われるようにします:
 
   
 
DEVICESCAN -s (S/../.././02|L/../../6/03)
 
DEVICESCAN -s (S/../.././02|L/../../6/03)
100行目: 155行目:
 
DEVICESCAN -W 4,35,40
 
DEVICESCAN -W 4,35,40
   
  +
{{Tip|
{{Tip|{{ic|smartctl -A /dev/<device> &#124; grep Temperature_Celsius}} を実行することで現在のディスクの温度を知ることができます。}}
 
  +
* {{ic|smartctl -A /dev/<device> &#124; grep Temperature_Celsius}} を実行することで現在のディスクの温度を知ることができます。
 
{{Tip|特定のディスクが専ら他のディスクより熱い/冷たい場合、{{ic|DEVICESCAN}} を削除して個々のデバイスを定義し、適切な温度設定をしてください。}}
+
* 特定のディスクが専ら他のディスクより熱い/冷たい場合、{{ic|DEVICESCAN}} を削除して個々のデバイスを定義し、適切な温度設定をしてください。}}
 
==== 完全な {{ic|smartd.conf}} の例 ====
 
==== 完全な {{ic|smartd.conf}} の例 ====
   

2016年8月18日 (木) 23:42時点における版

S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) は近代的なストレージデバイスに内蔵されている補助コンポーネントです。ストレージの温度・代替処理された不良セクタの数・シークエラーなどの統計からデバイスの健康状態を推察し、故障を予測したり危険な値が出たときに通知することができます。

Smartmontools

smartmontools パッケージはストレージデバイスを診断するための2つのユーティリティ (smartctlsmartd) を含んでいます。公式リポジトリから smartmontools をインストールしてください。

デバイスが SMART 対応かどうか確認する

デバイスが SMART 機能を有しているかどうかチェックするには次のコマンドを実行します (対象が ATA デバイスの場合 --device=ata オプションが必要です):

# smartctl --info /dev/<device>

<device> は sda, hda,... などに置き換えて下さい。このコマンドはデバイスに関する全般的な情報を表示します。対応している場合、下の2行が確認できるはずです:

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

SMART が有効でない場合、以下を実行して有効化します:

# smartctl --smart=on /dev/<device>

デバイスの健康状態を調べる

実行中のデバイスの健康状態を調べる3つの方法があります (どのテストもユーザーデータには影響を与えません):

  1. Short (デバイスの問題を高い確率で発見するテストを実行する)
  2. Extended (または Long。ディスクの完全なチェックを行う)
  3. Conveyance (デバイスの輸送中に破損が発生しなかったか確認する)

-c (または --capabilities) フラグを使うことでデバイスがどのテストに対応しているのか、そしてそれらの診断にどれくらい時間がかかるのか調べられます:

# smartctl -c /dev/sda
[…]
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (  74) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
[…]

テストを実行するには:

# smartctl -t short /dev/<device>
# smartctl -t long /dev/<device>
# smartctl -t conveyance /dev/<device>
ノート: SSD などは全てのテストに対応していないことがあります。

テスト結果を表示

デバイスの健康状態は -H フラグで表示できます。デバイスが不健康だと報告された場合、デバイスが既に壊れているか、あるいは24時間に故障することが予想されます。できる限り早くディスクからデータを抜き出して、どこか別のところにコピーすることを推奨します:

# smartctl -H /dev/<device>

最近のテスト結果のリストを表示するには:

# smartctl -l selftest /dev/<device>

デバイスの詳細な情報を表示するには:

# smartctl -a /dev/<device>

デバイスの監視

smartd デーモンは SMART の状態を監視して、何か問題が発生したらメールを送信します。起動時にデバイスを監視するには、systemdsmartd.service ユニットを有効にしてください。/etc/smartd.conf で設定をすることが可能です。

ヒント: /etc/smartd.conf は幾分難解なコマンドライン式のオプションを使って設定します。ファイルの中にあるコメントや例を見たり、manpage を参照してください。以下は監視オプションの例です。

監視するデバイスの定義

全てのデバイスの全ての属性を監視するには以下を記述します:

DEVICESCAN -a

/dev/sda/dev/sdb の全ての SMART エラーを監視するには (他のデバイスは無視):

/etc/smartd.conf
/dev/sda -a
/dev/sdb -a

外部接続されたディスクの SMART エラーを監視する場合、再起動で /dev/sdX が変わってしまう可能性があるため、UUID を使用するほうが良いでしょう。

まず、監視したいディスクの UUID を確認します:

ls -lah /dev/disk/by-uuid/
lrwxrwxrwx 1 root root   9 Nov  5 22:41 820cdd8a-866a-444d-833c-1edb0f4becac -> ../../sde
lrwxrwxrwx 1 root root  10 Nov  5 22:41 b51b87f3-425e-4fe7-883f-f4ff1689189e -> ../../sdf2
lrwxrwxrwx 1 root root   9 Nov  5 22:42 ea2199dd-8f9f-4065-a7ba-71bde11a462c -> ../../sda
lrwxrwxrwx 1 root root  10 Nov  5 22:41 fe9e886a-8031-439f-a909-ad06c494fadb -> ../../sdf1

次に、/dev/disk/by-uuid/ のパスを使って監視したいディスクを SMARTd に設定してください:

/etc/smartd.conf
/dev/disk/by-uuid/820cdd8a-866a-444d-833c-1edb0f4becac -a

潜在的な問題をメールする

新しいエラーが発生したり、何らかの問題が発生した時にメールされるようにするには、-m を用います:

DEVICESCAN -m address@domain.com

(root メールアカウントではなく) 外部にメールを送信するには、MTA (Mail Transport Agent) か MUA (Mail User Agent) のインストール・設定が必要です。よく使われる MTA は msmtpSSMTP です。よく使われる MTU は sendmail や Postfix です。メールするだけなら、S-nail を設定するだけで足ります。

-M test オプションを使うと smartd デーモンが起動するたびにテストメールが送信されます:

/etc/smartd.conf
DEVICESCAN -m address@domain.com -M test

メールが届くまでに時間がかかることもあります。すぐに対応が必要な場合、以下のようにスクリプトを定義すると良いでしょう:

/etc/smartd.conf
DEVICESCAN -m address@domain.com -M exec /usr/local/bin/smartdnotify

メールを送信してシステムの通知を表示するには、/usr/local/bin/smartdnotify に以下を記述:

#!/bin/sh

# Send mail
echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"

# Notify user
wall "$SMARTD_MESSAGE"

電源管理

電源管理によってコンピュータを制御している場合、低電力モードの HDD を扱う方法を設定するべきです。通常、SMART コマンドが実行されるとディスクのプラッタはスピンアップします。以下のオプションを使うことで、低電圧モードの HDD を定期的にスピンアップさせて高電圧モードになってしまうを防げます:

DEVICESCAN -n standby,15,q

詳しい情報は smartmontools wiki を見てください。

デバイスによっては -n が機能しない場合があります。syslog に以下のようなエラーメッセージが出力されます:

journalctl -u smartd
CHECK POWER MODE: incomplete response, ATA output registers missing
Device: /dev/sdb [SAT], no ATA CHECK POWER STATUS support, ignoring -n Directive

別の方法として smartd の -i オプションを利用することがあります。状態を確認するためにディスクをスピンアップする頻度を制御します。デフォルトは30分です。頻度を変更するには /etc/default/smartmontools を作成・編集 (例: 3時間ごとに確認):

/etc/default/smartmontools
SMARTD_ARGS="-i 21600"

詳しくは smartd manpage を参照してください。

自己診断の予定を組む

smartd はスケジュールに従って自己診断の実行をするようディスクに通知することができます。以下の /etc/smartd.conf の設定では毎日午前2-3時の間に短い自己診断、土曜日の午前3-4時の間に長い自己診断が行われるようにします:

DEVICESCAN -s (S/../.././02|L/../../6/03)

温度が変わったら警告する

smartd はディスクの温度を記録して、急激な温度上昇が起こった時や温度の上限に達した時に警告をすることができます。以下の例では温度が4度以上変わった時と35度に到達した時にログを記録し、さらに温度が40度と危険なときにはログを取ってメールを送信します:

 DEVICESCAN -W 4,35,40
ヒント:
  • smartctl -A /dev/<device> | grep Temperature_Celsius を実行することで現在のディスクの温度を知ることができます。
  • 特定のディスクが専ら他のディスクより熱い/冷たい場合、DEVICESCAN を削除して個々のデバイスを定義し、適切な温度設定をしてください。

完全な smartd.conf の例

上記の例を全てまとめると以下のような設定になります:

  • DEVICESCAN (smartd は全てのディスクを監視対象にし、監視を実行する)
  • -a (全ての属性を監視する)
  • -o on (自動オンラインデータ収集を有効化する)
  • -S on (自動属性保存を有効化する)
  • -n standby,q (ディスクが待機中の時チェックを実行せず、ディスクアクセスが発生しないようにログに書き込まない)
  • -s ... (短いもしくは長いテストの予定を立てる)
  • -W ... (温度を監視する)
  • -m ... (メールアラート)
DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,35,40 -m <username or email>

smartd サービスの起動・リロードと状態の確認

# systemctl start smartd

または

# systemctl reload smartd

状態を確認する:

# systemctl status smartd

全ての smartd ログ:

# journalctl -u smartd

GUI アプリケーション

  • Gsmartcontrol — smartctl ハードディスクドライブ状態調査ツールの GNOME フロントエンド。
http://gsmartcontrol.sourceforge.net || gsmartcontrol または gsmartcontrol-svnAUR

情報元