#!/bin/bash

# ganti ke yang lebih sesuai, mendekati ukuran harddisk
NUM_GIGS=200

function cleanup {
  echo "Cleaning up ..."
  rm -f 100MB 1GB 1GB.[0-9] 1GB.[0-9]*[0-9]
}

trap cleanup EXIT

iter=0
while true; do

  iter=$[$iter+1]
  echo "Iteration $iter"

  echo "Writing 100MB of random data ..."
  dd if=/dev/urandom of=100MB bs=100k count=1024

  echo "Creating 1GB ..."
  cat 100MB 100MB 100MB 100MB 100MB  \
      100MB 100MB 100MB 100MB 100MB > 1GB

  i=1
  while [[ i -lt NUM_GIGS ]]; do
    i=$[$i+1]
    echo "Creating 1GB.$i ..."
    cp 1GB 1GB.$i
  done

  cleanup
done

Skrip ini dapat digunakan untuk mengetes harddisk. Cara kerja skrip ini yaitu dengan melakukan random write pada harddisk secara terus-menerus. Anda lalu dapat mengamati lewat /var/log/messages apakah ditemukan error.

Cara penggunaan

Ketik/copy-paste dan “chmod +x” skrip tersebut. Misalnya skrip ada di /root dan diberi nama ‘testwrite’.

# cd /root
# chmod +x testwrite

Jalankan skrip tersebut pada partisi yang ingin dites. Contoh, Anda ingin mengetes partisi / (misalnya ini adalah /dev/sda1) dan partisi /backup (misalnya ini adalah /dev/sdb1).

# cd /
# /root/testwrite
# cd /backup
# /root/testwrite

Bisa saja skrip dijalankan bersamaan untuk tiap partisi.

Setelah itu coba amati di console lain apakah ada error yang muncul:

# tail -f /var/log/messages

Edit nilai NUM_GIGS pada skrip jika ukuran harddisk berbeda. Sebagai patokan kasar, gunakan nilai sekitar 200-220 untuk harddisk 250GB (mengetes sekitar 80-90% disk).

Jika ingin keluar dari skrip, tekan Ctrl-C.