萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 掛載 USB/移動硬碟實戰:lsblk、fdisk、mount、umount、fstab 永久掛載、NTFS/exFAT 支援

快速識別設備節點

# 方法 1:lsblk (推薦,樹狀顯示、大小、類型、掛載點)
lsblk -f
# NAME   FSTYPE   LABEL    MOUNTPOINT   SIZE
# sda
# ├─sda1 vfat             /boot/efi    512M
# └─sda2 ext4             /            476G
# sdb
# └─sdb1 ntfs     MyPassport            1.8T

# 方法 2:fdisk -l (需 root)
fdisk -l /dev/sdb

# 方法 3:dmesg -T | tail -20 (插入後即時看核心訊息)
# 方法 4:/proc/partitions
cat /proc/partitions

臨時掛載 (手動、當前會話有效)

Linux 原生文件系統 (ext4, xfs, btrfs)

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb
# 驗證
df -h /mnt/usb
ls /mnt/usb

Windows 文件系統 (NTFS / exFAT / FAT32)

# 安裝驅動 (Debian/Ubuntu)
apt update && apt install ntfs-3g exfat-fuse exfatprogs
# RHEL/Fedora
dnf install ntfs-3g exfat-fuse
# Arch
pacman -S ntfs-3g exfatprogs

# 掛載 NTFS (ntfs-3g 為用戶空間 FUSE 驅動,Linux 5.15+ 核心原生 ntfs3 更快)
mount -t ntfs-3g /dev/sdb1 /mnt/usb
# 或核心原生 (需核心 5.15+)
mount -t ntfs3 /dev/sdb1 /mnt/usb -o uid=1000,gid=1000,umask=022

# 掛載 exFAT
mount -t exfat /dev/sdb1 /mnt/usb

# 掛載 FAT32
mount -t vfat /dev/sdb1 /mnt/usb -o uid=1000,gid=1000,iocharset=utf8

關鍵參數:uid=1000,gid=1000 讓普通用戶擁有讀寫權,umask=022 設定預設權限 755 (目錄) / 644 (文件)。

ISO 映像檔掛載

mkdir -p /mnt/iso
mount -o loop /path/to/ubuntu-24.04.iso /mnt/iso
# 或自動偵測
mount /path/to/ubuntu-24.04.iso /mnt/iso

安全卸載

# 確認無進程佔用
lsof /mnt/usb
fuser -m /mnt/usb

# 正常卸載
umount /mnt/usb
# 或指定設備
umount /dev/sdb1

# 強制卸載 (謹慎,可能導致數據損失)
umount -l /mnt/usb   # 惰性卸載,立即釋放掛載點,待無 busy 時完成
umount -f /mnt/usb   # 強制 (網路文件系統常用)

永久掛載 — /etc/fstab (開機自動掛載)

使用 UUID (強烈推薦,設備名稱可能漂移)

# 獲取 UUID
blkid /dev/sdb1
# /dev/sdb1: UUID="A1B2-C3D4" TYPE="ntfs" PARTUUID="12345678-01"

# 編輯 /etc/fstab
UUID=A1B2-C3D4  /mnt/usb  ntfs-3g  defaults,uid=1000,gid=1000,umask=022,nofail,x-systemd.automount  0  0

fstab 欄位解析

欄位說明範例
1. 設備UUID=... / LABEL=... / /dev/sdb1UUID=A1B2-C3D4
2. 掛載點目錄必須預先存在/mnt/usb
3. 文件系統ext4, xfs, btrfs, ntfs-3g, ntfs3, vfat, exfat, autontfs-3g
4. 掛載選項預設 defaults, noatime, nofail, x-systemd.automount, ro, rw, user, nouserdefaults,uid=1000,nofail,x-systemd.automount
5. dump備份標記 (0/1),現多為 00
6. fsck 順序根分區 1,其他 2,不檢查 0 (NTFS/FAT/exFAT 必須 0)0

關鍵選項詳解

  • nofail:裝置不存在時不阻塞開機 (外接硬碟必加)。
  • x-systemd.automount:按需自動掛載 (首次存取才掛載),加快開機、避免掛載失敗卡住。
  • noatime:不更新 atime,減少 SSD 寫入、提升效能。
  • discard:SSD TRIM 支援 (ext4/xfs/btrfs),或用週期性 fstrim.timer。
  • user:允許普通用戶 mount/umount。

驗證 fstab 無誤後

mount -a           # 掛載所有 fstab 定義項
findmnt --verify   # 檢查語法錯誤
systemctl daemon-reload  # 重載 systemd 單元 (針對 x-systemd.* 選項)

圖形桌面自動掛載

  • GNOME/KDE/ Xfce:插入裝置 → 桌面彈出圖示 / 檔案管理器側邊欄 → 點擊掛載 → 顯示於 /run/media/$USER/LABEL 或 /media/$USER/LABEL。
  • 底層由 udisks2 + polkit 權限控制,無需手動 fstab。

常見問題排查

進階:系統級加密儲存 (LUKS)

# 格式化加密
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 usb_encrypted
mkfs.ext4 /dev/mapper/usb_encrypted
mount /dev/mapper/usb_encrypted /mnt/usb

# fstab 配合 crypttab
# /etc/crypttab
usb_encrypted  UUID=A1B2-C3D4  none  luks,nofail
# /etc/fstab
/dev/mapper/usb_encrypted  /mnt/usb  ext4  defaults,nofail,x-systemd.automount  0  2

掌握掛載/卸載全流程,讓你的數據在 Linux 與跨平台間安全、靈活流動。

copyright © 萬盛學電腦網 all rights reserved
現象可能原因解決
mount: /mnt/usb: can't read superblock文件系統損壞 / 類型錯誤 / 未安裝驅動fsck -t 類型 /dev/sdb1;安裝 ntfs-3g/exfatprogs;嘗試 -t auto
NTFS 掛載唯讀Windows 快速啟動/休眠導致髒標記Windows 完整關機 (Shift+關機) 或 ntfsfix /dev/sdb1;掛載加 ro 唯讀保護
權限拒絕uid/gid/umask 未設、NTFS 不支援 Linux 權限掛載選項指定 uid=1000,gid=1000,umask=022;或使用 bindfs 映射權限
拔出後重插掛載點消失無 x-systemd.automount 或 udev 規則缺失加入 x-systemd.automount;或寫 udev 規則 RUN+="/usr/bin/mount /mnt/usb"
exFAT 大文件 (>4GB) 複製失敗格式化為 FAT32 而非 exFAT重新格式化 mkfs.exfat /dev/sdb1 或 mkfs.ntfs