ZFS scrubs. I sleep well at night and haven’t lost a byte of valuable data in 15+ years.
Data Hoarder
We are digital librarians. Among us are represented the various reasons to keep data -- legal requirements, competitive requirements, uncertainty of permanence of cloud services, distaste for transmitting your data externally (e.g. government or corporate espionage), cultural and familial archivists, internet collapse preppers, and people who do it themselves so they're sure it's done right. Everyone has their reasons for curating the data they have decided to keep (either forever or For A Damn Long Time (tm) ). Along the way we have sought out like-minded individuals to exchange strategies, war stories, and cautionary tales of failures.
Any drive made this side of year 2000 will check itself when reading, so all you need is to fill it with junk data and open it, then delete.
WD has the "WD Dashboard" utility that will allow you to run a LONG SMART test.
HD Sentinel
None. Modern drives reallocate bad sectors so the only important metric I look at is remaining spare sectors.
The manufactures software. In your case
https://support-en.wd.com/app/products/downloads/softwaredownloads
WD Drive Utilities
Western Digital Dashboard
It is expected that some sectors fail over time. The HD is provision with extra space to account for this. The SMART threshold is what you should look at.
If out of other options just do a simply zero format (e.g. diskutil zeroDisk diskX
on macOS), and a long SMART test afterwards (e.g. smartctl -t long diskX
). That's what I do with my new disks and it served me well so far. For large capacity disks it is like a heavy 2 day process (1 day formatting, 1 day testing), but it gives me a piece of mind afterwards.
Extra Hint: During any SMART long test make sure to disable disk sleep in your OS for the time, else test will abort (e.g. caffeinate -m
on macOS). Also avoid crappy external enclosures that put the disks to sleep by themselves (or you may want to run a script that regularly reads a block from the disk to keep it awake.)
Here's my macOS script to handle the job (I needed it recently because a temporary crappy USB enclosure). It reads a block every 2 minutes via raw I/O w/o caching involved ("/dev/rdisk")
#!/bin/bash
# $Id: keepdiskawake 64 2023-10-29 01:55:56Z tokai $
if [ "$#" -ne 1 ]; then
echo "keepdiskawake: required argument required (disk identifier, volume name, or volume path)." 1>&2
exit 1
fi
MY_DISKID=`diskutil info "${1}" | awk '/Device Identifier:/ {print $3}'`
if [[ ! -z "${MY_DISKID-}" ]]; then
printf '\033[35mPoking disk \033[1m"%s"\033[22m with identifier \033[1m"%s"\033[22m…\033[0m\n' "${MY_DISKNAME}" "${MY_DISKID}"
MY_RDISKID="/dev/r${MY_DISKID}"
echo "CTRL-C to quit"
while true; do
echo -n .
dd if="${MY_RDISKID}" of="/dev/null" count=1 2>/dev/null
sleep 120
done
else
echo "keepdiskawake: Couldn't determine disk identifier for \"${1}\"." 1>&2
exit 1
fi
Do a long SMART test. It goes over the whole drive. The short ones only do spot checks.
you need to do a full read and write on the disk. use a program to write the disk full of 0s and then verify read. UNRAId does this with its preclear function.