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