解决 USB 驱动器/大容量存储停顿问题

解决 USB 驱动器/大容量存储停顿问题

遗憾的是,该问题在这里报告和描述:有害的 USB 记忆棒停滞问题。恢复解决方法修复?“写回限制”是解决“USB 存储卡停顿问题”的方法吗?尽管可以使用,但截至 2024 年,现代 Linux 发行版中的问题仍然悬而未决BDI接口Linux 6.2 中引入释放2023 年 2 月。

这可以通过udev调用脚本的简单规则来解决,该脚本为 USB 大容量存储设备设置合理的回写缓存值。

答案1

udev 规则/etc/udev/rules.d/99-adjust-writeback-cache.rules

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
RUN+="/usr/local/lib/adjust-writeback-cache.sh $major $minor"
cat /usr/local/lib/adjust-writeback-cache.sh
#! /bin/bash

devroot=/sys/class/bdi
max_bytes=134217728 # must be divisible by 4096
dev=$1:$2

logme="logger --tag `basename $0`"
test "$TERM" = "xterm-256color" && logme=echo

test "$UID" -ne "0" && $logme "Must be run under root" && exit 1
test -z "$2" && $logme "Need two arguments: major minor" && exit 2

$logme "Adjusting writeback cache for the device [$dev] to $max_bytes bytes ..."
test ! -d "$devroot/$dev" && $logme "The device [$dev] is not found in $devroot. Bailing out!" && exit 3

echo $max_bytes > "$devroot/$dev/max_bytes"
res=`cat "$devroot/$dev/max_bytes"`
test "$res" = "$max_bytes" && $logme "All good!" || $logme "The operation has failed."

不要忘记使其可执行,例如sudo chmod 755 /usr/local/lib/adjust-writeback-cache.sh

相关内容