Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 掛載點與磁碟關聯查看全攻略:df、mount、lsblk、findmnt 多維度對比

編輯:關於 Linux

在 Linux 運維中,「這個目錄掛在哪塊盤?」「這塊盤掛在哪個目錄?」是高頻剛需。工具眾多(df、mount、lsblk、findmnt、/proc/mounts、/etc/mtab),輸出格式各異、適用場景不同、甚至有陷阱。本文系統對比主流工具,建立「查掛載、查磁碟、查關聯」標準化操作指南。

核心工具對比矩陣

工具數據源關鍵優勢核心劣勢最佳場景
df內核 VFS 統計**顯示空間使用率 (已用/可用/%)**、**腳本友好**掛載點與設備可能換行分離、不顯示掛載選項、不顯示未格式化設備**容量監控、告警、腳本取可用空間**
mount / findmnt/proc/self/mountinfo (最新)**掛載點與設備同行、顯示完整掛載選項、樹狀結構、JSON 輸出**不直接顯示空間使用率**查掛載關係、選項審計、自動化解析**
lsblk/sys/block + udev**樹狀顯示設備-分區-掛載點、顯示 TYPE/FSTYPE/SIZE/UUID、支援 JSON**不顯示空間使用率、不顯示掛載選項細節**盤點存儲拓撲、識別設備屬性、腳本解析**
/proc/mounts內核實時最權威、最實時、內核視角格式簡陋、設備可能顯示為 major:minor、路徑轉義內核級調試、容器命名空間差異排查
/etc/mtab用戶態維護傳統兼容不可靠:mount -n 不更新、bind mount 可能不同步、systemd 環境常被 symlink 到 /proc/self/mounts僅兼容舊腳本

工具深度實操指南

1. df:容量視角(必會技巧)


# 人類可讀 + 顯示文件系統類型 + 同步顯示 inode 使用
df -hT --inodes

# 僅顯示特定掛載點
df -h / /home /var /mnt/data

# 腳本提取可用空間 (KB)
df -k /data | awk 'NR==2 {print $4}'

# 顯示所有 (含 0 大小虛擬文件系統)
df -ha

# 同步顯示掛載選項 (部分版本支援)
df -h --output=source,target,fstype,options,size,used,avail,pcent

df 輸出換行陷阱與解決


# 現象: 設備名過長導致換行
# /dev/mapper/vg_data-lv_mysql
#                        511980  32840  479140   7% /home/mt

# 解決: 使用 -P 強制 POSIX 輸出 (不換行)
df -hP

# 或用 findmnt/lsblk 獲取關聯再 df

2. findmnt:現代掛載查看神器(強烈推薦)


# 樹狀顯示所有掛載 (預設)
findmnt

# 顯示指定掛載點詳情
findmnt /mnt/data

# 顯示指定設備的所有掛載點
findmnt /dev/sda1

# 自定義列輸出 (腳本解析首選)
findmnt -rn -o SOURCE,TARGET,FSTYPE,OPTIONS,USED,AVAIL,USE%
# -r 原始輸出 -n 無表頭

# JSON 輸出 (程序化處理)
findmnt -J -o SOURCE,TARGET,FSTYPE,OPTIONS

# 僅顯示真實設備掛載 (過濾虛擬 fs)
findmnt -t nosysfs,noproc,nodevpts,notmpfs

3. lsblk:設備拓撲全景圖


# 完整信息 (含掛載點、類型、UUID、標籤)
lsblk -o +FSTYPE,MOUNTPOINT,UUID,LABEL,PARTUUID,PARTLABEL

# 僅顯示有掛載點的
lsblk -o +MOUNTPOINT | grep -v '^$'

# JSON 輸出
lsblk -J -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID

# 顯示所有設備 (含無分區/無文件系統)
lsblk -a

# 顯示掛載選項 (需 root, 內核 4.18+)
lsblk -o +MOUNTPOINT,MOUNTOPTIONS

4. mount:傳統命令兼容模式


# 顯示所有掛載 (含虛擬 fs)
mount | column -t

# 僅顯示特定類型
mount -t ext4,xfs

# 顯示掛載選項 (關鍵審計: noexec, nosuid, nodev, ro, rw, relatime, noatime)
mount | grep /mnt/data

實戰場景:標準化查詢流程

場景 A:給定目錄,查設備、文件系統、空間、選項


TARGET="/var/lib/mysql"
# 1. 獲取設備與文件系統
DEV=$(findmnt -n -o SOURCE --target "$TARGET")
FSTYPE=$(findmnt -n -o FSTYPE --target "$TARGET")
OPTIONS=$(findmnt -n -o OPTIONS --target "$TARGET")

# 2. 獲取空間使用
read SIZE USED AVAIL USE% <<< $(df -P "$TARGET" | awk 'NR==2 {print $2,$3,$4,$5}')

# 3. 獲取 inode 使用
read IUSED IFREE IUSE% <<< $(df -P --inodes "$TARGET" | awk 'NR==2 {print $3,$4,$5}')

echo "Target: $TARGET"
echo "Device: $DEV ($FSTYPE)"
echo "Options: $OPTIONS"
echo "Space: $SIZE KB total, $USED used, $AVAIL avail ($USE%)"
echo "Inodes: $IUSED used, $IFREE free ($IUSE%)"

場景 B:給定設備,查所有掛載點與空間


DEV="/dev/nvme0n1p3"
findmnt -rn -o TARGET --source "$DEV" | while read MNT; do
    df -hP "$MNT" | awk 'NR==2 {printf "%-30s %8s %8s %8s %s\n", $6, $2, $3, $4, $5}'
done

場景 C:全盤點存儲拓撲(巡檢/資產管理)


# 生成 CSV 報告
lsblk -J -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID,LABEL,PARTUUID,PARTLABEL,ROTA,RO,RM,MODEL,VENDOR | \
jq -r '.blockdevices[] | [.name, .size, .type, .fstype, .mountpoint, .uuid, .label, .rota, .model] | @csv' > storage_inventory.csv

場景 D:排查掛載選項安全合規(noexec/nosuid/nodev)


# 檢查用戶可寫目錄是否缺少 noexec/nosuid/nodev
findmnt -rn -o TARGET,OPTIONS -t ext4,xfs,btrfs,ext3,ext2 | \
awk -F'[ ,]' '$2 !~ /noexec/ || $2 !~ /nosuid/ || $2 !~ /nodev/ {print $1 " -> " $2}' | \
grep -E '/home|/tmp|/var/tmp|/dev/shm|/opt|/app|/data'

容器/命名空間環境特殊處理

  • 宿主機視角:`findmnt`/`lsblk`/`df` 見宿主機掛載點,容器內掛載點(bind mount, volume)可見但設備可能相同。
  • 容器內視角:進入容器 `nsenter -t -m findmnt` 或 `docker exec findmnt`,見容器掛載命名空間隔離視圖。
  • /proc/\/mountinfo:最權威的進程級掛載視圖,支援共享/從屬/私有傳播標誌。

避坑指南

  1. df 換行** → 永遠用 `df -hP` 或 `findmnt`+`df` 組合。
  2. /etc/mtab 不可信** → 僅用 `/proc/self/mountinfo` (`findmnt`/`mount` 現代版本預設讀此)。
  3. bind mount 遮蓋** → `df /mnt/bind` 顯示源文件系統空間,非目標目錄所在文件系統。用 `findmnt -T /mnt/bind` 看真實來源。
  4. LVM/RAID/多路徑設備名** → `/dev/mapper/vg-lv`、`/dev/dm-X`、`/dev/mpathX` 共存。用 `lsblk` 看完整映射關係,`df` 以掛載點為準。
  5. inode 耗盡** → `df -h` 顯示空間充足但無法建文件,**必檢 `df -i`**。

掛載點查看示意圖

掛載點與磁碟關聯查看,核心在於**選對工具、解對輸出、避開陷阱**。確立 findmnt 為查關係首選、lsblk 為查拓撲首選、df -hP 為查容量首選、/proc/self/mountinfo 為最終權威來源,構建標準化查詢腳本庫,納入巡檢、發布、擴容、審計、故障排查全流程,讓存儲可視化管理無盲區。

Copyright © Windows教程網 All Rights Reserved