Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Oct 2024 04:57:49 -0700
From:      "Ronald F. Guilmette" <rfg@tristatelogic.com>
To:        questions@freebsd.org
Subject:   How to zero a failing disk drive before disposal?
Message-ID:  <5117.1728561469@segfault.tristatelogic.com>

next in thread | raw e-mail | index | archive | help
I have a pretty ancient 4TB spinning rust drive (WD4001FAEX) that is unamb=
iguously at
death's door:

  1 Raw_Read_Error_Rate     0x002f   200   173   051    Pre-fail  Always  =
     -       0
  3 Spin_Up_Time            0x0027   167   161   021    Pre-fail  Always  =
     -       10641
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always  =
     -       155
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always  =
     -       1
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always  =
     -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always  =
     -       829
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always  =
     -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always  =
     -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always  =
     -       80
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always  =
     -       24
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always  =
     -       130
194 Temperature_Celsius     0x0022   126   098   000    Old_age   Always  =
     -       26
196 Reallocated_Event_Count 0x0032   199   199   000    Old_age   Always  =
     -       1
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always  =
     -       36
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline =
     -       32
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always  =
     -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline =
     -       40

In addition to the above clear indications of failure, "smartctl -t long" =
dies almost
immediately with a fatal error.

Now I plan to dispose of the drive (appropriately, at a proper e-waste rec=
ycling place)
however there may be some confidential data on the thing that should be wi=
ped first...
because I'm paranoid.

I used to own an old RadioShack bulk tape eraser (basically just a big ele=
ctromagnet)
that I would use on drives before disposing of them but I don't have that =
any more.

I could try using smartctl to initiate a secure erase, but for various rea=
sons it would
just be more convenient if I could just dd /dev/zero to the thing.  But th=
ere's a catch.

According to what I have read, dd will halt if it encounters a write error=
.  That's a
clear problem in this context.  Also, according to the dd man page, the co=
nv=3Dnoerror
option for dd won't really be helpful in this case since that just prevent=
s dd from
stopping on _input_ errors.

Any suggestions?  If worse comes to worse I guess I will end up writing my=
 own tiny
little C program to just write 4KB blocks to a designated output file whil=
e ignoring
all output errors, but I don't want to reinvent the wheel if somebody else=
 already
created something I can use in this context.

Suggestions welcome.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5117.1728561469>