Linux下判斷磁碟是SSD還是HDD的3種方法

pythontab發表於2018-05-07

判斷linux磁碟是固態硬碟還是機械硬碟的方法

方法一

判斷cat /sys/block/*/queue/rotational的返回值(其中*為你的硬碟裝置名稱,例如sda等等),如果返回1 則表示磁碟可旋轉,那麼就是HDD了;

如果返回0,則表示磁碟不可以旋轉,那麼就是SSD了。

[pythontab@pythontab.com ~]$ cat /sys/block/sda/queue/rotational
0
[pythontab@pythontab.com ~]$ grep ^ /sys/block/*/queue/rotational
/sys/block/ram0/queue/rotational:1
/sys/block/sda/queue/rotational:0
/sys/block/sdb/queue/rotational:0
/sys/block/sdc/queue/rotational:0
/sys/block/sdd/queue/rotational:0

這種方法有個問題,那就是/sys/block/下面不只有硬碟,還可能有別的塊裝置,它們都在干擾你的判斷。


方法二

使用lsblk命令進行判斷,引數-d表示顯示裝置名稱,引數-o表示僅顯示特定的列。

[pythontab@pyhontab.com ~]$ lsblk -d -o name,rota
NAME ROTA
sda     0
sdb     0
sdc     0
sdd     0

這種方法的優勢在於它只列出了你要看的內容,結果比較簡潔明瞭。還是那個規則,ROTA是1的表示可以旋轉,反之則不能旋轉。


方法三

可以透過fdisk命令檢視,引數-l表示列出磁碟詳情。在輸出結果中,以Disk開頭的行表示磁碟簡介,下面是一些詳細引數,我們可以試著在這些引數中尋找一些HDD特有的關鍵字,比如:”heads”(磁頭),”track”(磁軌)和”cylinders”(柱面)。


下面分別是HDD和SSD的輸出結果

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d
[pythontab@pyhontab.com ~]$ sudo fdisk -l
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xad91c214
......

其他方法

可以使用第三方工具判斷,比如smartctl,這些工具的結果展示比較直觀,但是需要單獨安裝。


相關文章