Hard Disk Testing Procedure for Refurbished Drives

Published: at 02:00 PM

TL;DR

Test refurbished drives thoroughly before trusting them with your data. A 48-hour testing procedure catches defects early.

Prerequisites:

  • Linux system (guide uses Linux Mint)
  • External USB-to-SATA adapter or dock
  • 48+ hours of uninterrupted testing time
  • smartmontools, fio, and badblocks installed

What you’ll test:

  • SMART baseline and health status
  • Manufacturer extended self-test (12-24 hours)
  • Destructive write patterns with badblocks
  • Random I/O stress testing with fio

Buying refurbished enterprise drives is cost-effective for homelab storage, but you need to verify they’re actually good before deploying them. This guide covers the full testing procedure I use for every refurbished drive before it goes into production.


Real-World SMART Data Examples

These are actual SMART reports from three 14TB Western Digital Ultrastar drives I tested. Use these as reference for what good drives look like.

Drive 1: WDC WD140EDGZ-11B1PA0 (7200 RPM)

sudo smartctl -a /dev/sdd
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-88-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Ultrastar (He10/12)
Device Model:     WDC WD140EDGZ-11B1PA0
Serial Number:    9MG6JBVJ
LU WWN Device Id: 5 000cca 290c2f7b9
Firmware Version: 85.00A85
User Capacity:    14.000.519.643.136 bytes [14,0 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Dec 11 14:49:56 2025 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   001    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0004   100   100   054    Old_age   Offline      -       0
  3 Spin_Up_Time            0x0007   091   091   001    Pre-fail  Always       -       0 (Average 386)
  4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   001    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000a   100   100   001    Old_age   Always       -       0
  8 Seek_Time_Performance   0x0004   100   100   020    Old_age   Offline      -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       1
 10 Spin_Retry_Count        0x0012   100   100   001    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       7
 22 Helium_Level            0x0023   100   100   025    Pre-fail  Always       -       100
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       7
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       7
194 Temperature_Celsius     0x0002   025   025   000    Old_age   Always       -       49 (Min/Max 21/49)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more

Drive 2: WDC WD140EDGZ-11B2DA2 (7200 RPM)

sudo smartctl -a /dev/sdf
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-88-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Ultrastar (He10/12)
Device Model:     WDC WD140EDGZ-11B2DA2
Serial Number:    2BKXKXWT
LU WWN Device Id: 5 000cca 295f74437
Firmware Version: 85.00A85
User Capacity:    14.000.519.643.136 bytes [14,0 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-4 published, ANSI INCITS 529-2018
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Dec 11 14:49:20 2025 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   001    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0004   100   100   054    Old_age   Offline      -       0
  3 Spin_Up_Time            0x0007   084   084   001    Pre-fail  Always       -       322 (Average 337)
  4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       10
  5 Reallocated_Sector_Ct   0x0033   100   100   001    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000a   100   100   001    Old_age   Always       -       0
  8 Seek_Time_Performance   0x0004   100   100   020    Old_age   Offline      -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       0
 10 Spin_Retry_Count        0x0012   100   100   001    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       10
 22 Helium_Level            0x0023   100   100   025    Pre-fail  Always       -       100
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       10
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       10
194 Temperature_Celsius     0x0002   045   045   000    Old_age   Always       -       36 (Min/Max 22/36)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         0         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more

Drive 3: WDC WD140EDFZ-11A0VA0 (5400 RPM)

sudo smartctl -a /dev/sde
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-88-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Ultrastar (He10/12)
Device Model:     WDC WD140EDFZ-11A0VA0
Serial Number:    7LG8TE8K
LU WWN Device Id: 5 000cca 2dbc3feab
Firmware Version: 81.00A81
User Capacity:    14.000.519.643.136 bytes [14,0 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Dec 11 14:47:40 2025 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   001    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0004   100   100   054    Old_age   Offline      -       0
  3 Spin_Up_Time            0x0007   092   092   001    Pre-fail  Always       -       0 (Average 337)
  4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       5
  5 Reallocated_Sector_Ct   0x0033   100   100   001    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000a   100   100   001    Old_age   Always       -       0
  8 Seek_Time_Performance   0x0004   100   100   020    Old_age   Offline      -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       0
 10 Spin_Retry_Count        0x0012   100   100   001    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       5
 22 Helium_Level            0x0023   100   100   025    Pre-fail  Always       -       100
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       5
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       5
194 Temperature_Celsius     0x0002   042   042   000    Old_age   Always       -       38 (Min/Max 22/38)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         0         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more

Why Test Refurbished Drives

Refurbished drives can fail early if they weren’t properly tested before resale. The seller’s “tested” claim might just mean they checked SMART status for 30 seconds. A thorough 48-hour test catches:

  • Hidden bad sectors that haven’t been reallocated yet
  • Drives that fail under sustained load
  • Temperature issues during extended operation
  • Drives with intermittent errors
⚠️ Test Before Deployment

Never skip testing refurbished drives. The cost of losing data far exceeds the time spent testing. I’ve caught defective drives that passed initial SMART checks but failed under load testing.


Equipment Setup

What You Need

Hardware:

  • External USB-to-SATA adapter or dock (UASP preferred)
  • Linux system (this guide uses Linux Mint)

Software:

  • smartmontools - SMART monitoring and testing
  • badblocks - Sector-level testing
  • fio - I/O stress testing
  • tmux - Terminal multiplexer for parallel testing
ℹ️ Why External Testing

Test drives externally with a USB adapter instead of installing them in your server. This keeps your production system running and makes it easy to disconnect failed drives. Some USB adapters don’t pass SMART commands properly - get one that supports SAT protocol.

Install Required Tools

sudo apt update
sudo apt install smartmontools fio e2fsprogs sysstat tmux -y

Testing Multiple Drives in Parallel

If you’re testing multiple drives, use tmux to run tests in parallel. Each drive takes 48+ hours, so testing 4 drives sequentially would take 8+ days. With tmux, test them all simultaneously.

Start a new tmux session:

tmux new -s disk-testing

Create windows for each drive using Ctrl+b, c. Assign one drive per window (Window 0: /dev/sdb, Window 1: /dev/sdc, etc.).

Switch between windows with Ctrl+b, 0-9. Detach from session with Ctrl+b, d and reattach later:

tmux attach -t disk-testing

Run the same test procedure in each window. Tests continue running even after detaching or logging out.

⚠️ Important: Replace sdX in All Commands

When testing multiple drives in parallel, replace sdX with the actual device letter (sdb, sdc, sdd) in every command. All output filenames include the device name to prevent files from overwriting each other.


Phase 1: Initial SMART Baseline

Identify the Drive

Connect the drive via USB adapter and identify it:

lsblk

Or use fdisk:

sudo fdisk -l

Find your drive (likely /dev/sdb, /dev/sdc, etc.). For this guide I’ll use /dev/sdX - replace X with your actual device letter.

Critical: Verify Device Name

Double-check you have the correct device before running any tests. Testing the wrong drive will erase your data. Cross-reference by capacity, model, and serial number.

Get Baseline SMART Data

View all SMART information:

sudo smartctl -a /dev/sdX

Save baseline for later comparison. Use unique filename per drive:

sudo smartctl -a /dev/sdX > ~/disk_baseline_sdX_$(date +%Y%m%d).txt

Check Critical Values

Quick health check:

sudo smartctl -H /dev/sdX

Verify SMART is enabled:

sudo smartctl -i /dev/sdX | grep "SMART support"

Expected for good refurbished drive:

  • SMART overall-health: PASSED
  • Reallocated_Sector_Ct (ID 5): 0
  • Current_Pending_Sector (ID 197): 0
  • Offline_Uncorrectable (ID 198): 0
  • UDMA_CRC_Error_Count (ID 199): 0
  • Power_On_Hours (ID 9): <5000 hours for “lightly used”
ℹ️ Understanding Power-On Hours

Refurbished drives typically have 1000-5000 power-on hours. Enterprise drives are rated for 2.5 million hours MTBF, so 5000 hours (~208 days) is barely broken in. Focus on error counts, not age.


Phase 2: SMART Self-Tests

Run three manufacturer self-tests in sequence: conveyance (shipping damage), short (quick defects), then extended (full surface scan).

Conveyance Test (1-2 minutes)

Detects damage from shipping and handling. Launch the test:

sudo smartctl -t conveyance /dev/sdX

Check result after 2 minutes:

sudo smartctl -a /dev/sdX | grep -A 10 "Self-test log"

Expected: Completed without error

Short Test (2 minutes)

Quick electrical and mechanical verification. Launch the test:

sudo smartctl -t short /dev/sdX

Check result after 2 minutes:

sudo smartctl -a /dev/sdX | grep -A 10 "Self-test log"

Expected: Completed without error

Extended Test (12-24 hours)

Full surface scan of the entire disk. Launch the test:

sudo smartctl -t long /dev/sdX

Verify test started:

sudo smartctl -a /dev/sdX | grep "Self-test execution"

Expected output:

Self-test execution status: (249) Self-test routine in progress...
                                        90% of test remaining.

Monitor Progress

Check progress manually:

sudo smartctl -a /dev/sdX | grep -A 5 "Self-test execution"

Or monitor automatically (updates every 30 minutes):

watch -n 1800 'sudo smartctl -a /dev/sdX | grep -A 3 "Self-test execution"'

Review Results

After 12-24 hours, check the test log:

sudo smartctl -a /dev/sdX | grep -A 10 "SMART Self-test log"

Expected result:

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%        XX         -

Red flags:

  • “Completed: read failure” = Return drive immediately
  • “Interrupted” = Test was stopped, rerun it
  • LBA_of_first_error has value = Bad sectors detected

Phase 3: SMART Attribute Analysis

View all SMART attributes:

sudo smartctl -a /dev/sdX | grep -E "^  [0-9]+"

Critical Attributes

AttributeIDGood ValueFail Threshold
Reallocated_Sector_Ct50>10
Reported_Uncorrect1870>0
Current_Pending_Sector1970>0
Offline_Uncorrectable1980>0
UDMA_CRC_Error_Count1990>5
Power_On_Hours9<5000>10000
Temperature_Celsius19430-45°C idle>50°C idle

Temperature Check

Check current temperature:

sudo smartctl -a /dev/sdX | grep -i temperature

Drives should idle at 30-45°C. Above 50°C at idle indicates potential cooling issues.


Phase 4: Destructive Write Testing

Data Will Be Destroyed

This phase completely erases the drive. Only proceed if the drive is blank or you’ve backed up any data.

Badblocks tests at the sector level for physical defects, while FIO stress-tests I/O performance under realistic workloads. Both are needed because they catch different types of failures.

Partition Setup

Create GPT partition table:

sudo parted /dev/sdX mklabel gpt

Create single partition spanning full disk:

sudo parted /dev/sdX mkpart primary 0% 100%

Badblocks Test

Badblocks writes patterns to every sector and verifies them. Run this first before creating the filesystem.

Determine optimal block size:

sudo blockdev --getbsz /dev/sdX1

Run badblocks with the block size (typically 4096). Use unique filename per drive:

sudo badblocks -wsv -b 4096 -o ~/badblocks_errors_sdX.txt /dev/sdX1

Replace both instances of sdX with your actual device (e.g., sdb, sdc, sdd).

Options:

  • -w = Destructive write test
  • -s = Show progress
  • -v = Verbose output
  • -b = Block size (use value from blockdev)
  • -o = Save errors to file

This takes 12-24 hours for large drives. Expected result: 0 bad blocks found.

Monitor Temperature During Tests

Long tests stress the drive and increase temperature. Log temperatures to track if they exceeded safe thresholds during the test.

In a separate tmux window, run this to log temps every 5 minutes for up to 24 hours:

timeout 24h bash -c 'while true; do echo "$(date) - $(sudo smartctl -a /dev/sdX | grep Temperature_Celsius)" >> ~/temp_log_sdX.txt; sleep 300; done'

For larger drives that take longer than 24 hours, increase the timeout (e.g., timeout 30h).

Replace sdX with your device letter. After the test completes, check for temperatures that exceeded 55°C:

grep -E '5[5-9]|[6-9][0-9]' ~/temp_log_sdX.txt

View max temperature reached:

cat ~/temp_log_sdX.txt

Drives under load should stay below 55°C. If temps exceeded 60°C, the drive may need better cooling or could indicate a hardware problem.

If you see bad blocks:

  • Note the exact error count and LBA addresses
  • Check if SMART shows reallocated sectors increasing
  • Return drive for RMA with error log

Format and Mount

After badblocks completes, format the partition:

sudo mkfs.ext4 -F /dev/sdX1

For single disk testing:

sudo mkdir -p /mnt/test_disk
sudo mount /dev/sdX1 /mnt/test_disk

For parallel testing (multiple disks):

Create unique mount points per drive:

sudo mkdir -p /mnt/test_disk_sdX
sudo mount /dev/sdX1 /mnt/test_disk_sdX

Example for 3 drives:

sudo mkdir -p /mnt/test_disk_sdb /mnt/test_disk_sdc /mnt/test_disk_sdd
sudo mount /dev/sdb1 /mnt/test_disk_sdb
sudo mount /dev/sdc1 /mnt/test_disk_sdc
sudo mount /dev/sdd1 /mnt/test_disk_sdd

FIO Stress Test

Change to the mounted directory:

cd /mnt/test_disk_sdX

Run 6-hour mixed random read/write stress test:

sudo fio --name=stress_test \
  --filename=testfile \
  --size=50G \
  --bs=4k \
  --ioengine=libaio \
  --iodepth=32 \
  --numjobs=4 \
  --rw=randrw \
  --rwmixread=70 \
  --rwmixwrite=30 \
  --direct=1 \
  --runtime=21600 \
  --group_reporting \
  --output=~/fio_results_sdX_$(date +%Y%m%d).txt

Replace sdX with your device letter (e.g., sdb, sdc, sdd).

Watch for I/O errors in kernel log:

watch 'dmesg | tail -20'

Check I/O statistics:

iostat -x 5 /dev/sdX

Expected result: Test completes with 0 I/O errors and consistent latencies.


Phase 5: Final Validation

Post-Test SMART Check

Capture final SMART state. Use unique filename per drive:

sudo smartctl -a /dev/sdX > ~/disk_final_sdX_$(date +%Y%m%d).txt

Compare critical attributes to baseline:

diff <(grep -E "^  (5|197|198) " ~/disk_baseline_sdX_*.txt) \
     <(grep -E "^  (5|197|198) " ~/disk_final_sdX_*.txt)

No differences should appear in critical attributes. Any increase in reallocated sectors or pending sectors = failed drive.

Health Summary

Quick health check:

sudo smartctl -H /dev/sdX

Overall status:

sudo smartctl -a /dev/sdX | grep "SMART overall-health"

Must show: PASSED


Pass/Fail Criteria

PASS - Drive is Safe to Deploy

✅ Extended self-test: Completed without error ✅ Badblocks: 0 bad blocks found ✅ FIO stress: 0 I/O errors ✅ SMART health: PASSED ✅ Reallocated sectors: 0 (or no increase from baseline) ✅ Pending sectors: 0 ✅ CRC errors: 0 ✅ Temperature: <50°C idle, <55°C under load

FAIL - Return for RMA

❌ Self-test: Completed with errors or read failure ❌ Badblocks: Any bad blocks found ❌ FIO: I/O errors or hung processes ❌ SMART: FAILING status on any attribute ❌ Reallocated sectors: >10 on “new” drive ❌ Pending sectors: >0 ❌ CRC errors: >5 ❌ Temperature: >50°C at idle

⚠️ Don't Risk It

If a drive fails any test, return it. Don’t rationalize that “a few bad sectors are okay” or “it’ll probably be fine.”


Cleanup and Documentation

Unmount and Wipe

Unmount test partition(s):

Single disk:

sudo umount /mnt/test_disk

Multiple disks:

sudo umount /mnt/test_disk_sdb /mnt/test_disk_sdc /mnt/test_disk_sdd

Wipe partition table (optional - deployment system will do this):

sudo parted /dev/sdX mklabel gpt

Document Results

Create test report per drive:

REPORT_FILE=~/drive_test_report_sdX_$(date +%Y%m%d).txt
cat ~/disk_baseline_sdX_*.txt ~/disk_final_sdX_*.txt ~/fio_results_sdX_*.txt ~/badblocks_errors_sdX.txt ~/temp_log_sdX.txt > $REPORT_FILE

Add summary:

echo "=== TEST SUMMARY ===" >> $REPORT_FILE
sudo smartctl -a /dev/sdX | head -50 >> $REPORT_FILE

Replace sdX with your actual device (e.g., sdb, sdc, sdd).

Store this report with the drive’s serial number for warranty reference.


Timeline

PhaseDurationCan Run Concurrent?
Initial SMART baseline30 minNo
Conveyance test2 minNo
Short self-test2 minNo
Extended self-test12-24 hrsNo (must complete first)
SMART analysis30 minNo
Partition setup5 minNo
Badblocks write test12-24 hrsNo
Format and mount5 minNo
FIO stress test6 hrsNo
Final validation1 hrNo
Total48-72 hrs

Run all tests sequentially. Each test needs to complete before starting the next.

💡 Testing Multiple Drives

Use tmux to test multiple drives in parallel. Testing 4 drives simultaneously takes 48-72 hours total instead of 8+ days sequentially.


Troubleshooting

Drive Not Detected

Check USB connection:

lsusb
dmesg | tail -20

Try different USB adapter - some don’t pass SMART commands.

SMART Not Available

Some USB adapters don’t support SMART passthrough. Try SAT protocol:

sudo smartctl -a /dev/sdX -d sat

Or try specific adapter protocols:

sudo smartctl -a /dev/sdX -d usbjmicron
sudo smartctl -a /dev/sdX -d usbsunplus

If SMART still doesn’t work, get a better USB adapter that supports UASP and SAT.

Test Hangs

If badblocks or fio hangs:

  • Check dmesg for USB/SATA errors
  • Try different USB port (USB 3.0 vs 2.0)
  • Drive might be failing - document behavior and RMA

Next Steps

Once drives pass all tests:

  1. Label drive with model, serial, and test date
  2. Store in anti-static bag until deployment
  3. Keep test reports for warranty claims
  4. Deploy in your storage array (UnRAID, ZFS, etc.)
  5. Monitor SMART monthly after deployment

Testing takes 48+ hours but catches defective drives before they’re deployed with your data.

RO

Ronaldo

BSc Mathematics | MSc Information Security

  • Technical problem-solver with unusually broad capabilities & interests
  • I figure things out and get things done

Comments

Table of Contents