dotfiles/.local/bin/scripts/disktest

31 lines
1.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash -e
# Test disk performance
# Adapted from https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/
# Using bash because of redirects
test "$1" = "-w" && write=true && shift
disk="${1:-$(df --output=source . | tail -1)}"
if test "$write"
then exec &> >(tee ".disktest-$(date +%F)")
fi
highlight() { echo "$1"; }
highlight "Checking SMART with hdparm"
# Needs sudo for read test
sudo hdparm -MWAgt "$disk" || true
if test $# -eq 0
then highlight "Write Test"
sync
count=3000$(test $(df --output="avail" . | tail -1) -gt 999999 && echo 0 || true)
tempfile=/var/tmp/.$count
# Prevent deduplication/predictions by using random rather than zero, but since that is too slow we have to copy a previously created file
test -s $tempfile ||
( highlight "Preparing random bits:" &&
sudo dd status=progress if=/dev/urandom of=$tempfile bs=1M count=$count ) &&
highlight "Copying random bits:" &&
sudo dd status=progress if=$tempfile of=.$count bs=1M count=$count
highlight "Copying zero bits:" &&
sudo dd status=progress if=/dev/zero of=.$count bs=1M count=$count
sudo rm .$count
fi