Estou vendo alguns erros estranhos no syslog. Estou executando um debian 7.9. Alguém já viu isso antes e / ou sabe o que pode estar acontecendo? Meu disco rígido está falhando? Eu fiz um fsck outro dia na inicialização e não havia mensagens dizendo isso. É um disco rígido externo criptografado por USB (LUKS), que é descriptografado / montado na inicialização. Não há RAIDs nem nada do tipo configurado no computador. Eu tenho duas outras unidades configuradas da mesma forma, sem problemas.
Olhei para os dados inteligentes da unidade e ela diz que passou no "teste geral de saúde". Há mais alguma coisa que eu possa verificar / fazer para ter uma idéia de sua condição? Por que eu estaria recebendo esses erros?
Sep 24 02:49:03 centaur kernel: [ 1429.377929] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 02:49:03 centaur kernel: [ 1429.377933] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 02:49:03 centaur kernel: [ 1429.377939] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 80 16 08 00 00 08 00
Sep 24 02:49:03 centaur kernel: [ 1429.377950] end_request: I/O error, dev sdb, sector 947918344
Sep 24 11:41:19 centaur kernel: [32752.064706] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 11:41:19 centaur kernel: [32752.064710] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 11:41:19 centaur kernel: [32752.064715] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 f6 08 00 00 08 00
Sep 24 11:41:19 centaur kernel: [32752.064727] end_request: I/O error, dev sdb, sector 943781384
Sep 24 13:00:15 centaur kernel: [37487.599035] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:00:15 centaur kernel: [37487.599040] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:00:15 centaur kernel: [37487.599045] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 e1 68 00 00 08 00
Sep 24 13:00:15 centaur kernel: [37487.599056] end_request: I/O error, dev sdb, sector 943776104
Sep 24 13:55:44 centaur kernel: [40816.471962] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:55:44 centaur kernel: [40816.471967] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:55:44 centaur kernel: [40816.471972] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 6b e0 00 00 08 00
Sep 24 13:55:44 centaur kernel: [40816.471984] end_request: I/O error, dev sdb, sector 943746016
Sep 24 14:26:37 centaur kernel: [42670.078961] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:26:37 centaur kernel: [42670.078965] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:26:37 centaur kernel: [42670.078971] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 00 25 20 00 00 08 00
Sep 24 14:26:37 centaur kernel: [42670.078983] end_request: I/O error, dev sdb, sector 939533600
Sep 24 14:57:41 centaur kernel: [44533.796981] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:57:41 centaur kernel: [44533.796987] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:57:41 centaur kernel: [44533.796992] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 76 08 00 00 08 00
Sep 24 14:57:41 centaur kernel: [44533.797003] end_request: I/O error, dev sdb, sector 943748616
Informações de smartctl:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda LP
Device Model: ST32000542AS
Serial Number: 6XW135W4
LU WWN Device Id: 5 000c50 01f01e7ee
Firmware Version: CC34
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Sep 25 00:18:47 2015 MDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 623) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x103f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 118 099 006 Pre-fail Always - 178542268
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 085 085 020 Old_age Always - 15977
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 065 060 030 Pre-fail Always - 81661499813
9 Power_On_Hours 0x0032 045 045 000 Old_age Always - 48686
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 69
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 099 000 Old_age Always - 4295032833
189 High_Fly_Writes 0x003a 083 083 000 Old_age Always - 17
190 Airflow_Temperature_Cel 0x0022 052 040 045 Old_age Always In_the_past 48 (0 174 52 30)
194 Temperature_Celsius 0x0022 048 060 000 Old_age Always - 48 (0 14 0 0)
195 Hardware_ECC_Recovered 0x001a 042 020 000 Old_age Always - 178542268
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 208202834670158
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 1107416570
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 361340835
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Também olhei para este site e um dos pôsteres altera seu sysctl.conf como o que está colado abaixo, mas o meu já está definido assim ...
/etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
fonte
Respostas:
Fazer backup primeiro
Antes da solução de problemas, verifique se todos os dados necessários no disco rígido afetado (
/dev/sdb
) estão em backup.Problemas ao fazer backup?
Se você encontrar erros de E / S que não resultam de corrupção no sistema de arquivos (você indicou que seus
fsck
resultados foram limpos) e seus dados são realmente importantes para você, a maneira mais segura de recuperar o que você pode usargddrescue
(oudd_rescue
, se você preferir).Aqui está um exemplo com
gddrescue
:… Onde
/somewhere/else
está o caminho para uma montagem que tem mais espaço livre do que o tamanho de/dev/sdb
.gddrescue
O arquivo de log em/somewhere/else/ddrescue.log
também pode ajudá-lo a identificar quais áreas do seu disco rígido são ilegíveis.Depois que uma imagem completa da unidade for criada, você poderá recuperar a maior parte do que deve ser recuperado usando outras ferramentas como TestDisk ou
kpartx -av /somewhere/else/rescue.img
ecryptsetup luksOpen
, mas elas estão fora do escopo de sua pergunta.Respondendo as suas perguntas
Eu já vi vários problemas de hardware nos discos rígidos e meu tempo relativamente curto trabalhando com eles. Embora eu não seja um especialista, ainda é difícil identificar que tipo de falhas podem estar acontecendo com sua unidade específica.
Bem, sua unidade não está ciente de que está falhando.
Ele pode descobrir ou, às vezes, causar mais problemas, à medida que você tenta ler, e as operações de gravação às vezes podem piorar as condições, dependendo do tipo de dano presente.
Erros de leitura de hardware podem afetar o conteúdo dos arquivos, mas não o próprio sistema de arquivos.
Sim, tentei escrever um guia completo para você abaixo.
Existem muitas causas de problemas de E / S do disco rígido.
Um comum é derrubar ou mover a unidade com muita força enquanto estiver em uso. Isso acontece muito com discos rígidos externos como o seu.
Outra é que você tem um Seagate Barracuda, que tende a não ser confiável:
(Clique na imagem acima para ver uma revisão da confiabilidade do disco rígido.)
Também pode ser apenas problemas aleatórios que podem afetar apenas uma pequena parte da unidade ou eventualmente se transformar em uma baixa.
Solução de problemas
Os comandos nesta seção são não destrutivos.
Ler setores individuais
Sua primeira indicação de um problema foram os erros de E / S de log do kernel. Tente ver se esses setores são legíveis:
… Onde
947918344
é o número do setor registrado no log do kernel e/dev/sdb
é a unidade problemática suspeita.A maioria dos discos rígidos tentará ler o setor, por isso pode levar algum tempo. Se você receber um erro de E / S imediatamente, significa que a unidade sabia com certeza que o setor está fora dos limites e nem tentará lê-lo. Se levar alguns segundos para obter um erro de E / S, a unidade provavelmente tentou e falhou ao ler o setor. Aqui está um exemplo de um erro de E / S que aconteceu imediatamente:
Aqui está um exemplo de uma leitura bem-sucedida:
Você tem um problema quando os setores existentes retornam um erro de entrada / saída. Isso pode significar corrupção de dados.
Autoteste estendido SMART
Você pode executar um autoteste offline estendido SMART com este comando:
Veja como verificar o progresso de um teste aqui .
Após a conclusão do teste, você pode verificar seu status com este comando:
Aqui está um exemplo de um disco rígido que eu "consertei" (explicação a seguir):
No passado, o setor
1475120744
não podia ser lido e o teste falhou naquele momento, mas algum tempo depois, o setor foi corrigido? Leia sobre como isso pode ser."Reparando" sua unidade
Remapear setores defeituosos
Se repetidas tentativas de
hdparm --read-sector
manter a unidade mais lenta e retornar um erro de E / S após algum tempo, os dados provavelmente nunca voltarão. Você pode dizer ao disco rígido para remapear o setor afetado para um sobressalente, o que deixará o setor completamente em branco da sua perspectiva:… Onde
947918344
é o número do setor que você deseja substituir.É possível ficar sem setores sobressalentes, mas, se o fizer, sua unidade está com defeito e você deve substituí-la. ( Exemplo )
Escanear e reparar
Uma unidade só pode conhecer setores defeituosos se os vir. Você pode verificar setores defeituosos usando
badblocks
:Leituras com falha seriam registradas no log do kernel como você viu antes e produzidas por
badblocks
. Você pode usar essas informações para remapear setores usandohdparm --write-sector
.ATA Secure Erase
Se você não quiser esperar
badblocks
ou criar scripts para remapear setores, poderá eliminar todos os setores defeituosos (assim como todos os outros dados) de uma só vez.Nota: Essas instruções podem não funcionar em uma interface USB.
Remapear e limpar com
dd
Você também pode remapear setores limpando sua unidade com
dd
:Remapear e limpar com
dd
e preservar LUKSComo alternativa, se o seu dispositivo LUKS for descriptografado em
/dev/mapper/your-luks-device
:fonte