Как проверить, вращается ли внешний жесткий диск или находится в спящем режиме через командную строку?

Как я могу определить через командную строку, активен ли (вращается) или спит внешний диск, подключенный к моей системе?

Ни один из ответов здесь не помог. Метод Powershell вообще не работает, а методsmartctlметод описан ниже. я тоже не пробовалаhdparmметод, потому что я пробую это в Windows и, согласно многочисленным сообщениям в Интернете, командаhdparm -Cвсе равно разбудит диск.

Тестирование внешнего диска Seagate.

Используемая команда:

      smartctl -n standby G:

Вышеописанное работает только тогда, когда диск активен, и мгновенно сообщает:


Однако если диск находится в спящем режиме, команда зависает на 1-2 минуты, а затем сообщает:


Вы могли бы сказать, что другое сообщение об ошибке решает этот вопрос, но я надеюсь найти чистое решение, при котором мне не придется ждать пару минут, чтобы получить неполный ответ. Это будет использоваться в сценарии, проверяющем все подключенные диски. И это не всегда так работает, см. ниже.

Тестирование внешнего накопителя WD.

Приведенная выше команда отображает одно и то же сообщение независимо от того, вращается диск или нет:

      CHECK POWER MODE: incomplete response, ATA output registers missing
CHECK POWER MODE not implemented, ignoring -n option
ATA device successfully opened

Однако он не зависает, как раньше, и ответ мгновенный.

Тестирование внутреннего накопителя WD.

Когда диск вращается:

      Device is in ACTIVE or IDLE mode

Когда диск спит:

      Device is in STANDBY (OS) mode, exit(2)

Это единственный случай, когда он работает так, как ожидалось.

2 ответа

Вы не сможете этого сделать, если мостовая плата внешнего диска каким-то образом не передает эту информацию.

Все команды Windows, о которых вы говорите, относятся к дискам, которые напрямую подключены к материнской плате системы. Когда диск подключен непосредственно к материнской плате системы, дополнительные соединения для передачи данных позволяют этим командам работать.

В случае внешнего диска он подключается к вашей системе через мостовую плату. Плата в основном управляет приемом команд USB и преобразованием их в команды, которые использует интерфейс основного жесткого диска: будь то SATA, PATA, IDE и т. д.

В наиболее распространенном типе настройки внешнего диска — и вы упоминаете «внешний диск Seagate» — диск SATA подключается к мостовой плате, которая позволяет подключить USB-накопитель к диску. Это USB-соединение в основном предназначено для чтения и записи данных; не передавать другие данные, такие как данные SMART или данные, относящиеся к состоянию сна/бодрствования диска.

Как говорится в сообщении блога Other World Computing, посвященном macOS :

«Кроме того, внешние и USB-накопители обычно не поддерживают SMART».

Сообщение может касаться macOS, но общая концепция та же: внешние накопители обычно не поддерживают SMART.

Единственный способ получить эти дополнительные данные обратно и через внешнее соединение — это если мостовая плата каким-то образом передает эти данные. Или, если соединение представляет собой что-то вроде соединения eSATA , которое, честно говоря, является странным внешним соединением.

Я не слишком уверен, что устройства SCSI старой школы могли отправлять такую ​​базу данных как внутрь, так и наружу, но, если я правильно помню, разница между внутренними и внешними протоколами SCSI очень мала, поэтому, возможно, команды системного уровня, которые передавали бы более глубокие данные для внутренних Диски SCSO также можно использовать для внешних дисков SCSI.

Но в наши дни в мире, где наиболее типичным соединением между внешним диском и системой является какое-либо USB-соединение, это все академически.

PS: В некоторых случаях производитель предоставляет какое-то проприетарное программное обеспечение, которое позволит вашей основной системной ОС напрямую подключаться к мостовой плате внешнего устройства. Обычно это используется для прошивки прошивки на мостовой плате, но может передавать более глубокие данные диска, такие как статус SMART. Но это большая «сила»; фирменное программное обеспечение подключается к внешнему диску только так, как этого хочет производитель. И будет передавать только те данные, которые хочет предоставить производитель. И, скорее всего, не будет передавать какие-либо более глубокие данные так, как они нужны обычным внутренним командам жесткого диска.

Прочитав справочную страницу, я случайно обнаружил-dопция, позволяющая указать «тип устройства». Итак, следующая команда работает так, как ожидалось:

      smartctl -d ata -n standby G:

Когда диск спит, я получаю мгновенный ответ:

      Device is in STANDBY (OS) mode, exit(2).

Когда диск вращается, я также получаю мгновенный ответ:

      Device is in ACTIVE or IDLE mode.

Я не уверен, почему-d ataработает, но-d satоднако нет.

Команду необходимо запускать в командной строке с повышенными правами в Windows, иначе она даст ложные результаты для некоторых дисков: например, мой внутренний диск WD всегда отображается как АКТИВНЫЙ, если команда вводится в командной строке без повышенных прав.

Другие вопросы по тегам