前言
df (disk free) 掌握檔案系統容量健康,hdparm (hard disk parameters) 洞察區塊裝置效能與參數。兩者結合,構建 Linux 儲存層觀測與調優基石。本文整理雙命令核心參數、實戰範例與進階調優策略。
一、df 命令詳解
常用參數速查
| 參數 | 功能 | 範例 |
-h | 人類可讀單位 (K/M/G) | df -h |
-H | SI 单位 (1000 進位) | df -H |
-m | 以 MB 為單位 | df -m /home |
-k | 以 KB 為單位 (預設) | df -k |
-i | 顯示 inode 使用量 (而非塊) | df -i |
-T | 顯示檔案系統類型 | df -T |
-t ext4 | 僅顯示指定類型 (ext4/xfs/btrfs...) | df -t ext4 |
-x tmpfs | 排除指定類型 | df -x tmpfs |
-l | 僅本地檔案系統 (排除 NFS/SMB) | df -l |
-P | POSIX 輸出格式 (適合腳本解析) | df -P |
實戰場景
# 1. 快速巡檢全系統容量
df -hT -x tmpfs -x devtmpfs
# 2. 監控根分區 inode 耗盡風險 (大量小檔案場景)
df -i / | awk 'NR==2 {print $5}' | sed 's/%//'
# 腳本判斷 > 85% 報警
# 3. 找出佔用空間最大的掛載點
df -h --output=target,pcent | sort -k2 -hr | head -5
二、hdparm 命令詳解
警告:hdparm 可修改硬碟韌體級參數,錯誤設定可能導致資料損毀或硬體損壞。**僅在完整備份後、非生產環境驗證後操作。**
資訊查詢類 (安全)
| 參數 | 功能 |
-I | 顯示完整裝置識別資訊 (SATA/ATA 標準支援的所有特性) |
-i | 顯示簡要識別資訊 (較舊介面) |
-v | 顯示所有當前設定 (唯讀、DMA、多扇區等) |
-g | 顯示幾何參數 (柱面/磁頭/扇區) |
效能測試類
| 參數 | 功能 | 範例 |
-t | 緩衝區讀取速度測試 (測試磁碟吞吐) | hdparm -t /dev/sda |
-T | 快取讀取速度測試 (測試 CPU/記憶體/控制器) | hdparm -T /dev/sda |
-tT | 連續執行以上兩項 | hdparm -tT /dev/sda |
# 典型輸出
/dev/sda:
Timing cached reads: 24900 MB in 2.00 seconds = 12450.00 MB/sec
Timing buffered disk reads: 540 MB in 3.00 seconds = 180.00 MB/sec
參數調整類 (需 root,重啟失效,永久生效需寫入啟動腳本)
| 參數 | 功能 | 風險等級 |
-d 1 | 啟用 DMA (Direct Memory Access) | 低 (現代驅動預設開啟) |
-c 3 | 啟用 32-bit I/O (舊 IDE 驅動相關,SATA/SCSI 無效) | 低 |
-m 16 | 設定多扇區傳輸 (一次中斷傳輸 16 扇區 = 8KB) | 中 (需裝置支援) |
-X 68 | 設定 UltraDMA 模式 68 = UDMA5 (ATA/100) | 高 (錯誤模式導致資料損毀) |
-W 1 | 啟用硬碟寫入快取 | 中 (斷電丟失風險) |
-S 120 | 設定待機超時 (120 × 5秒 = 10分鐘) | 低 |
-k 1 | 將當前設定標記為「保留過重置」 (部份支援) | 低 |
-K 1 | 將當前設定永久寫入硬碟韌體 (極度危險!) | 極高 |
UltraDMA 模式對照表 (-X 參數)
| 模式 | 標準 | 理論頻寬 | -X 參數 |
| UDMA0 | ATA/16 | 16.7 MB/s | 64 (0x40) |
| UDMA1 | ATA/25 | 25.0 MB/s | 65 |
| UDMA2 | ATA/33 | 33.3 MB/s | 66 |
| UDMA3 | ATA/44 | 44.4 MB/s | 67 |
| UDMA4 | ATA/66 | 66.7 MB/s | 68 |
| UDMA5 | ATA/100 | 100 MB/s | 69 |
| UDMA6 | ATA/133 | 133 MB/s | 70 |
現代 SATA (SATA I/II/III) 由控制器協商速率,**不建議手動強制 -X 參數**。
綜合調優範例 (傳統 IDE 硬碟)
# 查看當前
hdparm -v /dev/hda
# 一鍵調優 (視裝置支援)
hdparm -d1 -c3 -m16 -X68 /dev/hda
# 測試效果
hdparm -tT /dev/hda
# 如滿意,加入 /etc/rc.local 永久生效
echo "hdparm -d1 -c3 -m16 -X68 /dev/hda" >> /etc/rc.local
三、進階替代工具 (現代系統推薦)
| 工具 | 優勢 | 適用場景 |
lsblk | 樹狀顯示裝置層級關係、掛載點、大小 | 快速巡檢區塊裝置拓撲 |
smartctl -a | SMART 健康度、溫度、壞道、通電時長 | 硬碟壽命評估、預測性更換 |
iostat -xmt 1 | 即時 I/O 使用率、等待佇列、服務時間 | 效能瓶頸定位、IOPS 分析 |
fio | 專業基準測試 (隨機/循序、讀/寫、IOPS、延遲) | 儲存系統驗收、方案對比 |
nvme-cli | NVMe 專屬管理 (命名空間、固件更新、格式化) | NVMe SSD 管理 |
結語
df 守護容量紅線,hdparm 探究效能上限。現代 Linux 儲存棧 (VFS → Block Layer → SCSI/ATA/NVMe Subsystem) 已高度自動化調優,**手動 hdparm 調參屬於考古級技能**,但理解 DMA、多扇區、UDMA 模式原理,對排查舊系統效能退化、嵌入式裝置調優、虛擬化 I/O 模擬仍具不可替代價值。日常運維請轉向 smartctl、iostat、fio 組建現代化觀測體系。