우분투 19.10에 간단한 udev 규칙이 있습니다
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 127 -S 120 /dev/%k"
이 기능을 적용할 수 있는 드라이브가 2개 있습니다.
# lsblk -d -o name,rota
NAME ROTA
loop0 0
loop1 0
loop2 0
loop3 0
sda 1
sdb 1
sdc 0
sdd 1
nvme0n1 0
부팅 후 디스크를 확인합니다
# hdparm -B /dev/sda
/dev/sda:
APM_level = 127
# hdparm -B /dev/sdd
/dev/sdd:
APM_level = 254
#
왜 이것이 사용되어서는 안되는지 잘 모르겠습니다 /dev/sdd
. 쉘에서 명령을 실행할 수 있고 /dev/sdd
잘 작동합니다.
규칙은 다음을 통해 트리거될 수도 있습니다.
udevadm trigger /dev/sdd
명령을 올바르게 실행하십시오.
이 문제를 디버깅하는 방법에 대한 아이디어가 있습니까?
추신. /dev/sdb
APM 속성이 지원되지 않습니다. hdparm이 실패하여 udev 실행이 중지되었습니까? 이 경우 어떻게 건너뛸 수 있나요 /dev/sdb
?
고쳐 쓰다:
꽤 오랫동안 시도하고 출력을 기록하는 쉘 스크립트를 만든 후에 출력은 드라이브가 업데이트되었다고 말하는 hdparm
것처럼 보입니다 . hdparm
그런데 드라이브 설정을 확인해보니 적용이 안되네요!
이제 설정을 완료했습니다./etc/hdparm.conf
/dev/sda {
apm = 127
spindown_time = 120
}
/dev/sdb {
spindown_time = 120
}
/dev/sdd {
apm = 127
spindown_time = 120
}
이제 모든 설정이 적용되었습니다.
규칙을 사용하는 것만큼 우아하지는 않지만 udev
작동합니다!