Linux區(qū)分SSD和機(jī)械硬盤的方法總結(jié)
一、lsblk 命令簡介
lsblk
(list block devices)是 Linux 系統(tǒng)中一個(gè)功能強(qiáng)大的命令行工具,用于列出所有可用的塊設(shè)備信息。塊設(shè)備是指那些以固定大小塊為單位進(jìn)行數(shù)據(jù)讀寫的存儲(chǔ)設(shè)備,如硬盤、SSD、USB 驅(qū)動(dòng)器和光盤等。
基本用法
最簡單的 lsblk
命令不帶任何參數(shù),它會(huì)以樹狀結(jié)構(gòu)顯示所有塊設(shè)備及其分區(qū):
lsblk
典型輸出如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 237.5G 0 part / └─sda3 8:3 0 488M 0 part [SWAP] nvme0n1 259:0 0 465.8G 0 disk ├─nvme0n1p1 259:1 0 100M 0 part └─nvme0n1p2 259:2 0 465.7G 0 part /data
這個(gè)輸出顯示了設(shè)備名稱、主次設(shè)備號(hào)、是否可移動(dòng)、大小、只讀標(biāo)志、類型和掛載點(diǎn)等信息。
二、識(shí)別磁盤類型的關(guān)鍵參數(shù):ROTA
要區(qū)分 SSD 和機(jī)械硬盤,我們需要關(guān)注 ROTA
這個(gè)關(guān)鍵參數(shù)。ROTA
是 “rotational” 的縮寫,表示設(shè)備是否具有旋轉(zhuǎn)部件。
查詢 ROTA 參數(shù)
使用以下命令可以專門顯示設(shè)備的旋轉(zhuǎn)特性:
lsblk -d --output NAME,ROTA
參數(shù)說明:
-d
:僅顯示磁盤設(shè)備,不顯示分區(qū)--output NAME,ROTA
:指定輸出包含 NAME(設(shè)備名)和 ROTA(旋轉(zhuǎn)標(biāo)志)列
示例輸出:
NAME ROTA sda 0 sdb 1 nvme0n1 0
ROTA 值的含義
ROTA=1
:表示設(shè)備是旋轉(zhuǎn)設(shè)備,即傳統(tǒng)的機(jī)械硬盤(HDD)。這類設(shè)備通過旋轉(zhuǎn)的盤片和移動(dòng)的磁頭來讀寫數(shù)據(jù)。ROTA=0
:表示設(shè)備是非旋轉(zhuǎn)設(shè)備,通常是固態(tài)硬盤(SSD)。這類設(shè)備使用閃存芯片存儲(chǔ)數(shù)據(jù),沒有機(jī)械運(yùn)動(dòng)部件。- 對(duì)于 NVMe 設(shè)備,
ROTA
值總是 0,因?yàn)樗鼈儽举|(zhì)上都是固態(tài)存儲(chǔ)。
三、為什么 ROTA 參數(shù)能區(qū)分磁盤類型
理解 ROTA
參數(shù)背后的原理有助于我們更深入地認(rèn)識(shí)存儲(chǔ)設(shè)備。
機(jī)械硬盤(HDD)的工作原理
傳統(tǒng)機(jī)械硬盤由以下幾個(gè)關(guān)鍵部件組成:
- 旋轉(zhuǎn)的盤片(通常每分鐘 5400 或 7200 轉(zhuǎn))
- 可移動(dòng)的讀寫磁頭
- 控制磁頭定位的步進(jìn)電機(jī)
當(dāng)系統(tǒng)需要訪問數(shù)據(jù)時(shí),磁頭必須移動(dòng)到正確的磁道位置,然后等待盤片旋轉(zhuǎn)到目標(biāo)扇區(qū)。這種機(jī)械運(yùn)動(dòng)導(dǎo)致了較高的訪問延遲(通常在毫秒級(jí))。
固態(tài)硬盤(SSD)的工作原理
SSD 使用 NAND 閃存芯片存儲(chǔ)數(shù)據(jù),沒有機(jī)械運(yùn)動(dòng)部件:
- 數(shù)據(jù)存儲(chǔ)在由浮柵晶體管組成的存儲(chǔ)單元中
- 通過電子信號(hào)直接訪問數(shù)據(jù)
- 訪問時(shí)間通常在微秒級(jí),比 HDD 快幾個(gè)數(shù)量級(jí)
由于 SSD 完全沒有旋轉(zhuǎn)部件,因此 ROTA
標(biāo)志被設(shè)置為 0。
四、其他識(shí)別磁盤類型的方法
雖然 lsblk
的 ROTA
參數(shù)是最直接的判斷方法,但 Linux 系統(tǒng)還提供了其他幾種識(shí)別磁盤類型的途徑。
1. 查看 /sys/block 信息
每個(gè)塊設(shè)備在 /sys/block
目錄下都有對(duì)應(yīng)的子目錄,其中包含設(shè)備的詳細(xì)信息:
cat /sys/block/sda/queue/rotational
這個(gè)文件的內(nèi)容就是 ROTA
值(0 或 1)。
2. 使用 smartctl 工具
smartctl
是 SMART(Self-Monitoring, Analysis and Reporting Technology)工具的一部分,可以提供更詳細(xì)的磁盤信息:
sudo smartctl -i /dev/sda | grep "Rotation Rate"
對(duì)于 SSD,輸出通常是 “Solid State Device” 或 “Rotation Rate: Solid State Device”;對(duì)于 HDD,則會(huì)顯示具體的轉(zhuǎn)速(如 “Rotation Rate: 7200 rpm”)。
3. 觀察設(shè)備命名約定
雖然不完全可靠,但設(shè)備名稱有時(shí)也能提供線索:
dev/sdX
:可能是 SATA 接口的 HDD 或 SSD/dev/nvmeXnY
:肯定是 NVMe SSD/dev/mmcblkX
:通常是 SD 卡或 eMMC 存儲(chǔ)
五、磁盤類型識(shí)別的重要性
了解存儲(chǔ)設(shè)備的類型對(duì)系統(tǒng)管理和性能優(yōu)化至關(guān)重要:
1. 性能調(diào)優(yōu)
SSD 和 HDD 需要不同的優(yōu)化策略:
- SSD:受益于 TRIM 支持、適當(dāng)?shù)恼{(diào)度算法(如
none
或kyber
)和對(duì)齊的分區(qū) - HDD:需要針對(duì)順序 I/O 進(jìn)行優(yōu)化,可能受益于更復(fù)雜的調(diào)度算法(如
bfq
)
2. 存儲(chǔ)分層
在混合存儲(chǔ)環(huán)境中,識(shí)別設(shè)備類型可以幫助實(shí)現(xiàn)有效的存儲(chǔ)分層:
- 將頻繁訪問的數(shù)據(jù)放在 SSD 上
- 將大容量、不常訪問的數(shù)據(jù)存儲(chǔ)在 HDD 上
3. 故障預(yù)測
HDD 和 SSD 有不同的故障模式和監(jiān)控指標(biāo):
- HDD:關(guān)注重分配扇區(qū)、尋道錯(cuò)誤率和溫度
- SSD:關(guān)注磨損程度、剩余壽命和寫入放大
六、實(shí)際應(yīng)用案例
案例 1:自動(dòng)化腳本識(shí)別磁盤類型
以下是一個(gè) Bash 腳本示例,用于自動(dòng)識(shí)別系統(tǒng)中的 SSD 和 HDD:
#!/bin/bash echo "檢測系統(tǒng)中的存儲(chǔ)設(shè)備類型:" echo "--------------------------------" lsblk -d -o NAME,ROTA,SIZE,MODEL | awk ' BEGIN { print "設(shè)備\t\t類型\t大小\t\t型號(hào)" print "----------------------------------------" } NR>1 { type = ($2 == "0") ? "SSD" : "HDD" printf "%s\t\t%s\t%s\t%s\n", $1, type, $3, $4 }' echo "--------------------------------" echo "檢測完成"
案例 2:為數(shù)據(jù)庫選擇最佳存儲(chǔ)
假設(shè)我們要為 MySQL 數(shù)據(jù)庫選擇存儲(chǔ)位置:
# 查找所有 SSD 設(shè)備 ssd_devices=$(lsblk -d -o NAME,ROTA | awk '$2=="0" {print $1}') # 如果有 SSD,將數(shù)據(jù)庫放在第一個(gè) SSD 上 if [ -n "$ssd_devices" ]; then first_ssd=$(echo "$ssd_devices" | head -n1) echo "建議將數(shù)據(jù)庫安裝在 /dev/$first_ssd 上(SSD)" else echo "未找到 SSD,建議使用最快的 HDD 安裝數(shù)據(jù)庫" fi
七、高級(jí)主題:虛擬環(huán)境中的磁盤類型
在虛擬化環(huán)境中,ROTA
參數(shù)的行為可能會(huì)有所不同:
1. 虛擬機(jī)中的磁盤
虛擬機(jī)的虛擬磁盤的 ROTA
值取決于管理程序的配置:
- 可能反映底層物理設(shè)備的特性
- 也可能被設(shè)置為任意值
2. 云環(huán)境中的磁盤
主流云服務(wù)提供商的虛擬磁盤:
- AWS EBS:gp3/io2 卷顯示為
ROTA=0
(雖然是網(wǎng)絡(luò)存儲(chǔ)) - Azure 托管磁盤:Premium SSD 顯示為
ROTA=0
- Google Persistent Disk:SSD 類型顯示為
ROTA=0
在這些情況下,ROTA
值表示的是性能特征而非實(shí)際的物理特性。
以上就是Linux區(qū)分SSD和機(jī)械硬盤的方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Linux區(qū)分SSD和機(jī)械硬盤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
CentOS 7下部署php7.1和開啟MySQL擴(kuò)展的方法教程
這篇文章主要給大家介紹了關(guān)于CentOS 7下部署php7.1和開啟MySQL擴(kuò)展的方法教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07Apache服務(wù)器一個(gè)IP多個(gè)站點(diǎn)的配置方法示例
這篇文章主要介紹了Apache服務(wù)器一個(gè)IP多個(gè)站點(diǎn)的配置方法示例,本文介紹的方法其實(shí)就是虛擬主機(jī)的方式,需要的朋友可以參考下2015-07-07centos7.2搭建nginx的web服務(wù)器部署uniapp項(xiàng)目
這篇文章主要介紹了centos7.2搭建nginx的web服務(wù)器部署uniapp項(xiàng)目,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10新版VPS主機(jī)管理面板WDCP安裝及使用體驗(yàn)-國產(chǎn)簡單易用型VPS面板
這篇文章主要介紹了新版VPS主機(jī)管理面板WDCP安裝及使用體驗(yàn)-國產(chǎn)簡單易用型VPS面板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07詳解Xampp和wordpress在Centos7上的搭建與使用
通過實(shí)例給大家詳細(xì)分析了Xampp和wordpress在Centos7上的搭建與使用,對(duì)此有需要的朋友可以學(xué)習(xí)下。2018-02-02