A unidade pode ficar lenta devido a setores instáveis (que são setores que a unidade não pode ler no momento, mas podem se tornar legíveis após serem sobrescritos ou realocados). Eu observei isso em uma unidade externa eu mesmo. No meu caso, os setores instáveis causaram erros de E / S em uma parte freqüentemente usada do sistema de arquivos. Embora nenhum arquivo parecesse falhar, a taxa de transferência caiu espantosamente para cerca de 100 kB / s.
Uma tentativa difícil mas fácil de consertar isso seria apagar o disco com Disk Utility
usando a opção de apagar seguro Zero Out Data
. Isso pode corrigir os setores instáveis ou realocá-los para uma pequena seção sobressalente da unidade.
Vou instruir você aqui sobre como localizar e possivelmente corrigir erros de leitura na linha de comando ( Terminal
application). Você deve ter direitos de administrador e fornecer a senha da sua conta para fazer isso. Antes de começar, você deve fazer backup de seus dados. E em ambos os casos, você deve inspecionar a saúde da unidade com um S.M.A.R.T. ferramenta depois de terminar.
Primeiro, identifique o dispositivo correspondente à sua unidade com diskutil
:
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *256.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Internal HD 255.7 GB disk0s2
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *3.0 TB disk1
1: Apple_HFS External HD 3.0 TB disk1s1
$
Nesse caso, a unidade externa é /dev/disk1
. Agora faça uma cópia bruta desta unidade para 'nowhere', usando o comando dd
.
$ sudo dd if=/dev/rdisk1 of=/dev/null bs=65536
Password:
(observe o uso de rdisk1
em vez de disk1
aqui, isso desativa o buffer e acelera dd
).
Mesmo para um disco saudável conectado via USB2, esse comando leva aproximadamente 9 h / TB. Para verificar seu progresso, pressione ctrl-t
enquanto estiver sendo executado.
Em caso de erro de leitura, dd
sairá com uma notificação como esta:
dd: reading '/dev/rdisk1': Input/output error
11233976+0 records in
11233976+0 records out
736229851136 bytes transferred in 23179.173766 seconds (3176255 bytes/sec)
Os números records in/out
indicam onde no disco o erro ocorreu. Multiplique por 128 para obter o endereço LBA ofensivo (isso porque escolhi bs=65536
para dd
, blocos 65536 bytes, que são 128 setores).
Você deve fazer backup de seus dados agora, se ainda não tiver feito isso.
Tente sobrescrever o segmento ofensivo com zeros (use o records in/out
number como o argumento skip
). Observe que esta etapa pode destruir dados que ainda estão intactos.
$ sudo dd if=/dev/zero of=/dev/rdisk1 bs=65536 skip=11233976 count=1
Password:
1+0 records in
1+0 records out
65536 bytes transferred in 0.001996 secs (32833004 bytes/sec)
Continue lendo, começando com o segmento recém-escrito (novamente, use o records in/out
number como o argumento skip
).
$ sudo dd if=/dev/rdisk1 of=/dev/null bs=65536 skip=11233976
Depois que você não encontrar mais erros de leitura, a unidade estará pronta para ser apagada. Como você substituiu os segmentos errados manualmente, não é necessário escolher Zero Out Data
agora.
Lembre-se de inspecionar a saúde da unidade com um S.M.A.R.T. pedágio depois de terminar.