Eu tenho um disco rígido USB conectado a um servidor Debian GNU/Linux. Estou tentando formatá-lo (NTFS), com este comando:
# mkntfs -v /dev/sdd1
que leva algumas horas, porque verifica o disco também. Durante a verificação, dmesg -T
mostra o seguinte:
[Wed Jan 12 15:22:53 2022] sd 9:0:0:0: [sdd] Attached SCSI disk
[Wed Jan 12 18:03:26 2022] usb 1-4: USB disconnect, device number 5
[Wed Jan 12 18:03:26 2022] blk_update_request: I/O error, dev sdd, sector 621745808 op 0x1:(WRITE) flags 0x104000 phys_seg 240 prio class 0
[Wed Jan 12 18:03:26 2022] Buffer I/O error on dev sdd1, logical block 621743760, lost async page write
[Wed Jan 12 18:03:26 2022] Buffer I/O error on dev sdd1, logical block 621743761, lost async page write
(...and so on for a few lines, then)
[Wed Jan 12 18:03:26 2022] blk_update_request: I/O error, dev sdd, sector 621746048 op 0x1:(WRITE) flags 0x104000 phys_seg 240 prio class 0
[Wed Jan 12 18:03:26 2022] blk_update_request: I/O error, dev sdd, sector 621746288 op 0x1:(WRITE) flags 0x100000 phys_seg 8 prio class 0
[Wed Jan 12 18:03:26 2022] blk_update_request: I/O error, dev sdd, sector 621746296 op 0x1:(WRITE) flags 0x800 phys_seg 16 prio class 0
(...and so on for a few lines, then)
[Wed Jan 12 18:03:31 2022] buffer_io_error: 9015384 callbacks suppressed
(...other errors...)
Olhando para a grande quantidade de mensagens de erro, eu diria que o HDD está quase morto, mas anexá-lo a um PC com Windows parece funcionar. Além disso, o primeiro erro ( usb 1-4: USB disconnect, device number 5
) que vem dmesg
antes dos outros erros, me faz suspeitar que o problema não é o HDD em si, mas outra coisa que faz com que o HDD se desconecte em primeiro lugar, e os erros subsequentes podem ser a consequência óbvia da desconexão .
No entanto, não sou muito experiente em dmesg
saída, então é muito possível que eu esteja lendo errado.
EDIT: conforme solicitado pelo NiKiZe, aqui está a saída de smartctl -a /dev/sdd
:
# smartctl -a /dev/sdd
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-5.10.0-3-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Blue Mobile
Device Model: WDC WD10SPCX-00KHST0
Serial Number: WD-WXF1A95F0J3X
LU WWN Device Id: 5 0014ee 65b7e0332
Firmware Version: 01.01A01
User Capacity: 1.000.204.886.016 bytes [1,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 5400 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 (minor revision not indicated)
SATA Version is: SATA 3.0, 6.0 Gb/s (current: 1.5 Gb/s)
Local Time is: Thu Jan 13 11:04:19 2022 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
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: (16080) 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: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 184) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x7035) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 190 184 021 Pre-fail Always - 1500
4 Start_Stop_Count 0x0032 081 081 000 Old_age Always - 19048
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 073 073 000 Old_age Always - 20415
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 188
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 43
193 Load_Cycle_Count 0x0032 187 187 000 Old_age Always - 41054
194 Temperature_Celsius 0x0022 119 095 000 Old_age Always - 28
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 100 253 000 Old_age Offline - 0
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.
Supondo que este HDD esteja realmente falhando e que essas mensagens de erro dmesg
estejam lá para setores defeituosos reais, por que dmesg
mostra uma desconexão antes das mensagens de setores defeituosos e não depois?
A desconexão acontece primeiro, então você obtém uma mistura de erros causados pela desconexão, onde várias camadas que geram gravações de disco percebem que algo está errado.
A maioria das E/S acontece na forma de uma página de memória "suja" que tem um disco de apoio, que o kernel eventualmente consegue liberar para o disco, muito depois que a gravação foi reconhecida para o aplicativo, e as únicas camadas de driver que são ainda interessados na solicitação são o subsistema de memória (que deseja saber se a página pode ser liberada) e o sistema de arquivos (que precisa gerar mais gravações para atualizar os metadados após a gravação dos dados) -- qualquer coisa acima que tenha sido desmontada já.
Algumas solicitações não passam pelo subsistema de memória (por exemplo, a consulta de status SMART), algumas solicitações como leituras provavelmente são anexadas apenas ao subsistema de memória, pois o sistema de arquivos pesquisou o mapeamento de blocos e não precisa mais ser envolvido.
Portanto, as mensagens de erro que você recebe como resultado da desconexão não têm uma ordem específica - elas acontecem quando as solicitações são geradas, enviadas e rejeitadas devido ao dispositivo estar offline. Se houver uma relação causal entre algumas das solicitações (como uma entrada de diário que reflete o novo estado após a transferência de dados abortada - afinal, o diário pode estar em um dispositivo diferente), isso define um pouco como uma ordem.
Eu provavelmente tentaria usar o disco em uma porta SATA adequada e com energia de uma boa fonte - os conversores de voltagem em gabinetes USB para SATA geralmente são um pouco duvidosos.
Por favor, considere a unidade morta.
Normalmente não demora muito para formatar uma unidade. No entanto, as tentativas e redefinições em blocos defeituosos levam tempo.
Claro que isso pode ser devido a uma fonte de alimentação ruim ou outra coisa.
Nem todos os dispositivos USB suportam smart passthru, mas tente:
smartctl -a /dev/sdd
Procure especialmente porReallocated_Sector_Ct
,Reallocated_Event_Count
,Current_Pending_Sector
,Offline_Uncorrectable
Se algum deles tiver umRAW_VALUE
diferente de0
, eu tentaria evitar usar o disco para qualquer coisa que não fosse dados não importantes.Se não houver dados no disco, você sempre pode tentar limpá-lo, usando algo como ( tome cuidado aqui !!! )
dd if=/dev/zero of=/dev/sdd bs=4M status=progress
. Você precisará recriar a tabela de partição posteriormente.