在 Linux (含虛擬機) 中正確識別、掛載、卸載 USB 存儲設備是基礎運維技能。本文涵蓋物理機與 VMware 虛擬機場景,從設備識別到檔案系統掛載、中文檔名編碼處理、自動掛載配置。
# 列出所有區塊裝置與分區
lsblk -f
# 或傳統命令
fdisk -l
# 輸出範例:
# sdb 8:16 1 14.9G 0 disk
# └─sdb1 8:17 1 14.9G 0 part vfat USB_DISK
/dev/sdX (SCSI/SATA/USB 統一 sd 命名),分區為 /dev/sdX1、/dev/sdX2...FILESYSTEM 欄位確認格式:vfat (FAT32)、ntfs、ext4、exfat 等。sudo mkdir -p /mnt/usb
# FAT32 / exFAT (指定編碼避免中文亂碼)
sudo mount -t vfat -o uid=1000,gid=1000,iocharset=utf8 /dev/sdb1 /mnt/usb
# NTFS (需安裝 ntfs-3g)
sudo mount -t ntfs-3g -o uid=1000,gid=1000 /dev/sdb1 /mnt/usb
# ext4 / ext3 (Linux 原生,無編碼問題)
sudo mount /dev/sdb1 /mnt/usb
# 只讀掛載 (保護數據)
sudo mount -o ro /dev/sdb1 /mnt/usb
ls -l /mnt/usb
df -h /mnt/usb
# 確保無進程佔用
lsof /mnt/usb
# 正常卸載
sudo umount /mnt/usb
# 強制卸載 (謹慎使用,可能導致數據損失)
sudo umount -l /mnt/usb # 惰性卸載
sudo umount -f /mnt/usb # 強制
# 獲取 UUID (推薦,裝置名稱可能變動)
blkid /dev/sdb1
# 輸出:/dev/sdb1: UUID="1234-ABCD" TYPE="vfat"
# 編輯 /etc/fstab
UUID=1234-ABCD /mnt/usb vfat defaults,uid=1000,gid=1000,iocharset=utf8,nofail 0 0
# 參數說明:
# defaults : rw, suid, dev, exec, auto, nouser, async
# nofail : 開機找不到設備不報錯,繼續啟動
# x-systemd.automount : systemd 按需自動掛載 (加快開機)
# 測試配置
sudo mount -a
/run/media/$USER/標籤名/ 或 /media/$USER/。gvfs、udisks2、polkit 服務是否運行。| 現象 | 原因 | 解決 |
|---|---|---|
| mount: wrong fs type | 未指定 -t 或檔案系統損壞 | 補充 -t vfat/ntfs-3g;fsck 修復 |
| 中文檔名亂碼/問號 | vfat 無編碼參數 | 加 iocharset=utf8 (舊版用 utf8) |
| Permission denied | 權限不足 / 唯讀掛載 | 加 uid/gid 或 rw;檢查 NTFS 是否正常卸載過 |
| target is busy | 有進程佔用掛載點 | lsof /mnt/usb 找出進程並結束 |
| exFAT 不支援 | 缺 exfat-fuse/exfatprogs | sudo dnf install exfatprogs / sudo apt install exfat-fuse |
掌握 lsblk 識別 → mount 掛載 → umount 卸載 → fstab 永久化 四步驟,並善用 UUID 與編碼參數,即可輕鬆應對各類 USB 存儲設備在 Linux 下的讀寫需求。