「Hdparm」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(3人の利用者による、間の6版が非表示)
7行目: 7行目:
 
{{Related|ディスクの完全消去#hdparm}}
 
{{Related|ディスクの完全消去#hdparm}}
 
{{Related articles end}}
 
{{Related articles end}}
hdparm は HDD (SATA/IDE) のパフォーマンスと[[ベンチマーク]]ツールです
+
hdparm はハードディスクドライブハードウェアラメタを設定・表示することができるコマンドラインユーティリティです。シンプルな[[ベンチマーク]]ツールとして使うこともきま
  +
{{Warning|デフォルトパラメータを変更するとドライブにダメージを与えたりシステムがフリーズする可能性があるので注意してください。}}
{{Warning|注意してください!hdparm はあなたのコンピューターをたやすく壊してしまいます!}}
 
  +
 
== インストール ==
 
== インストール ==
   
[[公式リポジトリ]]より {{Pkg|hdparm}} をインストールします。SCSI デバイスを使っているなら {{Pkg|sdparm}} をインストールしてください。
+
[[公式リポジトリ]]から {{Pkg|hdparm}} をインストールします。SCSI デバイスを使っている場合は {{Pkg|sdparm}} をインストールしてください。
  +
== 使い方 ==
 
  +
== 使用方法 ==
 
=== ディスク情報 ===
 
=== ディスク情報 ===
 
HDD の情報を得るには、以下のコマンドを実行します:
 
HDD の情報を得るには、以下のコマンドを実行します:
 
# hdparm -I /dev/sda
 
# hdparm -I /dev/sda
   
=== 読み込み速度 (MB/s) ===
+
=== ベンチマーク ===
あなたの HDD (SATA/IDE) の読み込み速度を測るには、以下のコマンドを実行します:
 
# hdparm -t --direct /dev/sda
 
   
  +
[[ベンチマーク/データストレージデバイス]]を見てください。
=== 書き込み速度 (MB/s) ===
 
あなたの HDD (SATA/IDE) の書き込み速度を測るには、以下のコマンドを実行します:
 
$ sync;time bash -c "(dd if=/dev/zero of=bf bs=8k count=500000; sync)"
 
   
  +
=== 電源管理の設定 ===
このコマンドの実行後 {{ic|Ctrl+c}} と {{ic|rm bf}} を実行するのを忘れないでください。
 
   
  +
近代的なハードドライブは様々な電源管理機能をサポートしています。以下の表には最もよく使われている機能を載せています。完全なリストは {{ic|hdparm(8)}} を見てください。
{{Note|{{ic|bf}} は {{ic|dd}} によって書き込まれるファイルの名前です。}}
 
=== HDD を小休止する ===
 
   
  +
{{Warning|電源管理の設定をアグレッシブにしすぎるとスピンダウンやパーキングが頻繁に発生してハードドライブが昇天しやすくなる可能性があります。}}
もしあなたの HDD がカチカチ音を何度も立てているなら、カーネルは HDD の(読み込み/書き込みヘッドを動かす)作動アームを小休止させようとしています。これはラップトップなどの場合よく起こります。あまりにも多すぎる場合、あなたの HDD を逆に傷つけてしまうかもしれません。
 
   
  +
{| class="wikitable"
これはコンピュータのシャットダウン時に読み込みヘッドを小休止させます:
 
  +
! パラメータ !! 説明
  +
|-
  +
| {{ic|-B}} || [[wikipedia:ja:Advanced Power Management|Advanced Power Management]] 機能を設定します。利用可能な値は1から255です。値を低くすると積極的に消費電力を下げて、値を高くすると性能が上昇します。1から127までの値ではスピンダウンを行いますが、128から254までの値ではスピンダウンを行いません。255にすると APM 機能が完全に無効化されます。
  +
|-
  +
| {{ic|-S}} || ドライブのスタンバイ (スピンダウン) タイムアウトを設定します。電力を抑えるためにモーターを切るまでのタイムアウト (ディスクが使われないアイドル時間) を指定します。0にするとスピンダウンが無効化され、1から240までは5秒間隔で、241から251までは30分間隔で指定します。
  +
|-
  +
| {{ic|-M}} || [[wikipedia:ja:Automatic Acoustic Management|Automatic Acoustic Management]] 機能を設定します。最新のハードディスクドライブに搭載されている機能でヘッドの動きを遅くして騒音を減らします。設定できる値はディスクによって異なり、一部のディスクでは機能が使えません。
  +
|}
   
  +
現在の値を確認するには、何も値を設定せずにパラメータを指定してください。例:
# hdparm -B254 /dev/sda
 
   
  +
# hdparm -B /dev/sda
デフォルトの値は {{ic|-B128}} です。小休止が多発する時の平均値は {{ic|-B199}} です。
 
   
  +
値を適用したい場合、例えば APM を 127 に設定するには:
この設定を永続的にするには <code>/etc/udev/rules.d/11-sda-apm-fix.rules</code> のような [[udev]] ファイルを作成します:
 
   
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -B 254 /dev/sda"
+
# hdparm -B 127 /dev/sda
   
  +
=== ライトキャッシュ ===
もしくは、あなたが多数の HDD を有している場合、より柔軟にルールを定義することが可能です:
 
   
  +
ライトキャッシングとは、ファイルをディスクに書き込む前に、[[Wikipedia:Disk buffer|ドライブの組み込みメモリ]]に一時的にキャッシュする処理のことです。基本的にパフォーマンスが向上します。ライトキャッシュは、ほとんどのハードドライブで提供されている機能で、ほとんどの場合、デフォルトで有効化されています。確認するには以下を実行してください:
ACTION=="add|change", KERNEL=="[hs]d[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/$kernel"
 
   
  +
$ hdparm -W /dev/''sdX''
APM レベルはサスペンド後リセットされることを忘れないでください。よって、復帰時に再度コマンドを実行する必要があります。 以下のように [[systemd]] ユニットを作成すれば自動的に実行されます ([https://bbs.archlinux.org/viewtopic.php?id=151640 フォーラムスレッド]より):
 
  +
[Unit]
 
  +
{{Warning|ライトキャッシュはタダでパフォーマンスを向上できますが、欠点もあります。ライトキャッシュを有効化すると、電源が突然失われた時のデータ損失のリスクが増加します。}}
Description=Local system resume actions
 
  +
After=suspend.target
 
  +
無効化されている場合、以下で有効化できます:
After=hibernate.target
 
  +
After=hybrid-sleep.target
 
  +
$ hdparm -W 1 /dev/''sdX''
  +
  +
逆に無効化するには以下を使用します:
  +
  +
$ hdparm -W 0 /dev/''sdX''
  +
  +
== ヒントとテクニック ==
  +
  +
=== ハードドライブを起動させずに状態を確認する ===
  +
hdparm で問い合わせオプションを使うとドライブが立ち上がってしまうことがあります。{{pkg|smartmontools}} の [[S.M.A.R.T.|smartctl]] を使うことで休眠状態のディスクを起こさずに状態を確認できます。
  +
  +
例:
  +
# smartctl -i -n standby /dev/sda
  +
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.10.13-1-ARCH] (local build)
  +
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
 
 
  +
Device is in STANDBY mode, exit(2)
[Service]
 
  +
Type=simple
 
  +
=== サポートされていないハードウェアを使用する ===
ExecStart=/usr/bin/hdparm -B 254 /dev/sda
 
  +
一部のドライブ (特に外付けのドライブ) は hdparm によるスピンダウンに対応していません。その場合、以下のようなエラーメッセージが表示されます:
 
  +
# hdparm -S 240 /dev/sda
[Install]
 
  +
/dev/sda:
WantedBy=suspend.target
 
  +
setting standby to 240 (20 minutes)
WantedBy=hibernate.target
 
  +
HDIO_DRIVE_CMD(setidle) failed: Invalid argument
WantedBy=hybrid-sleep.target
 
  +
  +
未対応のドライブは {{pkg|hd-idle}} を使ってスピンダウンできる場合があります。{{ic|/etc/conf.d/hd-idle}} を開いて "HD_IDLE_OPTS" 行を編集してから {{ic|hd-idle.service}} を起動・有効化してください。
  +
  +
例えば sda ドライブのスピンダウンタイムを30分間にするには:
  +
HD_IDLE_OPTS="-i 0 -a sda -i 1800"
  +
  +
=== udev ルールによる永続的な設定 ===
  +
  +
設定を永続化させるには、以下の [[udev]] ルールを作成してください (値は適当に変えてください):
  +
  +
{{hc|/etc/udev/rules.d/50-hdparm.rules|<nowiki>
  +
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -B 254 -S 0 /dev/sda"
  +
</nowiki>}}
  +
  +
ハードドライブが複数ある場合はもっと柔軟にルールを設定できます。例えば、全ての外付けドライブに省電力設定を適用するには (内蔵ドライブが {{ic|/dev/sda}} だけの場合):
  +
  +
{{hc|/etc/udev/rules.d/50-hdparm.rules|<nowiki>
  +
ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"
  +
</nowiki>}}
  +
  +
=== 起動後にドライブをスリープ状態にさせる ===
  +
  +
滅多に使用しないデバイスであれば起動時に直接スリープ状態にすると良いでしょう。上記の udev ルールでは設定できません。起動が完了したときにコマンドを実行するには、[[systemd]] サービスを作成します:
  +
  +
{{hc|/etc/systemd/system/hdparm.service|<nowiki>
  +
[Unit]
  +
Description=hdparm sleep
  +
  +
[Service]
  +
Type=oneshot
  +
ExecStart=/usr/bin/hdparm -q -S 120 -y /dev/sdb
  +
  +
[Install]
  +
WantedBy=multi-user.target
  +
</nowiki>}}
  +
  +
サービスを作成したら[[有効化]]してください。
  +
  +
=== WD Green HDD の電源管理 ===
  +
[[Advanced Format#WD Green HDD に関する特記事項]]を見てください。
  +
  +
== トラブルシューティング ==
  +
  +
=== サスペンド後に APM のレベルがリセットされる ===
  +
  +
サスペンドで APM のレベルがリセットされる場合、復帰後にコマンドを再実行する必要があります。以下の [[systemd]] ユニットを使うことで自動的に実行させることができます ([https://bbs.archlinux.org/viewtopic.php?id=151640] を参照):
  +
  +
{{hc|/etc/systemd/system/apm.service|2=
  +
[Unit]
  +
Description=Local system resume actions
  +
After=suspend.target hybrid-sleep.target hibernate.target
  +
  +
[Service]
  +
Type=simple
  +
ExecStart=/usr/bin/hdparm -B 254 /dev/sda
  +
  +
[Install]
  +
WantedBy=sleep.target
  +
}}
   
  +
{{Note|1={{ic|sleep.target}} は {{ic|suspend}}, {{ic|hybrid-sleep}}, {{ic|hibernate}} ターゲットから実行されますが、システムがサスペンドする前に起動が完了してしまうため、3つのターゲットを明示的に指定する必要があります。[https://wiki.archlinux.org/index.php?title=Talk:Hdparm&oldid=440457#Troubleshooting_APM_settings_after_suspend.2C_hibernate_or_hybrid-sleep] を見てください。}}
または <code>/usr/lib/systemd/system-sleep/hdparm_set</code> を作成します: [https://bbs.archlinux.org/viewtopic.php?id=159233 ここにあります]
 
#!/bin/sh
 
hdparm -B254 /dev/sda
 
   
  +
もしくは[[電源管理#/usr/lib/systemd/system-sleep のフック|/usr/lib/systemd/system-sleep にフックを作成]]する方法もあります。
そしてこれを実行可能にします:
 
chmod +x /usr/lib/systemd/system-sleep/hdparm_set
 
   
==Tips and tricks==
+
== 参照 ==
=== KDE 4.4.41 以上と hdparm ===
 
   
  +
* https://sourceforge.net/projects/hdparm/ - hdparm on SourceForge
[[KDE]] バージョン 4.4.4 以降で、(手動で)設定した hdparm の値を変更されないようにするには、以下を入力してください:
 
# touch /etc/pm/power.d/harddrive
 

2023年2月5日 (日) 01:07時点における最新版

関連記事

hdparm はハードディスクドライブのハードウェアパラメータを設定・表示することができるコマンドラインユーティリティです。シンプルなベンチマークツールとして使うこともできます。

警告: デフォルトパラメータを変更するとドライブにダメージを与えたりシステムがフリーズする可能性があるので注意してください。

インストール

公式リポジトリから hdparm をインストールします。SCSI デバイスを使っている場合は sdparm をインストールしてください。

使用方法

ディスク情報

HDD の情報を得るには、以下のコマンドを実行します:

# hdparm -I /dev/sda

ベンチマーク

ベンチマーク/データストレージデバイスを見てください。

電源管理の設定

近代的なハードドライブは様々な電源管理機能をサポートしています。以下の表には最もよく使われている機能を載せています。完全なリストは hdparm(8) を見てください。

警告: 電源管理の設定をアグレッシブにしすぎるとスピンダウンやパーキングが頻繁に発生してハードドライブが昇天しやすくなる可能性があります。
パラメータ 説明
-B Advanced Power Management 機能を設定します。利用可能な値は1から255です。値を低くすると積極的に消費電力を下げて、値を高くすると性能が上昇します。1から127までの値ではスピンダウンを行いますが、128から254までの値ではスピンダウンを行いません。255にすると APM 機能が完全に無効化されます。
-S ドライブのスタンバイ (スピンダウン) タイムアウトを設定します。電力を抑えるためにモーターを切るまでのタイムアウト (ディスクが使われないアイドル時間) を指定します。0にするとスピンダウンが無効化され、1から240までは5秒間隔で、241から251までは30分間隔で指定します。
-M Automatic Acoustic Management 機能を設定します。最新のハードディスクドライブに搭載されている機能でヘッドの動きを遅くして騒音を減らします。設定できる値はディスクによって異なり、一部のディスクでは機能が使えません。

現在の値を確認するには、何も値を設定せずにパラメータを指定してください。例:

# hdparm -B /dev/sda

値を適用したい場合、例えば APM を 127 に設定するには:

# hdparm -B 127 /dev/sda

ライトキャッシュ

ライトキャッシングとは、ファイルをディスクに書き込む前に、ドライブの組み込みメモリに一時的にキャッシュする処理のことです。基本的にパフォーマンスが向上します。ライトキャッシュは、ほとんどのハードドライブで提供されている機能で、ほとんどの場合、デフォルトで有効化されています。確認するには以下を実行してください:

$ hdparm -W /dev/sdX
警告: ライトキャッシュはタダでパフォーマンスを向上できますが、欠点もあります。ライトキャッシュを有効化すると、電源が突然失われた時のデータ損失のリスクが増加します。

無効化されている場合、以下で有効化できます:

$ hdparm -W 1 /dev/sdX

逆に無効化するには以下を使用します:

$ hdparm -W 0 /dev/sdX

ヒントとテクニック

ハードドライブを起動させずに状態を確認する

hdparm で問い合わせオプションを使うとドライブが立ち上がってしまうことがあります。smartmontoolssmartctl を使うことで休眠状態のディスクを起こさずに状態を確認できます。

例:

# smartctl -i -n standby /dev/sda
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.10.13-1-ARCH] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

Device is in STANDBY mode, exit(2)

サポートされていないハードウェアを使用する

一部のドライブ (特に外付けのドライブ) は hdparm によるスピンダウンに対応していません。その場合、以下のようなエラーメッセージが表示されます:

# hdparm -S 240 /dev/sda
/dev/sda:
setting standby to 240 (20 minutes)
HDIO_DRIVE_CMD(setidle) failed: Invalid argument

未対応のドライブは hd-idle を使ってスピンダウンできる場合があります。/etc/conf.d/hd-idle を開いて "HD_IDLE_OPTS" 行を編集してから hd-idle.service を起動・有効化してください。

例えば sda ドライブのスピンダウンタイムを30分間にするには:

HD_IDLE_OPTS="-i 0 -a sda -i 1800"

udev ルールによる永続的な設定

設定を永続化させるには、以下の udev ルールを作成してください (値は適当に変えてください):

/etc/udev/rules.d/50-hdparm.rules
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -B 254 -S 0 /dev/sda"

ハードドライブが複数ある場合はもっと柔軟にルールを設定できます。例えば、全ての外付けドライブに省電力設定を適用するには (内蔵ドライブが /dev/sda だけの場合):

/etc/udev/rules.d/50-hdparm.rules
ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"

起動後にドライブをスリープ状態にさせる

滅多に使用しないデバイスであれば起動時に直接スリープ状態にすると良いでしょう。上記の udev ルールでは設定できません。起動が完了したときにコマンドを実行するには、systemd サービスを作成します:

/etc/systemd/system/hdparm.service
[Unit]
Description=hdparm sleep

[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -y /dev/sdb

[Install]
WantedBy=multi-user.target

サービスを作成したら有効化してください。

WD Green HDD の電源管理

Advanced Format#WD Green HDD に関する特記事項を見てください。

トラブルシューティング

サスペンド後に APM のレベルがリセットされる

サスペンドで APM のレベルがリセットされる場合、復帰後にコマンドを再実行する必要があります。以下の systemd ユニットを使うことで自動的に実行させることができます ([1] を参照):

/etc/systemd/system/apm.service
[Unit]
Description=Local system resume actions
After=suspend.target hybrid-sleep.target hibernate.target

[Service]
Type=simple
ExecStart=/usr/bin/hdparm -B 254 /dev/sda

[Install]
WantedBy=sleep.target
ノート: sleep.targetsuspend, hybrid-sleep, hibernate ターゲットから実行されますが、システムがサスペンドする前に起動が完了してしまうため、3つのターゲットを明示的に指定する必要があります。[2] を見てください。

もしくは/usr/lib/systemd/system-sleep にフックを作成する方法もあります。

参照