Monitoring hard drive temperature reduces the risk of overheating, unexpected shutdowns, and permanent data loss. Spinning disks and SSDs both degrade faster when exposed to sustained high temperatures, especially under constant workload or in poorly ventilated cases.

Most modern drives expose temperature data through S.M.A.R.T. sensors. Tools such as smartctl (from smartmontools) read these values directly from the disk firmware and present them as temperature attributes for quick checks during troubleshooting or performance testing.

On Linux, temperature checks usually require elevated privileges and a correct device path like /dev/sda. Some virtual disks or passthrough devices may not expose temperature information, and certain NVMe or USB enclosures require different utilities, so behavior can differ between systems.

Step-by-step video guide:

Steps to check hard drive temperature:

  1. Open a terminal on the Linux system.
  2. List available disk devices to identify the correct drive.
    $ lsblk -d -o NAME,TYPE,SIZE | grep -E 'disk|nvme'
    nbd0  disk     0B
    nbd1  disk     0B
    nbd2  disk     0B
    nbd3  disk     0B
    nbd4  disk     0B
    nbd5  disk     0B
    nbd6  disk     0B
    nbd7  disk     0B
    vda   disk   1.8T
    vdb   disk 606.5M
    nbd8  disk     0B
    nbd9  disk     0B
    nbd10 disk     0B
    nbd11 disk     0B
    nbd12 disk     0B
    nbd13 disk     0B
    nbd14 disk     0B
    nbd15 disk     0B

    Device names like /dev/vda or /dev/vdb correspond to the disks listed by lsblk.

  3. Query the disk for temperature attributes using smartctl.
    $ sudo smartctl -a /dev/vdb
    smartctl 7.4 2023-08-01 r5530 [aarch64-linux-6.12.54-linuxkit] (local build)
    Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
    
    /dev/vdb: Unable to detect device type
    Please specify device type with the -d option.
    
    Use smartctl -h to get a usage summary

    If smartctl cannot identify the disk type, use the -d option to specify the device protocol.

  4. Retry with an explicit device type for passthrough or virtual disks.
    $ sudo smartctl -a -d scsi -T permissive /dev/vdb
    smartctl 7.4 2023-08-01 r5530 [aarch64-linux-6.12.54-linuxkit] (local build)
    Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
    
    Standard Inquiry (36 bytes) failed [Inappropriate ioctl for device]
    Retrying with a 64 byte Standard Inquiry
    Standard Inquiry (64 bytes) failed [Inappropriate ioctl for device]
    
    === START OF READ SMART DATA SECTION ===
    Request Sense failed, [Inappropriate ioctl for device]
    Read defect list: asked for grown list but didn't get it
    Error Counter logging not supported
    
    Device does not support Self Test logging

    Look for temperature fields such as Temperature_Celsius or Current Drive Temperature; if the drive reports none, the controller may not expose sensor data.

  5. Compare the reported temperatures to a safe operating range and investigate cooling issues if limits are exceeded.

    A typical safe range for most drives is roughly 30°C to 50°C, while sustained readings above 60°C can significantly shorten drive lifespan.