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