A few years ago, I bought a 500GB Essentiel B external USB hard drive from Boulanger (a multimedia store in France). Since then I have had 2 failures of the order of 1x / 2 years which seem to lose the file system (currently NTFS) and which requires reformatting, after that everything is fine until the next failure ...
General symptom : copy problem between HDD and other media => I didn't notice the error message since it's been a long time since I touched the disk, but it must have been something like "Input / output error"
Here is what the old FS gave me before reformatting :
user@host:~$ ls -al /media/user/USER-EHD
ls: impossible d'accéder à '/media/user/USER-EHD/anniv_fany.avi': Erreur d'entrée/sortie
total 15841832
drwxrwxrwx 1 user user 4096 oct. 3 21:14 .
drwx---rwx+ 6 root root 4096 mars 12 19:11 ..
-?????????? ? ? ? ? ? anniv_fany.avi
drwxrwxrwx 1 user user 4096 août 23 2020 xen_build
-rwxrwxrwx 1 user user 1569481183 août 7 2016 踔ororite.avi
drwxrwxrwx 1 user user 4096 août 23 2020 $RECYCLE.BIN
drwxrwxrwx 1 user user 4096 août 21 2020 System Volume Information
2 weird things:
- anniv_fany.avi : no metadata ????? + I/O error
- 踔ororite.avi : was actually named sororite.avi
And
user@host:~$ lsblk -f /dev/sdg
NAME FSTYPE LABEL UUID MOUNTPOINT
sdg
└─sdg1 ntfs USER-EHD 67AC02BC429C25D2 /media/user/USER-EHD
SMART verification => seems OK (see below)
Note : I am aware of the fact that the SMART is not 100% reliable (see that it is not useful to know the real health of the HDD)
user@host:~$ sudo smartctl -a -d sat -t long /dev/sdg
# so ... 2 hour later
user@host:~$ sudo smartctl -l selftest -d sat /dev/sdg
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-148-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 586 -
# 2 Extended offline Completed without error 00% 500 -
# 3 Extended offline Aborted by host 90% 499 -
# 4 Short offline Completed without error 00% 499 -
# 5 Extended offline Completed: read failure 00% 489 769438584
# 6 Extended offline Completed: read failure 00% 488 769438584
# 7 Extended offline Aborted by host 90% 486 -
# 8 Short offline Completed without error 00% 486 -
# 9 Short offline Completed without error 00% 112 -
2 of 2 failed self-tests are outdated by newer successful extended offline self-test # 1
=> would be OK : the 2 old reading errors are obsolete and smartctl considers that the long test went smoothly !
Here the details :
user@host:~$ sudo smartctl -a -d sat /dev/sdg
[sudo] Mot de passe de user :
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-148-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Toshiba 2.5" HDD MQ01ABF...
Device Model: TOSHIBA MQ01ABF050
Serial Number: 67ODTDZST
LU WWN Device Id: 5 000039 7d160c9a5
Firmware Version: AM001U
User Capacity: 500 107 862 016 bytes [500 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 5400 rpm
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Sat Mar 13 16:30:13 2021 CET
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
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: ( 120) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No 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: ( 115) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control 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 0x000b 100 100 050 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 050 Pre-fail Offline - 0
3 Spin_Up_Time 0x0027 100 100 001 Pre-fail Always - 2054
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 491
5 Reallocated_Sector_Ct 0x0033 100 100 050 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 050 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 050 Pre-fail Offline - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 588
10 Spin_Retry_Count 0x0033 109 100 030 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 355
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 1
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 123
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 6041
194 Temperature_Celsius 0x0022 100 100 000 Old_age Always - 30 (Min/Max 14/49)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
220 Disk_Shift 0x0002 100 100 000 Old_age Always - 0
222 Loaded_Hours 0x0032 100 100 000 Old_age Always - 132
223 Load_Retry_Count 0x0032 100 100 000 Old_age Always - 0
224 Load_Friction 0x0022 100 100 000 Old_age Always - 0
226 Load-in_Time 0x0026 100 100 000 Old_age Always - 262
240 Head_Flying_Hours 0x0001 100 100 001 Pre-fail Offline - 0
SMART Error Log Version: 1
ATA Error Count: 12 (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 12 occurred at disk power-on lifetime: 492 hours (20 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 78 b3 dc 4d Error: UNC 8 sectors at LBA = 0x0ddcb378 = 232567672
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 03 08 78 b3 dc 40 00 01:08:22.969 READ DMA EXT
ef 03 45 78 b3 dc 00 00 01:08:22.969 SET FEATURES [Set transfer mode]
ef 03 0c 78 b3 dc 00 00 01:08:22.969 SET FEATURES [Set transfer mode]
ec 03 08 78 b3 dc 00 00 01:08:22.968 IDENTIFY DEVICE
ff ff ff ff ff ff ff 0c 01:08:22.967 [VENDOR SPECIFIC]
Error 11 occurred at disk power-on lifetime: 492 hours (20 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 41 00 78 b3 dc 40 Error: UNC at LBA = 0x00dcb378 = 14463864
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 08 00 78 b3 dc 40 00 01:08:19.211 READ FPDMA QUEUED
25 03 08 78 b3 dc 40 00 01:08:15.457 READ DMA EXT
ef 03 45 68 b3 dc 00 00 01:08:15.457 SET FEATURES [Set transfer mode]
ef 03 0c 68 b3 dc 00 00 01:08:15.457 SET FEATURES [Set transfer mode]
ec 03 08 68 b3 dc 00 00 01:08:15.456 IDENTIFY DEVICE
Error 10 occurred at disk power-on lifetime: 492 hours (20 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 78 b3 dc 4d Error: UNC 8 sectors at LBA = 0x0ddcb378 = 232567672
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 03 08 78 b3 dc 40 00 01:08:15.457 READ DMA EXT
ef 03 45 68 b3 dc 00 00 01:08:15.457 SET FEATURES [Set transfer mode]
ef 03 0c 68 b3 dc 00 00 01:08:15.457 SET FEATURES [Set transfer mode]
ec 03 08 68 b3 dc 00 00 01:08:15.456 IDENTIFY DEVICE
ff ff ff ff ff ff ff 0c 01:08:15.455 [VENDOR SPECIFIC]
Error 9 occurred at disk power-on lifetime: 492 hours (20 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 41 00 78 b3 dc 40 Error: UNC at LBA = 0x00dcb378 = 14463864
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 08 00 78 b3 dc 40 00 01:08:11.708 READ FPDMA QUEUED
60 08 00 70 b3 dc 40 00 01:08:11.686 READ FPDMA QUEUED
25 03 08 68 b3 dc 40 00 01:08:11.668 READ DMA EXT
ef 03 45 00 b3 dc 00 00 01:08:11.668 SET FEATURES [Set transfer mode]
ef 03 0c 00 b3 dc 00 00 01:08:11.667 SET FEATURES [Set transfer mode]
Error 8 occurred at disk power-on lifetime: 492 hours (20 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 41 08 78 b3 dc 40 Error: UNC at LBA = 0x00dcb378 = 14463864
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 00 e8 b3 dc 40 00 01:08:07.918 READ FPDMA QUEUED
60 80 08 68 b3 dc 40 00 01:08:07.918 READ FPDMA QUEUED
60 40 00 28 b3 dc 40 00 01:08:07.918 READ FPDMA QUEUED
60 20 00 08 b3 dc 40 00 01:08:07.907 READ FPDMA QUEUED
25 03 08 00 b3 dc 40 00 01:08:07.890 READ DMA EXT
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 586 -
# 2 Extended offline Completed without error 00% 500 -
# 3 Extended offline Aborted by host 90% 499 -
# 4 Short offline Completed without error 00% 499 -
# 5 Extended offline Completed: read failure 00% 489 769438584
# 6 Extended offline Completed: read failure 00% 488 769438584
# 7 Extended offline Aborted by host 90% 486 -
# 8 Short offline Completed without error 00% 486 -
# 9 Short offline Completed without error 00% 112 -
2 of 2 failed self-tests are outdated by newer successful extended offline self-test # 1
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.
Nota : the Power On Hours is 588
According to this link, the attribute Current Pending Sector count indicates the current number of unstable sectors :
user@host:~$ sudo smartctl -a -d sat /dev/sdg | grep "Current_Pending_Sector"
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
=> there would be none !
Finally ...
user@host:~$ date ; badblocks -svn /dev/sdg ; date
samedi 13 mars 2021, 16:31:58 (UTC+0100)
Vérification des blocs défectueux dans un mode non destructif de lecture-
écriture
Du bloc 0 au bloc 488386583
Vérification des blocs défectueux (test non destructif de lecture-écriture)
Test en cours avec un motif aléatoire : complété
Passe complétée, 0 blocs défectueux repérés. (0/0/0 erreurs)
dimanche 14 mars 2021, 09:48:53 (UTC+0100)
=> about 17 hours later, badblocks announces that there is no error !
So I ask myself, how do I know if my drive is really HS and good for recycling ?
Does anyone have any expertise on the subject ?
I going,
I tried to long format (fulling with 0) with disk (Gnome disk utility) but at starting I saw the error "Error erasing device: Error writing 1048576 bytes to /dev/sdg: Input/output error (udisks-error-quark, 0)". So I tried to format with gparted and directly got "I/O error reading from /dev/sdg" (FR to EN translation) and when I tried to add a msdos partition table I had in add "Synchronization error / closing /dev/sdg : I/O error on target host" (FR to EN translation) then the disk disappeared completely from gparted ...
As smartctl reports everything is fine (as you assured me) as well as badblocks, I assumed the problem was not directly with the drive between it and the connector attached to the PC. So I disassembled the external drive case (the procedure was identical to this one) and tested the SATA drive with a SATA-USB docking station. I made the same tests and saw the same results.
I deduced that the problem came from the device itself and I asked to myself if there is not a low level utility to format the disk and clean to get a factory version. At one point, I gave up and could already see myself putting the record in recycling, suddenly as I have nothing to lose, broken for broken, I wanted to try everything possible and I found this topic which is related of the hdparm command ...
I studied on the surface topics 1 and 2. This site allowed me to find my hard drive password (subsequently stored in the PASS variable and which for a TOSHIBA disk consists of 32 spaces - yes, I too was surprised) which is different according to the manufacturer (adapt according to his). From these explanations, I stupidly applied without really understanding, the lines that seemed to work :
user@host:~$ PASS=$( printf %32s )
user@host:~$ sudo hdparm -I /dev/sdg
...
Security:
Master password revision code = 65534
supported
enabled
locked
not frozen
not expired: security count
supported: enhanced erase
Security level high
108min for SECURITY ERASE UNIT. 108min for ENHANCED SECURITY ERASE UNIT.
...
user@host:~$ sudo hdparm --user-master u --security-set-pass "$PASS" /dev/sdg
security_password: " "
/dev/sdg:
Issuing SECURITY_SET_PASS command, password=" ", user=user, mode=high
user@host:~$ sudo hdparm -I /dev/sdg
...
Security:
Master password revision code = 65534
supported
enabled
locked
not frozen
not expired: security count
supported: enhanced erase
Security level high
108min for SECURITY ERASE UNIT. 108min for ENHANCED SECURITY ERASE UNIT.
...
user@host:~$ date ; sudo hdparm --user-master u --security-erase "$PASS" /dev/sdg ; date
mardi 16 mars 2021, 19:22:49 (UTC+0100)
security_password: " "
/dev/sdg:
Issuing SECURITY_ERASE command, password=" ", user=user
mardi 16 mars 2021, 20:50:47 (UTC+0100)
user@host:~$ sudo hdparm -I /dev/sdg
...
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
108min for SECURITY ERASE UNIT. 108min for ENHANCED SECURITY ERASE UNIT.
...
# enable -> not enabled AND locked -> not locked
user@host:~$ sudo hdparm --user-master m --security-unlock "$PASS" /dev/sdg
security_password: " "
/dev/sdg:
Issuing SECURITY_UNLOCK command, password=" ", user=master
user@host:~$ sudo hdparm --user-master m --security-disable "$PASS" /dev/sdg
security_password: " "
/dev/sdg:
Issuing SECURITY_DISABLE command, password=" ", user=master
I was pleasantly surprised to find that these commands had unlocked something (but I don't know what):
- test gparted add MSDos partition table + NTFS formatting => OK
- test Gnome disk (long formatting) => OK
- test adding / deleting files / folders on Windows and Linux => OK
Warning: I am not too sure of the "non-destructive" character of hdparm (if the command can make a hard disk physically inaccessible, a bit like bricked smartphones). In any case, using the ABOVE commands, even if at first I used the wrong password (I took the dummy one that was given : "llformat"), something has changed or is unlocked (I can not say what). So to dig ...
So everything seems to be back to normal !
Does anyone knows what hdparm changed to make it work again ?
grep
them away), because with those, we can assess how defective the disk is. All modern harddisks (and this is one) have spare sectors and automatically reallocate them, sobadblocks
is not a good tool to assess the health.