You can use the following guide to check HDD, SSD, and NVMe drives. Either by checking the read/write speed of the device compared to the average or by investigating its SMART attributes. The results of the tests can be used to determine if a disk has to be replaced.

To recognize the disks in your system you can use the lsblk command, depending on your disk layout it will look something like this:


root@ws-example:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0  61.9M  1 loop /snap/core20/1405
loop1    7:1    0  79.9M  1 loop /snap/lxd/22923
loop3    7:3    0  63.5M  1 loop /snap/core20/1891
loop4    7:4    0 111.9M  1 loop /snap/lxd/24322
loop5    7:5    0  53.3M  1 loop /snap/snapd/19361
sda      8:0    0 447.1G  0 disk
├─sda1   8:1    0     1M  0 part
└─sda2   8:2    0 447.1G  0 part /
sdb      8:16   0     7T  0 disk
sdc      8:32   0 447.1G  0 disk
sdd      8:48   0 447.1G  0 disk

In the above layout, we see that there are 4 drives available: sda, sdb, sdc & sdd.

Disk speed test

To benchmark your disk speed you can use a tool called hdparm. You can use the following command to install this tool:

Ubuntu / Debian apt-get install -y hdparm
CentOS yum install -y hdparm
FreeBSD pkg install -y hdparm

To use hdparm you can use this command, adjusted for your drive. For this example, we will use our 480GB sda disk.

hdparm -t /dev/sda

the output of this will look something like:

root@ws-example:~# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1342 MB in  3.00 seconds = 446.82 MB/sec

Note:

For more accurate results we request the following:

  • For the best results, the test needs to be performed on an inactive system without active/running applications. It would be best practice to reboot the system en then perform the tests, this will ensure that a minimal amount of system resources are in use.
  • Run the hdparm command 2 or 3 times and take the average of those test results.

The speeds should be around these ranges:

Type Min Max
HDD 150 MB/sec 250 MB/sec
SSD 400 MB/sec 500 MB/sec
Enterprise SSD 500 MB/sec 550 MB/sec
NVMe 2000 MB/sec 3500 MB/sec

The speeds can be different for your specific configuration. Please contact our support department to check if the shown speed is normal for your configuration. It would be helpful if you send them an output of the test results.

Disk status (SSD/HDD)

To check the disk status you can make use of a tool called smartmontools this will show the current S.M.A.R.T (Self-Monitoring, Analysis, and Reporting Technology) data.

To install smartmontools, you can use the following commands:

Ubuntu / Debian apt-get install -y smartmontools
CentOS yum install -y smartmontools
FreeBSD pkg install -y smartmontools

For these examples we will use drive /dev/sdb, this device contains some errors.

You can see some basic information about the drive when you use the command:

smartctl -i /dev/sdb

This will output something like this:

root@ws-example:~# smartctl -i /dev/sdb
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-73-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Micron 5100 Pro / 52x0 / 5300 SSDs
Device Model:     Micron_5300_MTFDDAK7T6TDS
Serial Number:    2146329F2400
LU WWN Device Id: 5 00a075 1329f2400
Firmware Version: D3MU801
User Capacity:    7,681,501,126,656 bytes [7.68 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-4 (minor revision not indicated)
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Jun  7 14:59:53 2023 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

If SMART support is available but disabled, you can use the following command to enable support:

smartctl -s on /dev/sdb

Run a short test with the following command:

smartctl -t short /dev/sdb

This will output the following:


root@ws-example:~# smartctl -t short /dev/sdb
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-73-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Wed Jun  7 15:11:19 2023 CEST
Use smartctl -X to abort test.

This test will take about 1 to 2 minutes to complete. After it is completed you can read out its output with:

smartctl -a /dev/sdb

We prefer the following to check for important data:

smartctl -a /dev/sdb | grep -E '^SMART overall-health|Reallocated_Sector_Ct|Current_Pending_Sector|Reported_Uncorrect' | awk '{print $0,"\n"}'

This will look for the following values:

Error Description expected status
SMART overall-health This is the general health of the disk according to the standard of the producer. PASSED
Reallocated_Sector_Ct The number of sectors that were already reallocated on the disks. 0
Current_Pending_Sector The number of sectors awaiting reallocation. 0
Reported_Uncorrect The number of uncorrectable errors reported to the SMART controller of the disk. below 50

If any of the above values is different from the expected status, please contact the support department for a possible disk replacement.

The above will not show ATA errors, to check for ATA errors you can use the following command:

smartctl -a /dev/sdb | grep ATA

This will output:

Output:
root@ws-example:~# smartctl -a /dev/sdb | grep ATA
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
=== START OF READ SMART DATA SECTION ===
ATA Error Count: 3