无法编辑 /sys/block/sdX/device/queue_depth 文件

A.J*_*sin 5 linux ssd scsi sysfs block-device

我正在尝试使用以下命令增加 SSD 的队列深度值:

echo 64 > /sys/block/sda/device/queue_depth
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

bash: echo: write error: Invalid argument
Run Code Online (Sandbox Code Playgroud)

我尝试使用tee甚至像这样的编辑器vimnano但仍然看到此错误。此服务器 (sd[ad]) 上有 4 个 SSD,并且所有这些 SSD 都会发生此错误。

操作系统为CentOS 7,内核版本为3.10.0-327.18.2.el7.x86_64

fro*_*utz 3

也许你的SSD不支持这个队列深度?

# hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
    Model Number:       M4-CT064M4SSD2                          
[...]
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
Run Code Online (Sandbox Code Playgroud)

或者,尝试使用1, 2, 3, ... 来查找内核允许您使用的最大队列深度。

如果它不允许您设置高于 的值1,则可能您的内核通常禁用了 NCQ。检查/proc/cmdlinelibata.force=noncq类似。

存在一些与 NCQ 相关的错误,尤其是 SSD。您应该做一些基准测试来检查 NCQ 是否对您有任何好处,并进行一些测试(排队的)TRIM 是否可以在不损坏数据的情况下工作(当前内核仅通过将某些设备列入黑名单来修复这些问题)。