22個のディスクセットアップを実行しています。そのうち19個はZFSアレイ、15個はsata_sil24
モジュールで駆動されるSATAコントローラーに接続された3つのポートマルチプライヤでバックアップされています。フルスピード(SATA2、3 Gbps)で実行している場合、操作は非常に奇妙です。単純な読み取りエラーは、ポート乗算器全体を長時間にわたって痙攣させ、時には非常にひどい結果になります。カーネルパラメーターlibata.force=1.5G
を使用して起動し、SATAコントローラーを強制的に「レガシー」速度にすると、ポートマルチプライヤに関するすべての問題が完全に修正されます。つまり、私のZFSプールはICH10Rコントローラー上の高速キャッシュSSDによって支えられています。この同じコントローラー上の別のSSDがシステムを保持しています。
libata.force=1.5G
を実行すると、SSDの転送速度がすぐに約100 MB/s削られます。ルートドライブにとってはそれほど大したことではありませんが、ZFSキャッシュSSDにとってはそうです。これにより、キャッシュドライブがない場合よりも、持続的な転送のためにzpool全体が事実上遅くなります。もちろん、ランダムアクセスとfsツリールックアップは依然として有益です。 sata_sil24
のモジュールオプションを一覧表示しますが、そのようなオプションは存在しません。
libata.force=1.5G
モジュールに支えられている3つのSATAコントローラーだけにsata_sil24
パラメーターを渡す方法
あ!わかった!
http://www.kernel.org/doc/Documentation/kernel-parameters.txt には、
libata.force= [LIBATA] Force configurations. The format is comma
separated list of "[ID:]VAL" where ID is
PORT[.DEVICE]. PORT and DEVICE are decimal numbers
matching port, link or device. Basically, it matches
the ATA ID string printed on console by libata. If
the whole ID part is omitted, the last PORT and DEVICE
values are used. If ID hasn't been specified yet, the
configuration applies to all ports, links and devices.
If only DEVICE is omitted, the parameter applies to
the port and all links and devices behind it. DEVICE
number of 0 either selects the first device or the
first fan-out link behind PMP device. It does not
select the Host link. DEVICE number of 15 selects the
Host link and device attached to it.
The VAL specifies the configuration to force. As long
as there's no ambiguity shortcut notation is allowed.
For example, both 1.5 and 1.5G would work for 1.5Gbps.
The following configurations can be forced.
* Cable type: 40c, 80c, short40c, unk, ign or sata.
Any ID with matching PORT is used.
* SATA link speed limit: 1.5Gbps or 3.0Gbps.
* Transfer mode: pio[0-7], mwdma[0-4] and udma[0-7].
udma[/][16,25,33,44,66,100,133] notation is also
allowed.
* [no]ncq: Turn on or off NCQ.
* nohrst, nosrst, norst: suppress hard, soft
and both resets.
* dump_id: dump IDENTIFY data.
If there are multiple matching configurations changing
the same attribute, the last one is used.
そのため、注意が必要なのは、どのポートXとデバイスY(dmesg ataX.YY)がどのコントローラーとドライブであるかを見つけることです。私は思う-その表記はPORT [.DEVICE]と一致しますが、W:X:Y:Z表記もあります。私はataX.YYを推測しています:)
幸いなことに、私は先週手動でこのマッピングを行いました(痙攣を起こし、ホストコントローラーをリセットしているドライブを特定しようとしているため)、完全なリストが既にあります:) YまたはW:X:Y:Zがリストされているので、SATAケーブルを抜き取り、/ var/log/messagesにどのataX.YYメッセージが現れるかを見てしまいました;)
だから、私のセットアップでは、私がする必要があるようです
libata.force=1:1.5G,2:1.5G,3:1.5G
私のZFSスクラブが終了したらすぐにそれを試して、報告する必要があります:)素晴らしい!これが他の誰かに役立つことを願っています:)