lsblk 指令:查看磁碟、分割區結構與 UUID

測試環境RHEL 系列AlmaLinux 9.8root 帳號
磁碟 · 掛載指令lsblk位置/usr/bin/lsblk

lsblk 指令會以樹狀結構列出連接到伺服器的磁碟、分割區與掛載位置,並能一次查看磁碟大小、檔案系統類型,甚至 UUID。在 AlmaLinux 9 伺服器上執行 lsblk 後,snap 套件建立的 loop 裝置比磁碟先列出,因此我們用 -e 7 把它們濾掉。接著用 -f 確認根分割區的 xfs 檔案系統與 UUID。

下方輸出中的磁碟大小與 UUID 為範例值。

1️⃣ 讀懂 lsblk 指令的基本輸出

在以 snap 安裝程式的伺服器上不加選項執行 lsblk,各套件版本掛載的 loop 裝置會比磁碟先排成一列出現,因此要用 -e 指定 loop 裝置的裝置編號 7,把它們排除後再查看。

lsblk -e 7
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0   80G  0 disk 
├─nvme0n1p1 259:1    0    1M  0 part 
├─nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─nvme0n1p3 259:3    0    1G  0 part /boot
└─nvme0n1p4 259:4    0 78.8G  0 part /

NAME 欄的 nvme0n1 是磁碟。下方以 [├─] 與 [└─] 連接的 nvme0n1p1 到 nvme0n1p4,是分割這顆磁碟的分割區。就像大樓入口的樓層指南,在大樓名稱底下寫著每層樓有哪些店家。

TYPE 欄中磁碟顯示為 [disk]、分割區顯示為 [part],MOUNTPOINTS 欄則表示該分割區掛載的資料夾。在我們確認的伺服器上,根分割區 nvme0n1p4 掛載在 /,nvme0n1p3 掛載在 /boot。大小 1M 的 nvme0n1p1 是 GPT 磁碟上用於開機的 BIOS 開機分割區,因此沒有掛載位置。

MAJ:MIN 是核心分配給裝置的主編號與次編號,loop 裝置為 7,我們確認的 NVMe 磁碟為 259。RM 以 1 和 0 表示是否為可移除裝置,RO 表示是否為唯讀。

SIZE 很容易被看成剩餘空間,但 SIZE 是整個磁碟或分割區的大小。檔案系統的剩餘空間要看加上 -f 時出現的 FSAVAIL 欄。

選項不同時輸出的列與欄如何變化,可以在下方圖表中依序比較。

🧭 lsblk 各選項的輸出:磁碟與分割區
說明圖解
⚙️ 選項
$ lsblk -f -d -p -e 7
裝置名稱
大小
檔案系統
掛載位置
/dev/nvme0n1
80G
├─/dev/nvme0n1p1
1M
├─/dev/nvme0n1p2
200M
vfat, 5A1E-…
/boot/efi
├─/dev/nvme0n1p3
1G
xfs, 6d2f…
/boot
└─/dev/nvme0n1p4
78.8G
xfs, 2b9e…
/
🖥️ 畫面上輸出的內容
磁碟 1 列與分割區 4 列,基本 7 欄(NAME 到 MOUNTPOINTS)
磁碟 1 列與分割區 4 列,檔案系統 8 欄(FSTYPE、UUID、FSAVAIL 等)
只有磁碟 1 列,基本 7 欄
磁碟 1 列與分割區 4 列,名稱以 /dev/ 開頭
不加選項時,分割區會在磁碟下方以分支相連,大小與掛載位置也會一起顯示。
-f 會輸出檔案系統類型、UUID 與剩餘空間來取代大小。磁碟 nvme0n1 與沒有檔案系統的 nvme0n1p1 會留白。
-d 會去掉分割區的列,只輸出磁碟一列。
加上 -p 後裝置名稱前面會加上 /dev/,輸出的路徑可以直接放進其他指令。

2️⃣ lsblk -f 確認檔案系統與 UUID

基本輸出不會顯示檔案系統類型,因此分割區用什麼格式格式化,要用 -f 確認。-f 會輸出 NAME、FSTYPE、FSVER、LABEL、UUID、FSAVAIL、FSUSE%、MOUNTPOINTS 共八欄。

lsblk -f -e 7
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                            
├─nvme0n1p1                                                                        
├─nvme0n1p2 vfat   FAT16       5A1E-3B7C                             192.1M     4% /boot/efi
├─nvme0n1p3 xfs                6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28  691.4M    28% /boot
└─nvme0n1p4 xfs                2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13   68.5G    13% /

實際執行後,根分割區與 /boot 分割區為 xfs,/boot/efi 為 FAT16 版本的 vfat。磁碟 nvme0n1 與 nvme0n1p1 沒有檔案系統,因此留白。UUID 是每個檔案系統的唯一編號,在 /etc/fstab 中以 UUID 而非裝置名稱指定要掛載的分割區時使用。

要最準確地確認檔案系統資訊時,請使用 blkid 指令。

FSAVAIL 與 FSUSE% 是已掛載檔案系統的剩餘空間與使用率。未掛載的分割區不會顯示數值。 df 指令只會輸出已掛載檔案系統的大小與使用量。lsblk 則不論是否掛載,都會一併輸出磁碟與分割區的結構。

3️⃣ lsblk -o 選擇欄位與 -b 位元組單位

在 -o 後面以逗號連接欄位名稱,就只會依序列出那些欄位。可用的欄位名稱可在 [lsblk --help] 末尾的清單中確認。

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7
NAME         SIZE FSTYPE MOUNTPOINT
nvme0n1       80G        
├─nvme0n1p1    1M        
├─nvme0n1p2  200M vfat   /boot/efi
├─nvme0n1p3    1G xfs    /boot
└─nvme0n1p4 78.8G xfs    /

MOUNTPOINT 只輸出一個掛載位置,MOUNTPOINTS 則在同一檔案系統掛載於多處時全部輸出。若只想在基本欄位後面多加一欄,請像 [-o +UUID] 一樣在欄位名稱前加上 +。

-b 會以位元組為單位的整數輸出大小。用眼睛比較時基本單位比較好讀,因此 -b 適合用在計算或比較大小的腳本。

lsblk -b -o NAME,SIZE -e 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

基本輸出的 G 與 M 以 1,024 為單位,所以 80G 的磁碟會顯示為 85,899,345,920 位元組。

4️⃣ lsblk -d 磁碟清單與 -p 完整路徑

在有多顆磁碟的伺服器上,分割區的列會混在一起,不易確認磁碟清單,因此用 -d 去掉分割區,只輸出磁碟的列。

lsblk -d -e 7
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0    0  80G  0 disk 

輸出中只留下磁碟 nvme0n1 這一列,底下的四列分割區沒有出現。

加上 -p 後裝置名稱前面會加上 /dev/,以完整路徑顯示。這個路徑可以直接放進 mount 等其他指令。

lsblk -p -e 7
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1     259:0    0   80G  0 disk 
├─/dev/nvme0n1p1 259:1    0    1M  0 part 
├─/dev/nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─/dev/nvme0n1p3 259:3    0    1G  0 part /boot
└─/dev/nvme0n1p4 259:4    0 78.8G  0 part /

只有 NAME 欄從 /dev/nvme0n1 到 /dev/nvme0n1p4 變成完整路徑,其餘欄位與基本輸出相同。

以裝置路徑作為參數時,只會輸出該裝置及其下方的分割區;以分割區路徑作為參數時,只會出現該分割區一列。

lsblk /dev/nvme0n1p4
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4    0 78.8G  0 part /

輸出中只出現 nvme0n1p4 一列,不會加上磁碟列與分支符號。輸入不存在的裝置路徑時,出現 [not a block device] 錯誤,結束代碼為 32。

5️⃣ lsblk 指令的腳本用輸出與選項

在腳本中直接擷取基本輸出看似方便,但基本輸出與 -f 的欄位組成日後可能改變,因此腳本中要用 -o 直接指定欄位。

-n 會去掉標題列只輸出值,因此適合只需要一個值的情況,例如單一分割區的檔案系統類型。

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

沒有標題列,只會出現根分割區的檔案系統類型 xfs 一個字,因此可以直接存入 shell 變數。

-P 會將每一欄以 [名稱=”值”] 的形式輸出在同一列。在 AlmaLinux 9 的 util-linux 2.37 中,只要加上 -P,名稱就會改成方便當作 shell 變數讀取的形式,例如 MAJ:MIN 變成 MAJ_MIN、FSUSE% 變成 FSUSE_PCT。

lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4
NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"

指定的三個欄位會依 NAME、FSTYPE、MOUNTPOINT 的順序出現在同一列。所有值都放在雙引號中。

-J 會以 JSON 輸出。不加 -d 時,分割區會放進磁碟底下的 children 陣列。與 -b 一起使用時只有 size 會變成數字,FSAVAIL 等其他大小欄位仍是字串。

lsblk -J -d -o NAME,SIZE,TYPE -e 7
{
   "blockdevices": [
      {
         "name": "nvme0n1",
         "size": "80G",
         "type": "disk"
      }
   ]
}

加上 -d 後,blockdevices 陣列只會有一顆磁碟,也不會出現 children 陣列。

🔲 lsblk 指令選項

選項複製說明
-e, --exclude排除指定主編號的裝置。指定 7 時會排除 loop 裝置。
-f, --fs輸出檔案系統類型、UUID、剩餘空間與使用率。
-o, --output只依序輸出以逗號指定的欄位。
-b, --bytes以位元組為單位的整數輸出 SIZE 欄。
-d, --nodeps去掉分割區的列,只輸出磁碟的列。
-p, --paths以 /dev/ 開頭的完整路徑輸出裝置名稱。
-n, --noheadings去掉標題列,只輸出值。
-P, --pairs將欄位名稱與值成對輸出在同一列。
-J, --json以 JSON 格式輸出。
-a, --all連大小為 0 的空裝置也一併輸出。
選項複製說明
-I, --include只輸出指定主編號的裝置。
-l, --list以清單格式取代樹狀結構輸出。
-r, --raw以不對齊欄距的 raw 格式輸出。
-i, --ascii以 ASCII 字元輸出樹狀線條。
-s, --inverse反轉相依關係,在分割區下方輸出磁碟。
-S, --scsi只輸出 SCSI 裝置資訊。
-t, --topology輸出磁區大小與 I/O 排程器等拓撲資訊。
-m, --perms輸出裝置的擁有者、群組與權限。
-x, --sort依指定欄位排序後以清單格式輸出。
-O, --output-all輸出所有可用的欄位。

🔲 lsblk 指令模擬器

在下方模擬器中,可以親自輸入到目前為止的指令,確認各選項的輸出有什麼不同。

lsblk 指令模擬器util-linux 2.37.4
[root@server work]#
用鍵盤 ↑↓ 鍵可叫出先前輸入過的指令。

🔢 FAQ & 推薦內容

用一般帳號執行 -f,UUID 與 FSAVAIL 也和 root 帳號一樣輸出。lsblk 會讀取 sysfs 與 udev 的資訊。無法使用 udev 資訊時必須直接讀取裝置,因此需要 root 權限。

剛新增或更換裝置後,udev 可能還沒收集完資訊,因此請先執行 udevadm settle,再重新執行 lsblk。

-a 連大小為 0 的空裝置也會輸出,因此用於確認基本輸出中是否有遺漏的裝置。在同一台伺服器加上 -a 後,多輸出了一列沒有連接任何東西、大小為 0B 的 loop 裝置。

ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Prove your humanity: 1   +   4   =