O estado de integridade geral é a parte da saída de smartctl -a
que aborda a questão global
Is the drive good or bad?
melhor. Na sua saída citada, esse status é relatado na linha
SMART Health Status: OK
que também pode ser obtido separadamente (com algum cabeçalho) usando a opção -H
de smartctl
, em vez de -a
.
Note que esta avaliação não vem do smartmontools, mas da própria drive (veja a página man smartctl (8) on -H
option) e que o seu significado é bastante grosseiro: Veja esta citação de Wikipedia :
The S.M.A.R.T. status does not necessarily indicate the drive's past or present reliability. If a drive has already failed catastrophically, the S.M.A.R.T. status may be inaccessible. Alternatively, if a drive has experienced problems in the past, but the sensors no longer detect such problems, the S.M.A.R.T. status may, depending on the manufacturer's programming, suggest that the drive is now sound.
e (mesma fonte):
More detail on the health of the drive may be obtained by examining the S.M.A.R.T. Attributes.
O status geral de integridade é refletido pelo bit 3 (contando a partir de 0) do status de saída de smartctl
, que está configurado no disco com falha. Consulte a seção "VALORES DE RETORNO" na página man smartctl (8) .
Logo após a execução de smartctl
, esse bit pode ser avaliado pela expressão (Bash) $(($? & 8))
like in
if [ $(($? & 8)) -eq 0 ]; then
echo Good.
else
echo Bad.
fi
Por favor, note que se o bit 3 estiver definido, a expressão $(($? & 8))
será 8, não 1.
Um status de saída zero de smartctl
é suficiente para um disco saudável (até onde o SMART pode julgar), mas como condição isso pode ser strong: O bit 6 desse status reflete a existência de registros de erro no logs de dispositivos, que também podem se referir a erros de comunicação entre a unidade e o host (erros de leitura de DMA). Eu tenho várias unidades cujos logs mostram esses erros em seus registros desde suas primeiras horas de vida, mas eu usei essas unidades diariamente sem problemas por anos. Portanto, esse critério pode fornecer muitos falsos positivos. Claro que isso é discutível, já que houve erros no final das contas.
De qualquer forma, se você quiser considerar todos os bits, menos aquele (bit 6), poderá usar essa expressão em seu teste: $(($? & 191))
.
Por outro lado, o critério
smartctl -a /dev/sda | grep Completed
que você mencionou não diz nada sobre a integridade da unidade, pois apenas informa que um autoteste foi concluído, sem levar em conta o resultado.