5 Commits

Author SHA1 Message Date
Keith Nash
0675845f0c Merge pull request #24 from kyounger/allow-bc-args
Allow `-b` & `-c` args
2023-07-14 09:14:27 -05:00
kyounger
7ff8c08416 Allow -b arg override in badblocks run 2022-05-30 10:22:35 -05:00
kyounger
52a934b5f8 Allow -c arg override in badblocks run 2022-05-30 10:21:56 -05:00
Keith Nash
66c5bb6d52 Merge pull request #19 from hogenf/patch-1
Update notes on badblocks block size to 8192
2021-10-10 09:35:22 -05:00
hogenf
aede45b87d Update notes on badblocks block size to 8192 2021-10-09 17:48:28 +02:00
2 changed files with 29 additions and 9 deletions

View File

@@ -25,7 +25,7 @@ The script calls `sleep` after starting each SMART test, using a duration based
Full SMART information is pulled after each SMART test. All output except for the `sleep` command is echoed to both the screen and log file.
You should periodically monitor the burn-in progress and check for errors, particularly any errors reported by `badblocks`, or these SMART errors:
|ID|Attribute Name|
|---:|---|
| 5|Reallocated_Sector_Ct|
@@ -41,8 +41,9 @@ The script extracts the drive model and serial number and creates a log filename
`badblocks` is invoked with the following options:
* `-b 8192` : Use a block size of 8192
* `-b 8192` : Use a block size of 8192 (override this setting with the `-b` option below)
* `-e 1` : Abort the `badblocks` test immediately if an error is found (override this setting with the `-x` option below)
* `-c 64` : Number of concurrent blocks to check. (override this setting with the `-c` option below, but beware of memory use with high values)
* `-v` : Verbose mode
* `-o` : Write list of bad blocks found (if any) to a file named `burnin-[model]_[serial number].bb`
* `-s` : Show progress
@@ -50,12 +51,14 @@ The script extracts the drive model and serial number and creates a log filename
## Usage
`./disk-burnin.sh [-h] [-e] [-f] [-o <directory>] [-x] <disk>`
`./disk-burnin.sh [-h] [-e] [-b <block_size>] [-c <num_blocks>] [-f] [-o <directory>] [-x] <disk>`
### Options
* `-h`: show help text
* `-e`: show extended help text
* `-b`: block size (default: 8192)
* `-c`: number of concurrent blocks to check (default: 64). Higher values will use more memory.
* `-f`: run a full, destructive test. Disables the default 'dry-run mode'. **ALL DATA ON THE DISK WILL BE LOST!**
* `-o <directory>`: write log files to `<directory>` (default: working directory `$(pwd)`)
* `-x`: perform a full pass of `badblocks`, using the `-e 0` option.

View File

@@ -29,7 +29,7 @@ readonly USAGE=\
$(basename "$0") -- disk burn-in program
SYNOPSIS
$(basename "$0") [-h] [-e] [-f] [-o <directory>] [-x] <disk>
$(basename "$0") [-h] [-b <block_size>] [-c <num_blocks>] [-e] [-f] [-o <directory>] [-x] <disk>
DESCRIPTION
A script to simplify the process of burning-in disks. Only intended for use
@@ -46,6 +46,8 @@ DESCRIPTION
OPTIONS
-h Show help text
-e Show extended help text
-b <block_size> Override block size (defaults to 8192)
-c <num_blocks> Override concurrent number of blocks tested
-f Force script to run in destructive mode
ALL DATA ON THE DISK WILL BE LOST!
-o <directory> Write log files to <directory> (default: $(pwd))
@@ -119,7 +121,7 @@ NOTES
The script extracts the drive model and serial number and forms a log file-
name of the form 'burnin-[model]_[serial number].log'.
badblocks is invoked with a block size of 4096, the -wsv options, and the
badblocks is invoked with a block size of 8192, the -wsv options, and the
-o option to instruct it to write the list of bad blocks found (if any) to
a file named 'burnin-[model]_[serial number].bb'.
@@ -218,13 +220,22 @@ VERSIONS
Changed disk type detection so that we assume all drives are mechanical drives
unless they explicitly return 'Solid State Drive' for Rotational Rate.
Removed datestamp from every line of log output, only emitting it in log headers.
Minor reformatting."
Minor reformatting.
KY, 30 May 2022
Added -b & -c options to control respective badblocks options."
# badblocks default -e option is 1, stop testing if a single error occurs
BB_E_ARG=1
# badblocks default -b option is 1024, but we default to 8192. This allows overriding if desired.
BB_B_ARG=8192
# badblocks default -c option is 64, and this allows overriding
BB_C_ARG=64
# parse options
while getopts ':hefo:x' option; do
while getopts ':hefo:b:c:x' option; do
case "${option}" in
h) echo "${USAGE}"
exit
@@ -237,7 +248,11 @@ while getopts ':hefo:x' option; do
;;
o) LOG_DIR="${OPTARG}"
;;
x) BB_E_ARG=0
b) BB_B_ARG="${OPTARG}"
;;
c) BB_C_ARG="${OPTARG}"
;;
x) BB_E_ARG=0
;;
:) printf 'Missing argument for -%s\n' "${OPTARG}" >&2
echo "${USAGE}" >&2
@@ -262,6 +277,8 @@ fi
################################################################################
readonly BB_E_ARG
readonly BB_B_ARG
readonly BB_C_ARG
# Drive to burn-in
DRIVE="$1"
@@ -559,7 +576,7 @@ run_smart_test() {
run_badblocks_test() {
log_header "Running badblocks test"
if [ "${DISK_TYPE}" != "SSD" ]; then
dry_run_wrapper "badblocks -b 8192 -wsv -e ${BB_E_ARG} -o \"${BB_File}\" \"${DRIVE}\""
dry_run_wrapper "badblocks -b ${BB_B_ARG} -wsv -c ${BB_C_ARG} -e ${BB_E_ARG} -o \"${BB_File}\" \"${DRIVE}\""
else
log_info "SKIPPED: badblocks for ${DISK_TYPE} device"
fi