如何使用原生 NTFS 驅動替代舊版 FUSE NTFS 驅動
簡介
最初,Linux 內核沒有 NTFS 的原生支持,后來對 NTFS 的支持也僅提供了只讀功能。來自 Tuxera 的 NTFS-3G
是之前主流的解決方案,但在實際使用中也存在一些問題。NTFS-3G 是借助 Linux 的用戶空間文件系統(FUSE)模塊在用戶層實現的一個對
NTFS 支持的文件系統,其對 NTFS 的訪問邏輯代碼都是在用戶層代碼實現的。
在 NTFS3 出現之前,Linux 上使用 NTFS 主要問題還是缺乏穩定且功能齊全的讀/寫支持。
2020 年,Paragon 軟件公司做出了一個驚人的決定:嘗試將之前只提供給商業客戶的 NTFS3 驅動程序貢獻到 Linux
主線。最終,在經過多輪審核和修改之后,Linux 內核 5.15 合并了 Paragon 提供的 NTFS3
內核驅動,它擁有更高的性能和更多的特性。
- 該驅動程序實現了對 NTFS 文件系統中的正常、稀疏和壓縮文件的讀/寫支持。
- 支持本地日志回放。
- 支持已掛載的 NTFS 卷的 NFS 導出。
- 支持文件和文件夾的權限管理。
使用 ntfs3 驅動替換 ntfs-3g 掛載 windows NTFS 分區
如何使用 NTFS3 驅動掛載 NTFS 卷
使用 NTFS3 驅動掛載時使用的文件系統類型是 ??ntfs3?
?。
手動掛載
以前使用 NTFS-3g 驅動的掛載方式是:
現在只需要將 ??ntfs-3g?
?? 替換為 ??ntfs3?
? 即可:
??-t?
?? 指出文件系統類型,??/dev/sdxY?
?? 是你的 NTFS 卷(分區)的路徑,可以使用 ??lsblk?
?? 命令查看。??/mnt?
? 是掛載的目標文件夾。
如果需要指定掛載參數,可使用 ??-o?
? 指定參數,如:
這里的 ??iocharset=utf8,umask=22,prealloc?
? 掛載參數,詳見后文解釋。
開機自動掛載
如需在開機時自動掛載,可編輯 ??/etc/fstab?
? 文件,添加如下行:
UUID=**** /data ntfs3 iocharset=utf8,umask=0,prealloc 0 0
其中 ??UUID=****?
?? 是指定卷(分區)的 UUID。使用 ??UUID?
?? 的好處在于它們與磁盤掛載順序無關。如果你在 BIOS 中改變了你的存儲設備順序,或是重新拔插了存儲設備,或是一些 BIOS 可能會隨機地改變存儲設備的順序,那么用 ??UUID?
?? 來表示指定卷(分區)會更有效。可以使用 ??blkid?
?? 命令查看 ??UUID?
? 。
??/data?
?? 是掛載位置。本示例的位置是 ??/data?
?,你需要提前創建這個文件夾。
后面的選項都是掛載參數,參見后文介紹。
最后兩個 ??0 0?
?? ,表示是否備份和是否檢查。??0 0?
? 表示不備份、不檢查。
掛載參數說明
< 如顯示不全,請左右滑動 >
參數 | 解釋 |
? | 此選項告知驅動程序如何解釋路徑字符串,并將其轉換為 Unicode 或返回。如果未設置此選項,將使用默認代碼頁。示例:? |
? | 掛載用戶 ID |
? | 掛載組 ID |
? | 控制裝載 NTFS 卷后創建的文件/目錄的默認權限。 |
? | ? |
fmask= | 見上 |
? | “無訪問規則”裝載選項將文件/文件夾的訪問權限設置為 777,所有者/組設置為 root。此裝載選項吸收所有其他權限。文件/文件夾的權限更改將報告為成功,但仍將保持 777。所有者/組更改將報告為成功,但他們將保留為 root 用戶。 |
? | Linux 下不會顯示具有 Windows 特定隱藏(? |
? | 具有 Windows 特定系統(? |
? | 支持 TRIM 命令以提高刪除操作的性能,建議將其用于固態驅動器(SSD)。 |
? | 即使卷被標記為臟,也強制驅動程序裝載分區。不建議使用。 |
? | 創建稀疏的新文件。 |
? | 使用此參數可顯示已裝入 NTFS 分區上的所有元文件(系統文件)。默認情況下,所有元文件都是隱藏的。 |
? | 當寫入時文件大小增加時,為文件過度預分配空間。減少對不同文件執行并行寫入操作時的碎片。 |
? | 支持 POSIX ACL(訪問控制列表)。如果內核支持,則有效。不要與 NTFS ACL 混淆。指定為 acl 的選項支持 POSIX acl。 |
NTFS3 的優點
NTFS3 是內核態的驅動,ntfs3 比 ntfs-3g 無論是速度還是負載都要好上不少。
已經有諸多網友做過測試:
除了性能更好以外,NTFS3 還支持掛載用戶和文件權限管理等功能。具體使用方法可以自行學習 ??gid?
??、??uid?
?? 以及 ??umask?
? 的用法。
另外 NTFS3 還支持 NTFS 的 ??prealloc?
? 特性,可以大幅減少文件碎片的產生。
關于 NTFS3 驅動無人維護的問題
Paragon 于 2020 年在 GNU 通用許可證下發布了 NTFS3 驅動程序,在開源后的一年里,NTFS3 的驅動經過了多輪審查和修改,用來提高代碼質量。直到 2021 年合并進入內核主線。
但是自從該驅動 2021 年在 Linux 5.15 中最終被主線化以來,至今為止,在接近一年的時間里,還沒有任何重大的錯誤修復被送入驅動。
有人推測是該驅動的維護者 Konstantin Komarov 身處俄羅斯,受到俄烏戰爭影響的原因。
隨后包括 Linus Torvalds 在內的諸多程序員都對此事表達了關切,并且愿意參與到貢獻中來。
現在,我們看到 Paragon 軟件公司的 Konstantin Komarov 在因休息和其他事務而離開后,又重新活躍在內核郵件列表中。Komarov 在 2022 年 6 月 3 日為 Linux 5.19 的合并窗口提交了一批 NTFS3 的修正。
我相信 ntfs3 未來會越來越好。并且目前,ntfs3 已經是 Linux 中最好用 NTFS 驅動了,我覺得你也不妨嘗試一下。