Check-out our new look and give us some feedback!
Reading Time: 5 minutes

What is SmartCTL?

Every modern hard drive has an option to monitor its current status and health via SMART attributes. SMART stands for Self-Monitoring, Analysis, and Reporting Technology. The SMART test can be performed on your HDD to detect any potential problems with the hardware itself. Tests such as these are run using SmartCTL. According to the Linux man page, SmartCTL is a command-line utility designed to perform SMART tasks. Examples of these tasks would be printing error logs or enabling and disabling automatic SMART testing. 

So without further ado, let’s dig into the SmartCTL command. 

Prerequisites

First, let’s check what we need to run the SmartCTL tool and its command on our server.

*In this article, we used CentOS7, but the installation guide will show you how you can install smartctl on Ubuntu 18.04 as well.

Installation

CentOS 7

The installation of Smartctl software is pretty straightforward. Let’s review the CentOS 7 installation first.

Step 1. Install

yum install smartmontools

Write the above command into your terminal, yum will check dependencies and available packages. When the installation is complete, you will be prompted with the questions, “is it okay to continue the installation?” Just type “y” and let the installation complete.

============================================================================
 Package Arch Version Repository Size
============================================================================
Installing:
 smartmontools x86_64 1:7.0-2.el7 base 546 k
Installing for dependencies:
 mailx x86_64 12.5-19.el7 base 245 k

Transaction Summary
============================================================================
Install 1 Package (+1 Dependent package)

Total download size: 791 k
Installed size: 2.4 M
Is this ok [y/d/N]: y

Installed:
  smartmontools.x86_64 1:7.0-2.el7

Dependency Installed:
  mailx.x86_64 0:12.5-19.el7

Complete!

Step 2. Enable smartctl

Now that smartctl is installed, let’s start it and make sure that it always starts when the server is rebooted. We can accomplish this by running the following commands

systemctl enable smartd

This command will make sure that the smartctl daemon is up and running at every system startup. No output will be displayed when you use this command. 

systemctl start smartd

This command will start smartctl, and this one also will not provide any output. You can use the “status” flag instead of the start flag to see if the smartctl service is running or not. 

Ubuntu 18.04

The installation of smartctl on Ubuntu is the same as it is on CentOS. There is only one minor detail that is different. The first command that we should run on a Ubuntu OS is this.

Step 1. Install

apt-get install smartmontools

The rest of the process to enable smartctl and the user commands are the same as they are on CentOS. 

Smartctl should now be installed. Next, let’s go through some basic usage examples where smartctl comes in handy. 

Usage

As stated above, smartctl can perform various hard drive tests. We can analyze a faulty drive or perform an ATA/SCSI test based on our HDD type. Generally, tests like these are divided into two types. The ATA/SCSI test and the ATA specified test. 

ATA/SCSI tests are divided into two test types: short and long tests. The ATA specified tests are divided into two types of tests: a Conveyance Test and Select Tests. Before running any of these tests, we must make sure that SMART is enabled on our HDD. Here is a command with which we can check to ensure it is enabled. 

smartctl -i /dev/vda

Keep in mind that the vda drive type is only used as an example. That is the HDD label on the test server that I used for this article. It will be different in your case, most likely. The easiest way to find out your HDD label is to run the df -h command. 

The output of the above command will look like this.

smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1127.19.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor: QEMU
Product: Vz HARDDISK0
Revision: 2.5+
Compliance: SPC-3
User Capacity: 42,949,672,960 bytes [42.9 GB]
Logical block size: 512 bytes
LU is thin provisioned, LBPRZ=0
Serial number: e603b97ac34343e582bb
Device type: disk
Local Time is: Tue Oct 6 15:37:02 2020 EEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

The last two lines are the most important as they tell you if the hard drive is capable of running the SMART test. When you see that SMART support is available, but not enabled, you can run this command to enable it.

smartctl -s on -o on -S on /dev/vda

The output of the command above will look like this.

=== START OF ENABLE/DISABLE COMMANDS SECTION ===  
SMART Enabled.  
SMART Attribute Autosave Enabled.  
SMART Automatic Offline Testing Enabled every four hours.

Now that we are sure SMART is available and enabled on our device, let’s check some examples of smartctl commands. We will review how to use them and their purpose. 

Example Commands

We want to point out one thing before we check some common examples of smartctl commands. Each test that you can perform can run in two modes: a background and a foreground mode. When you run them in the background, priority on the test is low, and all the operations on the server will generally run as expected.

If the HDD suddenly gets busy and I/O goes sky-high, the test will be paused until things return to normal. The Foreground mode will not lower the tests' priority, and no matter what happens, tests will continue to run. The foreground mode is only recommended for use when HDD is not being used by anything else. 

Now that we cleared that out of the way, let’s check commands. 

Disable smartctl

If you want to disable SMART capabilities on your hard drive, you can use this:

smartctl -s off /dev/vda

Check Drive Health

To display the overall health of your hard drive, you can use this one:

smartctl -H /dev/vda

Our output will look like this:

smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1127.19.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK

Verify Test Mode

If you want to make sure that drive is capable of running tests on its own, you can use this one:

smartctl -H /dev/vda

Run Long/Short Test

When you want to run a short or long test on your HDD, you can use these two commands:

smartctl –test=short /dev/vda
smartctl –test=long /dev/vda

Background Testing

For any of the tests to run in the background, you can use -t flag:

smartctl -t short /dev/vda
smartctl -t long /dev/vda
smartctl -t conveyance /dev/vda
smartctl -t select /dev/vda

Foreground Testing

For the Foreground mode, the "-C" flag has to be added. Remember, run this only if the hard drive is not used by anything else!

smartctl -t short -C /dev/vda
smartctl -t long -C /dev/vda
smartctl -t conveyance -C /dev/vda
smartctl -t select -C /dev/vda

View Full Results

Let’s check how we can view the results of our tests. 

smartctl -a /dev/vda

Here is an example of the output that you will get, just a part of it because the whole output will be quite lengthy. 

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

View Limited Results

If you need a shorter output that will display just the results of the test, you can use this command.

smartctl -l selftest /dev/vda

When you are aware of your hard drive's errors, and you want to display them, use this command.

smartctl -l error /dev/sdb

Conclusion

In the end, we hope that this article served as an introduction to this useful utility and that you will explore it on your own. In this article, we covered the very basics of the smartctl commands. If further information is needed, the smartctl man page can provide additional knowledge about this utility and all the available flags. We can type man smartd into our terminal to open the man pages for smartctl. 

Want More Information?

We pride ourselves on being The Most Helpful Humans In Hosting™!

Our experienced Hosting Solutions advisors are always available to show you how you can take advantage of these techniques today!

We are available 24 hours a day, 7 days a week 365 days a year, via our ticketing systems at support@liquidweb.com, by phone (at 800-580-4986) or via a LiveChat or whatever method you prefer.

About the Author: Dean Conally

I am Linux enthusiast and console gamer, dog lover, and amateur photograph. I've been working at Liquid Web for a bit less than two years. Always looking for knowledge to expand my expertise, thus tackling new technologies and solutions one day at the time.

Latest Articles

How to Edit Your DNS Hosts File

Read Article

How to Edit Your DNS Hosts File

Read Article

Microsoft Exchange Server Security Update

Read Article

How to Monitor Your Server in WHM

Read Article

How to Monitor Your Server in WHM

Read Article