Как проверить, вращается ли внешний жесткий диск или находится в спящем режиме через командную строку?
Как я могу определить через командную строку, активен ли (вращается) или спит внешний диск, подключенный к моей системе?
Ни один из ответов здесь не помог. Метод 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 всегда отображается как АКТИВНЫЙ, если команда вводится в командной строке без повышенных прав.