前言
`mount` 是 Linux 掛載文件系統的核心命令,支援本地塊設備、回環設備、網路文件系統、虛擬文件系統等多類型掛載。本文系統整理常用文件系統類型參數、掛載選項、自動掛載配置、權限處理與故障排查,涵蓋 ISO 鏡像、USB 存儲、Windows SMB、Linux NFS 等高頻場景。
一、命令語法與核心選項
mount [-t fstype] [-o options] device dir
常用選項:
-t vfstype 指定文件系統類型 (通常可自動檢測)
-o options 掛載選項,逗號分隔
-r, -o ro 唯讀掛載
-w, -o rw 讀寫掛載 (默認)
-n 不寫入 /etc/mtab (救援模式用)
-a 掛載 /etc/fstab 中所有文件系統
--bind 綁定掛載 (目錄映射)
--move 移動掛載點
--make-shared/slave/private/unbindable 傳播屬性修改
二、常用文件系統類型對照表
| 類型 (-t) | 適用場景 | 典型設備/來源 |
| ext4, xfs, btrfs, f2fs | Linux 原生磁碟分區 | /dev/sdX, /dev/nvmeXnY, LVM 邏輯卷 |
| vfat | FAT32 USB/移動硬碟 | /dev/sdX1 |
| ntfs / ntfs-3g | NTFS Windows 分區/移動硬碟 | /dev/sdX1 |
| exfat | exFAT 大容量閃存 | /dev/sdX1 |
| iso9660 | 光盤/ISO 鏡像 (唯讀) | /dev/cdrom, file.iso |
| udf | DVD/藍光/ISO 鏡像 | /dev/cdrom, file.iso |
| nfs / nfs4 | Linux/Unix 網路共享 | server:/export/path |
| cifs / smbfs | Windows SMB/CIFS 共享 | //server/share |
| fuse.* | 用戶態文件系統 | sshfs, rclone, goofys... |
| tmpfs | 純內存文件系統 | none (size=1G) |
| proc, sysfs, devpts | 虛擬文件系統 | none |
三、高頻場景實戰指令
1. 掛載 ISO 光盤鏡像 (回環設備)
# 建立掛載點
mkdir -p /mnt/iso
# 方式一:直接掛載 (內核自動回環)
mount -t iso9660 -o loop,ro /path/to/image.iso /mnt/iso
# 方式二:顯式回環設備 (舊版內核)
losetup /dev/loop0 /path/to/image.iso
mount -t iso9660 /dev/loop0 /mnt/iso
# 卸載
umount /mnt/iso
losetup -d /dev/loop0 # 若用 losetup
2. 製作 ISO 鏡像
# 從光碟
dd if=/dev/cdrom of=/path/image.iso bs=4M status=progress
# 或
cp /dev/cdrom /path/image.iso
# 從目錄
mkisofs -r -J -V "VOLUME_LABEL" -o /path/image.iso /source/dir
# -r: Rock Ridge 擴展 (保留權限/擁有者)
# -J: Joliet 擴展 (長文件名/Unicode)
# -V: 卷標簽
3. 掛載 USB/移動硬碟
# 1. 識別設備
lsblk -f
# 或
fdisk -l
dmesg -T | tail -20
# 2. 建立掛載點
mkdir -p /mnt/usb
# 3. 掛載 (根據文件系統類型)
# FAT32
mount -t vfat -o uid=1000,gid=1000,iocharset=utf8 /dev/sdb1 /mnt/usb
# NTFS (需安裝 ntfs-3g)
mount -t ntfs-3g -o uid=1000,gid=1000 /dev/sdb1 /mnt/usb
# exFAT (需安裝 exfat-fuse/exfatprogs)
mount -t exfat /dev/sdb1 /mnt/usb
# ext4 (Linux 原生)
mount /dev/sdb1 /mnt/usb
# 4. 卸載
umount /mnt/usb
4. 掛載 Windows SMB/CIFS 共享
# 安裝客戶端
# CentOS/RHEL: yum install cifs-utils
# Ubuntu/Debian: apt install cifs-utils
# 建立掛載點
mkdir -p /mnt/smb
# 密碼文件 (避免明文顯示在進程列表)
cat > /root/.smbcred <<'EOF'
username=domain\user
password=your_password
domain=WORKGROUP
EOF
chmod 600 /root/.smbcred
# 掛載
mount -t cifs //192.168.1.100/share /mnt/smb \
-o credentials=/root/.smbcred,uid=1000,gid=1000,iocharset=utf8,vers=3.0
# 關鍵選項:
# vers=1.0/2.0/2.1/3.0/3.1.1 SMB 協議版本 (默認協商,老舊 NAS 可能需指定 1.0)
# sec=ntlmssp/ntlmv2/krb5 安全模式
# cache=strict/loose/none 緩存策略
# nounix 禁用 Unix 擴展 (避免權限問題)
5. 掛載 NFS 共享 (Linux/Unix)
# 客戶端安裝
# CentOS/RHEL: yum install nfs-utils
# Ubuntu/Debian: apt install nfs-common
# 服務端配置 (/etc/exports)
/data/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
/data/ro 192.168.1.0/24(ro,sync,root_squash)
# 服務端啟動
systemctl enable --now nfs-server rpcbind
exportfs -rv # 重新導出
# 客戶端掛載
mkdir -p /mnt/nfs
mount -t nfs4 192.168.1.50:/data/nfs /mnt/nfs \
-o rw,hard,intr,rsize=1048576,wsize=1048576,timeo=600,retrans=2
# 關鍵選項:
# hard/intr 硬掛載+允許中斷 (推薦生產)
# soft 軟掛載 (超時返回錯誤,可能數據損壞)
# nfsvers=4 指定 NFSv4
# sec=sys/krb5/krb5i/krb5p 安全模式
# noac 禁用屬性緩存 (強一致性,性能大幅下降)
6. 綁定掛載與傳播 (容器/命名空間常用)
# 將 /host/path 映射到 /container/path
mount --bind /host/path /container/path
# 僅讀綁定
mount --bind /host/path /container/path
mount -o remount,ro,bind /container/path
# 遞歸綁定 (含子掛載點)
mount --rbind /host /container
# 修改傳播屬性 (systemd/容器隔離)
mount --make-shared /mnt
mount --make-slave /mnt
mount --make-private /mnt
mount --make-unbindable /mnt
四、永久掛載配置 (/etc/fstab)
# 格式:
# 設備建議使用 UUID 或 LABEL (blkid 查看)
# 示例
UUID=1234-5678 /mnt/data ext4 defaults,noatime 0 2
LABEL=BACKUP /mnt/backup xfs defaults,nofail 0 2
/dev/sdb1 /mnt/usb vfat uid=1000,gid=1000,iocharset=utf8,nofail 0 0
192.168.1.50:/data/nfs /mnt/nfs nfs4 rw,hard,intr,_netdev 0 0
//192.168.1.100/share /mnt/smb cifs credentials=/root/.smbcred,uid=1000,gid=1000,_netdev 0 0
tmpfs /run/cache tmpfs size=2G,mode=1777 0 0
# 關鍵選項:
# _netdev 網路設備,等待網路就緒再掛載 (systemd 依賴)
# nofail 設備不存在不阻塞開機
# noatime 不更新訪問時間 (提升 SSD 性能)
# discard SSD TRIM 支援 (ext4/xfs/btrfs)
# x-systemd.automount 按需自動掛載 (加快開機)
五、權限與中文亂碼處理
| 文件系統 | 權限控制 | 中文編碼 |
| ext4/xfs/btrfs | 原生 Linux 權限 (uid/gid/mode) | UTF-8 原生支援 |
| vfat | 掛載選項 uid/gid/umask/fmask/dmask | iocharset=utf8 (舊版 utf8) |
| ntfs-3g | 掛載選項 uid/gid/umask/fmask/dmask + permissions | UTF-8 原生支援 |
| exfat | 掛載選項 uid/gid/umask | UTF-8 原生支援 |
| cifs | 掛載選項 uid/gid/forceuid/forcegid/file_mode/dir_mode + noperm | iocharset=utf8 |
| nfs | 服務端 exports 控制 (root_squash/all_squash) + 客戶端 uid/gid 映射 | UTF-8 (NFSv4 強制) |
六、常見故障排查
| 錯誤現象 | 可能原因 | 解決方案 |
| mount: wrong fs type | 未安裝對應驅動 / 類型錯誤 | 安裝 ntfs-3g, exfat-fuse, cifs-utils, nfs-utils;指定正確 -t |
| Permission denied | 權限不足 / 唯讀掛載 / Windows 共享密碼錯誤 | 檢查 uid/gid/credentials;Windows 共享權限;NTFS 需正常關機 (fast startup 關閉) |
| Stale file handle (NFS) | 服務端重啟/重新導出,客戶端緩存失效 | umount -f -l;重新掛載;服務端避免頻繁 exportfs -r |
| Host is down (CIFS) | 網路不通 / SMB 版本不匹配 / 防火牆 | ping 測試;指定 vers=1.0/2.0/3.0;開放 445/139 埠 |
| 中文檔名亂碼/問號 | vfat/cifs 缺 iocharset | 加 iocharset=utf8;檢查 locale (locale -a 含 zh_TW.UTF-8) |
| target is busy | 進程佔用掛載點 | lsof /mnt/xxx;fuser -km /mnt/xxx;umount -l (惰性卸載) |
| Read-only file system | 文件系統錯誤自動轉唯讀 / 掛載選項 ro | dmesg 檢查錯誤;fsck 修復;重新掛載 rw |
七、進階:systemd 掛載單元
# /etc/systemd/system/mnt-data.mount
[Unit]
Description=Mount Data Volume
After=network-online.target
Wants=network-online.target
[Mount]
What=UUID=1234-5678
Where=/mnt/data
Type=ext4
Options=defaults,noatime
TimeoutSec=30
[Install]
WantedBy=multi-user.target
# 啟用
systemctl enable --now mnt-data.mount
# 對應自動生成 mnt-data.automount (按需掛載)
結語
掌握 `mount -t 類型 -o 選項 設備 掛載點` 核心語法,熟記 vfat/ntfs/cifs/nfs 的權限與編碼關鍵選項 (uid/gid/iocharset/vers/_netdev/nofail),善用 UUID/LABEL 與 fstab/systemd-mount 實現持久化,即可輕鬆應對 Linux 下各類存儲掛載需求。遇到故障優先查看 `dmesg -T`、`journalctl -u mnt-xxx.mount`、`mount | grep xxx` 定位根因。