드라이브를 강제로 회전시키는 명령은 무엇입니까?

드라이브를 강제로 회전시키는 명령은 무엇입니까?

hdparm설명서 를 봤는데 sdparm논쟁이 있다는 걸 알아요아래에드라이브, -y-Y. 그리고 -S와 같은 절전 기능을 제어하는 ​​매개변수가 있다는 것도 알고 있습니다 -B. 하지만 내가 원하는 것은 모터를 시동하고 회전시키는 것입니다.위로운전사.

sdparm

이해합니다sdparm 매뉴얼 페이지load및 매개변수 가 있습니다 start. 다음 중 어떤 것을 사용할 수 있나요? 테이프 드라이브나 적어도 광학 드라이브에 딱 맞는 것 같나요?

DD

dd if=/dev/hdX of=/dev/null count=512가장 좋은 답변인 것 같습니다"대기 전원" 드라이브를 시작하려면 어떤 명령을 사용할 수 있습니까? 그러나 드라이브가 이미 캐시에 있으면 드라이브가 회전하지 않습니다.

장치에 모터를 시작하거나 회전하도록 명시적으로 지시하는 명령이 없다는 것이 이상해 보입니다.

GNU/Linux에서 SATA HDD를 부팅하는 가장 좋은 방법은 무엇입니까?

답변1

블록 장치 대신 원시 디스크 장치에서 읽습니다. 이는 커널 버퍼 캐시를 우회하여 드라이브 회전을 보장합니다.

답변2

dd에 대한 플래그는 direct(호스트) 캐시를 우회하고 강제로 I/O를 드라이브로 보내야 합니다.

dd if=/dev/sda bs=4096 count=1 of=/dev/null iflag=direct
                                            ^^^^^^^^^^^^

내 컴퓨터에서 테스트해 보면 디스크 활동 표시등이 깜박이는 것이 확실합니다. 그렇지 않으면 iflag깜박이지 않습니다(적어도 두 번째는).

답변3

1) 먼저, 쉽게 할 수 있다면 Kyle Jones가 말한 대로 원시 장치에서 직접 읽는 것을 권장합니다.

2) 이것이 가능하지 않은 경우 드라이브에서 임의로 선택한 위치에서 읽으십시오(fe: dd if=/dev/diskdev of=/dev/null seek=$[173<<30] bs=1048576 count=10241giga는 디스크의 173.giga에서 읽혀집니다). 이로 인해 실제로 읽은 데이터가 실제 읽기 캐시에 없을 가능성이 높으므로 읽기 작업을 채우기 위해 회전하는 드라이브가 필요합니다.

확실하게 알고 싶다면 무작위로 선택한 데이터를 여러 번 읽을 수 있습니다.

3) 대안으로, 동일한 dd 명령을 사용하여 고정된 위치(예: 디스크의 시작 부분부터)에서 데이터를 읽을 수 있지만 항상 최소한 동일한 양의 RAM을 가지고 있습니다. 이렇게 하면 실제 디스크 읽기 캐시에 확실히 포함되지 않은 일부 디스크 영역을 읽어야 하므로 해당 영역을 읽으려면 디스크를 회전해야 합니다.


귀하 대신(1을 사용할 수 없는 경우) 저는 (3) 매우 정확해야 하는 경우와 (2) 가정용 Linux에서만 플레이하는 경우를 수행합니다.

관련 정보