USB 드라이브/대량 저장소 정지 문제 해결

USB 드라이브/대량 저장소 정지 문제 해결

불행하게도 이 문제는 여기에 보고되고 설명되어 있습니다.유해한 USB 스틱이 걸린 문제. 복구 솔루션 수정?그리고"쓰기 저장 제한"은 "USB 메모리 카드 정지 문제"에 대한 해결책입니까?가용성에도 불구하고 2024년 현재 최신 Linux 배포판에서는 문제가 해결되지 않은 상태로 남아 있습니다.BDI 인터페이스리눅스 6.2에서 도입해방됨2023년 2월.

이 문제는 udevUSB 대용량 저장 장치에 대한 합리적인 쓰기 저장 캐시 값을 설정하는 스크립트를 호출하는 간단한 규칙으로 해결될 수 있습니다.

답변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

관련 정보