Ponos (Ancient Greek: Πόνος; "toil"/"labour") was the god of hard labor and toil in Greek mythology.
ponos is a Python script that helps you torture a given disk. It tries it best to stress your disk by doing a loads of reads and writes.
It can be used to preclear/burn-in your harddrives before committing them to a storage array. The goal is to root out bad disks before they are in production.
ponos does sequential and random reads and writes. ponos operatis in the following read/write phases:
-
Pre-read - We force the harddrives head to read for every sector on the surface.
-
Full-write - ponos overwrites every sector with 0's from
/dev/zero
. This erases all data on the drives (Well, if a block/sector already contains a 0', nothing will happen.). -
Random writes - This is where we start making writes of random sizes at random places on the disk.
-
Small random writes - 50 writes of 0-200 blocks starting at a random block.
-
Medium random writes - 20 writes of 2000-200000 blocks starting at a random block.
-
Random reads - This is where we start making reads of random sizes at random places on the disk.
-
Small random read - 50 reads of 0-200 blocks starting at a random block.
-
Medium random read - 20 reads of 2000-200000 blocks starting at a random block.
-
Post-read - We, again, force the harddrives head to read every sector on the surface of the disk.
ponos will let you look at the S.M.A.R.T. details of the disk before, and after the above 5 steps.
It will also display the statistics for each read and write, such as the time it took and the size of the data.
Please note that the script will take some time to complete. On a 2GB virtual harddrive that resides on a Apple SSD it takes around 260 seconds to complete.
I have not run any tests on actual hardware yet.
- python 2.7
- hdparm
- dd
- smartmontools