Disk temperature shows whether a drive is staying inside a normal thermal range or being pushed by poor airflow, enclosure heat, or sustained I/O. Reading it before the disk starts throttling, logging media errors, or aging early makes it easier to correct cooling problems while the storage is still behaving normally.

Most physical Linux disks expose temperature through S.M.A.R.T. data that the drive firmware keeps on the whole-disk device. smartctl reads that data directly from paths such as /dev/sda, and SATA or ATA drives usually report the value under attributes such as Temperature_Celsius or Airflow_Temperature_Cel rather than as a separate high-level sensor. NVMe devices expose the same thermal state through smartctl too, but they often present it as a direct Temperature: line in the SMART log instead of an attribute row.

Reading S.M.A.R.T. data usually requires sudo, and the check only works when the Linux system can talk to the physical drive or to a controller that passes that data through. Guest-visible virtual disks, cloud volumes, some RAID mappings, and some USB bridge chips often hide the temperature sensor from the guest, so the check may need to run on the host, hypervisor, controller, or enclosure instead.

Step-by-step video guide:

Steps to check disk temperature in Linux:

  1. Identify the whole-disk device first so the temperature query targets the drive itself instead of a partition.
    $ lsblk -d -o NAME,SIZE,MODEL,TRAN
    NAME      SIZE MODEL                 TRAN
    sda       1.8T ST2000DM008-2FR102   sata
    sdb     931.5G Samsung SSD 870 EVO  sata
    nvme0n1 476.9G Samsung SSD 980      nvme

    Use a whole-disk path such as /dev/sda, /dev/sdb, or /dev/nvme0n1 in the next command. Do not use a partition path such as /dev/sda1 because the temperature sensor belongs to the disk, not to one filesystem on it.

  2. Read the drive's S.M.A.R.T. attributes and look for the temperature row.
    $ sudo smartctl -A /dev/sda
    ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
    194 Temperature_Celsius     69    58   000    Old_age   Always       -       31

    This SATA example keeps the report focused on the attribute table. Many drives use the rightmost raw field as the current temperature in Celsius. The attribute label varies by model, so some disks show Airflow_Temperature_Cel or another temperature-related name instead of Temperature_Celsius.

  3. Treat a detection failure as a storage-path limitation instead of as proof that the disk is cool.
    $ sudo smartctl -A /dev/vda
    /dev/vda: Unable to detect device type
    Please specify device type with the -d option.
    
    Use smartctl -h to get a usage summary

    Current Ubuntu 24.04 verification for this update reproduced this result on virtio guest disks. The same class of limitation is common with cloud volumes, RAID mappings, and some USB enclosures. When the drive sits behind a pass-through capable bridge or controller, run smartctl –scan-open to discover a usable device type such as -d sat and rerun the read against the whole-disk path.

  4. Compare the reported value with the drive's normal operating range and re-check after cooling or workload changes.

    Many HDDs and SSDs stay in a comfortable range below about 50°C. Sustained readings near or above 60°C deserve immediate attention, but the vendor's published thermal range is the better limit when it is available because throttling and warning thresholds differ by model.