SATAのリンク速度を制限

目次

症状

ドライブの交換が簡単かと思って、ホットスワップ対応のマウンタを使ってハードディスクをパソコンに取り付けました。

ハードディスクは SATA3.0 対応なので、SATA のリンク速度は最高 6.0Gbps です。しかし激しくディスクにアクセスするとたまにエラーが出たり、次のようなログが記録される。

Apr 21 20:00:38 pool kernel: [  891.836436] ata2: limiting SATA link speed to 3.0 Gbps

このログが記録された後は、エラーが出ることはありません。

目的

そこで SATA のリンク速度を自動的に決定しないで、リンク速度を制限(指定)してディスクを接続したい。

対応

SATA のリンク速度は、Linux のカーネルパラメータlibataで指定することができます。具体的には、/etc/default/grubを編集してカーネルの起動オプションとしてlibataを加えます。

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="libata.force=3.0Gbps"

ファイルを編集したらupdate-grubコマンドを実行して編集した内容を grub に反映させます。

再起動すると、次のように指定した 3.0Gbps でディスクに接続していることがわかります。

$ demesg|grep 'SATA link'
[    1.118975] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[    1.119005] ata6: SATA link down (SStatus 0 SControl 320)
[    1.119038] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[    1.119065] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[    1.119090] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[    1.119116] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 320)

参照