Big ups to everybody!
I recently discovered an absolutely horrible thing with the Western Digital 2.5" HDD in my laptop.
By reading the hdparm f***g manual I noticed the -J option:
-J Get/set the Western Digital (WD) Green Drive's "idle3" timeout
value. This timeout controls how often the drive parks its
heads and enters a low power consumption state. The factory
default is eight (8) seconds, which is a very poor choice for
use with Linux. Leaving it at the default will result in
hundreds of thousands of head load/unload cycles in a very short
period of time. The drive mechanism is only rated for 300,000
to 1,000,000 cycles, so leaving it at the default could result
in premature failure, not to mention the performance impact of
the drive often having to wake-up before doing routine I/O.
WD supply a WDIDLE3.EXE DOS utility for tweaking this setting,
and you should use that program instead of hdparm if at all
possible. The reverse-engineered implementation in hdparm is
not as complete as the original official program, even though it
does seem to work on at a least a few drives. A full power
cycle is required for any change in setting to take effect,
regardless of which program is used to tweak things.
A setting of 30 seconds is recommended for Linux use. Permitted
values are from 8 to 12 seconds, and from 30 to 300 seconds in
30-second increments. Specify a value of zero (0) to disable
the WD idle3 timer completely (NOT RECOMMENDED!).
Using this -J option I discovered that my WD 2.5" HDD was affected by this bad 8 seconds timeout.
The manual refers to the WIDLE3.EXE DOS utility for tweaking this setting.
I found this web page to help using the DOS utility.
Instead of using a DOS utility, I found the package idle3-tools for tweaking this setting:
idle3ctl can disable, get and set the value of the infamous idle3 timer
found on recent Western Digital Hard Disk Drives. Idle3ctl can be used
as an alternative to the official wdidle3.exe proprietary utility,
without the need to reboot in a DOS environement. Idle3ctl is an
independant project, unrelated in any way to Western Digital Corp.
THIS SOFTWARE IS EXPERIMENTAL, NOT WELL TESTED AND ACCESSES LOW LEVEL
INFORMATION OF YOUR HARDDRIVE. USE AT YOUR OWN RISK.
I found the Arch wiki page to help using the idle3ctl command.
I disabled the timeout setting with the -d option, and now you can see:
$ sudo idle3ctl -g /dev/sda
Idle3 timer is disabled
The package smartmontools is useful too:
$ sudo smartctl /dev/sda -a | grep Load_Cycle
193 Load_Cycle_Count 0x0032 068 068 000 Old_age Always - 396805
396805 it’s a lot of cycles !!
At least I stopped the bleeding…