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.
Related: How to check disk health in Linux
Related: How to show disk information in Linux
Steps to check disk temperature in Linux:
- 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.
- 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.
- 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.
- 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.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
