USB 플래시 드라이브를 비회전 드라이브로 설정

USB 플래시 드라이브를 비회전 드라이브로 설정

IO 스케줄러를 최적화하고 회전하는 드라이브와 회전하지 않는 드라이브(다름)에 적합한 스케줄러를 사용하려고 합니다. 내가 실행할 때 :

cat /sys/block/sd*/queue/rotational

나는 얻다:

1    <-- for sda
1    <-- for sdb

sdb는 USB 플래시 드라이브이지만 회전해서는 안 됩니다.

$ udevadm info -a -n /dev/sda | grep queue
ATTRS{queue_depth}=="31"
ATTRS{queue_ramp_up_period}=="120000"
ATTRS{queue_type}=="simple"

$ udevadm info -a -n /dev/sdb | grep queue
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"

따라서 그러한 속성은 없습니다.

ATTR{queue/rotational}=="0" or ...=="1"

답변1

예, 이것은 혼란스러운 질문입니다. 여기에 서신이 있습니다.커널 오류 90761(2015년 보고서) 및 2019년이를 조사한 블로그 게시물. 아마도 이는 전통적인 IO 스케줄러가 모두 그랬기 때문에 단지 외관상의 문제일 뿐입니다.MQ 마감일.. 하지만 상당한 고민 끝에 효과가 있는 규칙을 알아내서 여기에 게시하는 것이 좋겠다고 생각했습니다.

/etc/udev/rules.d/usb-flash-drive-non-rotational.rules:

# Try to catch USB flash drives and set them as non-rotational. Probably no impact whatsoever : /
# c.f. https://mpdesouza.com/blog/kernel-adventures-are-usb-sticks-rotational-devices/

# Device is already marked as non-rotational, skip over it
ATTR{queue/rotational}=="0", GOTO="skip"

# Device has some sort of queue support, likely to be an HDD actually
ATTRS{queue_type}!="none", GOTO="skip"

# Flip the rotational bit on this removable device and give audible signs of having caught a match
ATTR{removable}=="1", SUBSYSTEM=="block", SUBSYSTEMS=="usb", ACTION=="add", ATTR{queue/rotational}="0"
ATTR{removable}=="1", SUBSYSTEM=="block", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/beep -f 70 -r 2"

LABEL="skip"

답변2

hdparm -I각 디스크에 대해 실행할 수 있습니다 .

hdparm -I /dev/sda
hdparm -I /dev/sdb

이 줄의 출력에 hdparm -I다음 줄이 포함된 경우:

Nominal Media Rotation Rate: Solid State Device

ATA 스타일 IDENTIFY 응답의 정보를 사용하여 드라이브가 회전할 수 없음을 나타냅니다.

그러나 분명히 이 정보를 쿼리하는 다른 방법이 있으며 커널은 이를 선호하는 것 같습니다. 패키지가 설치되어 있는 경우 sg3_utils이 명령을 사용하여 커널이 수행하는 것과 동일한 쿼리를 수행할 수 있습니다(적어도 이 글을 쓰는 시점에서는).

sg_inq --vpd --page=0xb1 /dev/sda

응답에 다음 줄이 포함된 경우:

Non-rotating medium (e.g. solid state)

...그런 다음에만 /sys/block/sd*/queue/rotational속성이 0으로 설정됩니다.

USB 플래시 드라이브가 USB2인 경우 스케줄러 기반 최적화는 USB 프로토콜 비효율성으로 인해 압도될 가능성이 높습니다. 실제 USB3 SuperSpeed ​​​​드라이브가 있는 경우에만 이에 대해 걱정하면 됩니다.

관련 정보