- Power off data server
- Take one drive out of the data server and put it into powered-off compute node
- power on compute node
- choose a LBA which should be "corrupted", e.g. 59511
- save the data around this block:
dd if=/dev/sdb of=precorruption.data bs=512 skip=59500 count=100
make_bad_sector /dev/sdb 59511
/dev/sdb: readback test LBA=59511
/dev/sdb: success
/dev/sdb: writing LBA=59511
/dev/sdb: readback test LBA=59511 (this should fail)
/dev/sdb: readback failed
smartctl -data -t long /dev/sdb
- This should fail (after a very short time) with the LBA chosen. The error message at the end of the output of
smartctl -data -a /dev/sdb
should read:
# 1 Extended offline Completed: read failure 90% 1339 59511
(of course some numbers will vary for you).
- NOTE: if you happen to have a very recent version of smartmontools (at the time of writing this is a CVS-only feature), try using -d sat to enable you to run a selctive test. This won't take as long.
- now power down compute node
- remount the disk into the data server
- power up the data server
- start scrubbing with (cli64-172 is Areca's command line tool version 1.72):
./cli64-172 vsf check vol=1
(if no error is detected and there is another volume, please check this also!)
watch -n 30 ./cli64-172 vsf info
./cli64-172 event info
This one should read like:
2008-01-26 16:21:11 IDE Channel # 5 Reading Error
- wait until check is done - it should be found and corrected
- power down the data server
- remount disk into compute node (powered off again)
- power on the compute node
- run dd again to see of the data is still the same
- further check:
make_bad_sector --readback /dev/sdb 59511
This should not fail.
And it does not fail (also, smartctl does not fail)
Conclusion: Areca 1261ML DOES do a proper job with scrubbing.
ToDo: Length of test
Helper scripts
do_bad.sh with example configuration
#!/bin/bash
# configure the script here THINK TWICE
# Damage sectors between 201GB - 209GB
LBA_LIST="421528000 421569110 421597920 421629030 421729440 421892850 425342760 429423403 431324854 436924732"
LBA_FIRST=419430400
LBA_LAST=440401900
BYTE_SIZE=512
HARD_DRIVE=/dev/sdb
OUT_PRE_FILE=precorruption.data
# DO NOT TOUCH THE LINES BELOW
let FILE_SIZE=$LBA_LAST-$LBA_FIRST
echo Calculated size: $FILE_SIZE
echo Create $OUT_PRE_FILE
dd if=$HARD_DRIVE of=$OUT_PRE_FILE bs=$BYTE_SIZE skip=$LBA_FIRST count=$FILE_SIZE
echo Corrupt drive
for i in $LBA_LIST; do
echo make_bad_sector $HARD_DRIVE $i
done