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

