dotfiles/.local/bin/scripts/disktest

29 lines
1.0 KiB
Plaintext
Raw Normal View History

2022-08-04 21:55:07 +00:00
#!/bin/bash -e
# Test disk performance
# Adapted from https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/
2022-08-04 21:55:07 +00:00
# Using bash because of redirects
2022-07-05 09:40:11 +00:00
test "$1" = "-w" && write=true && shift
disk="${1:-$(df --output=source . | tail -1)}"
2022-07-05 09:40:11 +00:00
if test "$write"
2022-09-16 12:48:43 +00:00
then exec &> >(tee ".disktest-$(date +%F)")
2022-07-05 09:40:11 +00:00
fi
2022-08-04 21:55:07 +00:00
highlight() { echo "$1"; }
highlight "Checking SMART with hdparm"
2022-07-05 09:40:11 +00:00
# Needs sudo for read test
sudo hdparm -MWAgt "$disk"
2022-08-04 21:55:07 +00:00
if test $# -eq 0
2022-08-04 21:55:07 +00:00
then highlight "Write Test"
sync
2022-07-05 09:40:11 +00:00
# This prevents predictions by using random, but since that is too slow we have to copy a previously created file
2023-03-13 14:36:09 +00:00
count=100$(test $(df --output="avail" . | tail -1) -gt 999999 && echo 0 || true)
highlight "Preparing random bits:" &&
sudo dd status=progress if=/dev/random of=/var/tmp/tempfile bs=1M count=$count &&
2022-08-04 21:55:07 +00:00
highlight "Copying random bits:" &&
2023-03-13 14:36:09 +00:00
sudo dd status=progress if=/var/tmp/tempfile of=tempfile bs=1M count=$count
2022-08-04 21:55:07 +00:00
highlight "Copying zero bits:" &&
2023-03-13 14:36:09 +00:00
sudo dd status=progress if=/dev/zero of=tempfile bs=1M count=$count
sudo rm tempfile
fi