在虛擬機或物理機新增硬盤後執行 mount /dev/sdb /disk 提示 mount: you must specify the filesystem type,核心原因是新硬盤未分區、未格式化文件系統,內核無法識別其類型。本文提供從磁盤識別、分區、格式化、掛載到開機自動掛載的完整標準化流程。
mount 命令需要明確文件系統類型(ext4、xfs、ntfs 等)。新硬盤出廠狀態為「裸設備」,無分區表、無文件系統,內核自然無法推斷類型,故報錯要求指定。
# 查看所有塊設備(推薦,樹狀結構清晰)
lsblk
# 或查看內核日誌確認新設備
dmesg -T | grep -i scsi
# 輸出示例:
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
# sda 8:0 0 20G 0 disk
# ├─sda1 8:1 0 1G 0 part /boot
# └─sda2 8:2 0 19G 0 part /
# sdb 8:16 0 50G 0 disk ← 新硬盤,無分區
# 使用 parted(支援 GPT,非交互式腳本友好)
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script mkpart primary ext4 0% 100%
# 驗證分區
lsblk /dev/sdb
# 輸出應顯示 sdb1 分區
注意:舊教程常用fdisk交互式分區,生產環境腳本化請用parted或sfdisk。若硬盤 < 2TB 且需兼容舊系統,可用 MBR(mklabel msdos)。
# 方案 A:ext4(通用、穩定、支援縮容)
mkfs.ext4 /dev/sdb1
# 方案 B:xfs(高性能、大文件友好、不支援縮容)
mkfs.xfs /dev/sdb1
# 設置卷標(便於識別,掛載時可用 LABEL=)
e2label /dev/sdb1 DATA_DISK # ext4
xfs_admin -L DATA_DISK /dev/sdb1 # xfs
mkdir -p /disk
mount /dev/sdb1 /disk
# 驗證
df -h /disk
ls /disk
# 應顯示 lost+found 目錄(ext4/xfs 特徵)
強烈建議使用 UUID 或 LABEL,避免設備名漂移(sdb→sdc)導致掛載失敗或掛錯盤。
# 獲取 UUID
blkid /dev/sdb1
# 輸出:/dev/sdb1: UUID="a1b2-c3d4-..." TYPE="ext4"
# 編輯 fstab
vim /etc/fstab
# 添加行(推薦 UUID):
UUID=a1b2-c3d4-... /disk ext4 defaults,noatime 0 2
# 或使用 LABEL:
LABEL=DATA_DISK /disk ext4 defaults,noatime 0 2
| 字段 | 說明 | 示例 |
|---|---|---|
| 設備 | UUID=... / LABEL=... / /dev/sdb1 | UUID=a1b2-... |
| 掛載點 | 目標目錄 | /disk |
| 類型 | ext4, xfs, ntfs, vfat... | ext4 |
| 選項 | 掛載參數 | defaults,noatime |
| dump | 備份標記(0/1) | 0 |
| fsck | 啟動檢查順序(0=不檢查,/=1,其他=2) | 2 |
# 模擬掛載測試(不寫入磁盤)
mount -a
# 或指定掛載點測試
mount /disk
# 檢查是否報錯
echo $?
# 0 表示成功
| 操作 | 後果 | 正確做法 |
|---|---|---|
直接 mkfs.ext4 /dev/sdb(無分區) | 整盤格式化,無分區表,部分工具識別異常 | 先分區 /dev/sdb1 再格式化 |
fstab 用 /dev/sdb1 | 多硬盤時啟動順序變化導致掛載錯誤 | 使用 UUID 或 LABEL |
| 掛載點目錄非空 | 原有文件被遮蓋,卸載後恢復,易誤以為數據丟失 | 掛載點務必為空目錄 |
忘記 noatime | 每次讀取更新 atime,產生額外 IO | 加上 noatime 或 relatime |
若擴容的是 LVM 邏輯卷而非新增硬盤:
# 1. 擴容物理卷
pvresize /dev/sda2
# 2. 擴容邏輯卷(+100% 剩餘空間)
lvextend -l +100%FREE /dev/VolGroup/lv_root
# 3. 擴容文件系統
resize2fs /dev/VolGroup/lv_root # ext4
xfs_growfs / # xfs(掛載點)
遵循「識別 → 分區 → 格式化 → 掛載 → 寫入 fstab(用 UUID)」標準流程,即可徹底解決掛載報錯,並確保重啟後自動掛載正確。生產環境操作前請務必快照備份,謹防誤操作導致數據損失。