症状
ドライブの交換が簡単かと思って、ホットスワップ対応のマウンタを使ってハードディスクをパソコンに取り付けました。
ハードディスクは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)
参照
- How to reduce the SATA link speed of drive in CentOS? – serverfault
- Linux Kernel Boot Parameters – aaron maxwell