問題描述
我認為已經在 SSD 上安裝了 Ubuntu,但我不確定,我想檢查一下。但我不知道怎麽辦?
最佳思路
夥計,我的根在哪裏?
首先,我們需要知道您的根文件係統位於哪個磁盤上(換句話說,您的 Ubuntu 位於哪個設備上。一種方法是使用 df
。
$ df / -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 110G 58G 48G 55% /
偉大的 !我現在知道我的 Ubuntu 放在 /dev/sda
磁盤上,大小為 110 GB(另外 10 GB 用於其他用途)。沒有足夠的信息?好的,這個怎麽樣:
$ sudo lshw -short -C disk
[sudo] password for xieerqi:
H/W path Device Class Description
======================================================
/0/1/0.0.0 /dev/sda disk 120GB Radeon R7
/0/2/0.0.0 /dev/sdb disk 500GB TOSHIBA MQ01ABF0
哦,Radeon R7!那是我的固態硬盤!可是等等 。 . .
如果您有兩個大小相同且製造商相同的磁盤怎麽辦?
好吧,磁盤有這個非常有趣的信息——它們旋轉的速度有多快,而我們知道 SSD 磁盤不旋轉。
$ sudo smartctl -a /dev/sda | grep 'Rotation Rate'
[sudo] password for xieerqi:
Rotation Rate: Solid State Device
看起來對嗎?
Side-note:可能需要安裝 smartmontools
才能使用 smartctl
命令。
有關詳細信息,請閱讀 this post on Unix and Linux stackexchange site
額外更新:
還有一種方法,如 here 所述。每個驅動器在 /sys/class/block/
目錄中都有相應的目錄,通過執行
cat /sys/class/block/DEVICE_NAME/queue/rotational
您將獲得硬盤驅動器 1 或固態硬盤 0。這種方法在腳本中使用非常方便
事實上,這顯然與 lsblk
使用的方法相同:
$ lsblk -o NAME,ROTA
NAME ROTA
sda 0
└─sda1 0
sdb 1
├─sdb1 1
├─sdb2 1
├─sdb3 1
├─sdb4 1
├─sdb5 1
└─sdb6 1
次佳思路
判斷您的操作係統是否安裝在 SSD 上的一種簡單方法是從名為 lsblk -o name,rota
的終端窗口運行命令。查看輸出的 ROTA
列,您將在其中看到數字。 0
表示無轉速或 SSD 驅動器。 1
表示帶有旋轉盤片的驅動器。我的 Ubuntu 安裝在我的 /dev/sdb
驅動器上,所以我們可以看到一個指示 0
,這意味著它安裝在 SSD 驅動器上。我在這個示例之後添加了如何使用 df
判斷操作係統的安裝位置。
注意:作為客戶端安裝在循環或 VM 中的 Ubuntu 將顯示 ROTA 1,無論主機操作係統安裝如何。另外,“solid-state hybrid drives”和U盤也會顯示ROTA 1。
例子:
terrance@terrance-ubuntu:~$ lsblk -o name,rota
NAME ROTA
sda 1
└─sda1 1
sdb 0
├─sdb1 0
├─sdb2 0
└─sdb5 0
sdc 1
└─sdc1 1
sdd 1
└─sdd1 1
sde 0
├─sde1 0
└─sde2 0
sdf 1
└─sdf1 1
sdg 1
└─sdg1 1
sdh 1
└─sdh1 1
sr0 1
sr1 1
或者您可以使用 -d
作為單行腳本進行檢查以不顯示分區:
lsblk -d -o name,rota | awk 'NR>1' | grep -v loop | while read CC; do dd=$(echo $CC | awk '{print $2}'); if [ ${dd} -eq 0 ]; then echo $(echo $CC | awk '{print $1}') is a SSD drive; fi; done
例子:
terrance@terrance-ubuntu:~$ lsblk -d -o name,rota | awk 'NR>1' | grep -v loop | while read CC; do dd=$(echo $CC | awk '{print $2}'); if [ ${dd} -eq 0 ]; then echo $(echo $CC | awk '{print $1}') is a SSD drive; fi; done
sdb is a SSD drive
sde is a SSD drive
要確定您的安裝所在的驅動器,請從終端窗口運行命令 df /
。
注意:使用 LVM(邏輯卷管理)配置的驅動器實際上將驅動器顯示為 /boot
而不是 /
。
例子:
LVM 驅動器:
df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/xubuntu--vg-root 243352964 106945028 123976576 47% /
df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 720368 237220 430756 36% /boot
非 LVM 驅動器:
df /
/dev/sdb1 222309012 38264268 172728984 19% /
更新:lsblk
也可用於顯示操作係統的安裝位置以及驅動器是否為 SSD 全部在一個命令中:
lsblk -o NAME,MOUNTPOINT,MODEL,ROTA
例子:
terrance@terrance-ubuntu:~$ lsblk -o NAME,MOUNTPOINT,MODEL,ROTA
NAME MOUNTPOINT MODEL ROTA
sda Backup+ Desk 1
└─sda1 /media/Seagate 1
sdb WDC WD2500JD-00K 1
└─sdb1 /media/250GB_SHARE 1
sdc WDC WD5000AAKS-4 1
└─sdc1 /media/500GB 1
sdd ST500DM002-1BC14 1
└─sdd1 /media/320GB 1
sde SanDisk SDSSDA24 0
├─sde1 / 0
├─sde2 0
└─sde5 [SWAP] 0
sdf WDC WD5000AAKX-2 1
└─sdf1 /media/WD500GB 1
sdg WDC WD10EZEX-00W 1
└─sdg1 /media/1TB_SHARE 1
sdh SanDisk SDSSDA24 0
├─sdh1 0
└─sdh2 /media/Windows 0
sr0 BD-RE BH16NS40 1
sr1 DVD-RAM GH40L 1
這是在係統重啟後,所以我的驅動器名稱再次更改,但如您所見,我的 SanDisk 驅動器是 SSD,ROTA 顯示為 0。
希望這可以幫助!