Eu tenho um disco rígido externo conectado via USB. O método usual para definir o tempo de espera / spindown de discos rígidos parece estar usando hdparm.
Então corro sudo hdparm -S 200 /dev/sdb
e obtenho
/dev/sdb: setting standby to 200 (16 minutes + 40 seconds)
SG_IO: bad/missing sense data, sb[]: f0 00 01 00 50 40 c8 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Eu lembro de ter tentado isso antes sem receber uma mensagem extra com o SG_IO. Agora parece que qualquer valor que eu coloquei, a unidade gira depois de cerca de um minuto quando ocioso. Ele até gira e desliga várias vezes durante o trabalho, o que introduz atrasos incômodos e também acho que seria melhor que a integridade da unidade continuasse em execução.
Não encontrei uma maneira de ver se o valor está realmente definido, mas posso fazê-lo no nível de APM (Gerenciamento avançado de energia):
sudo hdparm -B 196 /dev/sdb
/dev/sdb:
setting Advanced Power Management level to 0xc4 (196)
SG_IO: bad/missing sense data, sb[]: f0 00 01 00 50 40 c4 0a 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
APM_level = 196
$ sudo hdparm -B /dev/sdb
/dev/sdb:
APM_level = 196
O sistema é o Arch Linux com o kernel 3.17.6.
Por que a unidade está girando mesmo assim? O que pode ser feito para evitá-lo?
hdparm
tem a seguinte opção, mas o resultado dos comandos é o mesmo:
--prefer-ata12 When using the SAT (SCSI ATA Translation) protocol, hdparm normally prefers to use the 16-byte command format whenever possible. But some USB drive enclosures don't work correctly with 16-byte commands. This option can be used to force use of the smaller 12-byte command format with such drives. hdparm will still revert to 16-byte commands for things that cannot be done with the 12-byte format (e.g. sector accesses beyond 28-bits).