CentOS 預設不支援 NTFS 讀寫,需安裝開源專案 NTFS-3G (基於 FUSE) 才能安全、高效地掛載 Windows 磁碟分區。本文涵蓋:配置第三方軟體倉庫 (EPEL 推薦)、安裝 ntfs-3g 與 fuse、手動/自動掛載參數、權限映射、常見錯誤排解,適用 CentOS 6/7/8、RHEL、Rocky/AlmaLinux。
# CentOS 7 / RHEL 7 / Rocky / Alma
yum install -y epel-release
# CentOS 6 (EOL,僅供存量系統)
rpm -ivh https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm
# 32 位元
wget https://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
# 64 位元
wget https://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-*.rpm
yum install -y ntfs-3g fuse
# 驗證
ntfs-3g --version
# 輸出範例:ntfs-3g 2017.3.23
lsblk -f
# 或
blkid | grep ntfs
# 輸出範例:/dev/sdb1: UUID="1234-5678" TYPE="ntfs"
mkdir -p /mnt/win_disk
mount -t ntfs-3g /dev/sdb1 /mnt/win_disk
# 或指定 UUID (推薦,裝置名可能變動)
mount -t ntfs-3g UUID="1234-5678" /mnt/win_disk
# 完整選項說明
mount -t ntfs-3g -o \
uid=1000,gid=1000,umask=022, \
locale=zh_TW.UTF-8, \
windows_names,noatime \
/dev/sdb1 /mnt/win_disk
| 選項 | 作用 |
|---|---|
uid=1000,gid=1000 | 指定檔案擁有者為本地用戶 (避免 root 獨佔) |
umask=022 | 檔案權限 755,目錄 755 |
dmask=022,fmask=133 | 分別控制目錄/檔案權限 (更精細) |
locale=zh_TW.UTF-8 | 正確顯示中文檔名 |
windows_names | 禁止建立 Windows 不合法檔名 (含 : * ? " < > |) |
noatime | 不更新 access time,減少寫入 |
ro | 唯讀掛載 (故障救援時建議) |
UUID=1234-5678 /mnt/win_disk ntfs-3g defaults,uid=1000,gid=1000,umask=022,locale=zh_TW.UTF-8,windows_names,noatime 0 0
0:不由 dump 備份0:開機不檢查 fsck (NTFS 無 fsck 工具)測試:mount -a 若無錯誤即生效。
| 現象 | 原因 | 解決 |
|---|---|---|
| The disk contains an unclean file system | Windows 快速啟動/休眠導致 NTFS 標記髒 | 在 Windows 完整關機 (Shift+關機) 或 powercfg /h off 關閉快速啟動;或掛載加 remove_hiberfile 選項 (會刪除休眠檔) |
| Permission denied | uid/gid/umask 不匹配 | 調整掛載選項 uid/gid 為實際用戶 |
| 中文檔名亂碼 | locale 未指定 | 加上 locale=zh_TW.UTF-8 (或 zh_CN.UTF-8) |
| 掛載後讀寫極慢 | FUSE 用戶態檔案系統開銷 | 加 big_writes、max_read=1M;或改用 Windows 端 SMB 共享 |
# 唯讀掛載備份資料
mount -t ntfs-3g -o ro,uid=1000,gid=1000 /dev/sdb1 /mnt/win_disk
# 備份完成後,在 Windows 下執行 chkdsk /f 修復