Linux中國

如何使用原生 NTFS 驅動替代舊版 FUSE NTFS 驅動

NTFS 是 Windows NT 系列操作系統支持的磁碟文件系統格式,它是一個特別為網路和磁碟配額、文件加密等管理安全特性設計的文件系統。而 Linux 內核中新進入主線支持的 NTFS3 驅動是一個功能齊全的 NTFS 驅動程序,該驅動程序適用於最高的 NTFS 3.1 版本。

簡介

最初,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 驅動的掛載方式是:

# mount -t ntfs-3g /dev/sdxY /mnt

現在只需要將 ntfs-3g 替換為 ntfs3 即可:

# mount -t ntfs3 /dev/sdxY /mnt

-t 指出文件系統類型,/dev/sdxY 是你的 NTFS 卷(分區)的路徑,可以使用 lsblk 命令查看。/mnt 是掛載的目標文件夾。

如果需要指定掛載參數,可使用 -o 指定參數,如:

# mount -t ntfs3 -o iocharset=utf8,umask=22,prealloc /dev/sdxY /mnt

這裡的 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 表示不備份、不檢查。

掛載參數說明

參數 解釋
iocharset=name 此選項告知驅動程序如何解釋路徑字元串,並將其轉換為 Unicode 或返回。如果未設置此選項,將使用默認代碼頁。示例:iocharset=utf8
uid= 掛載用戶 ID
gid= 掛載組 ID
umask= 控制裝載 NTFS 卷後創建的文件/目錄的默認許可權。
dmask= fmask 只適用於文件,dmask 只適用於目錄,而不是指定同時適用於文件和目錄的 umask
fmask= 見上
noacsrules 「無訪問規則」裝載選項將文件/文件夾的訪問許可權設置為 777,所有者/組設置為 root。此裝載選項吸收所有其他許可權。文件/文件夾的許可權更改將報告為成功,但仍將保持 777。所有者/組更改將報告為成功,但他們將保留為 root 用戶。
nohidden Linux 下不會顯示具有 Windows 特定隱藏(FILE_ATTRIBUTE_HIDDEN)屬性的文件。
sys_immutable 具有 Windows 特定系統(FILE_ATTRIBUTE_SYSTEM)屬性的文件將標記為系統不可變文件。
discard 支持 TRIM 命令以提高刪除操作的性能,建議將其用於固態驅動器(SSD)。
force 即使卷被標記為臟,也強制驅動程序裝載分區。不建議使用。
sparse 創建稀疏的新文件。
showmeta 使用此參數可顯示已裝入 NTFS 分區上的所有元文件(系統文件)。默認情況下,所有元文件都是隱藏的。
prealloc 當寫入時文件大小增加時,為文件過度預分配空間。減少對不同文件執行並行寫入操作時的碎片。
acl 支持 POSIX ACL(訪問控制列表)。如果內核支持,則有效。不要與 NTFS ACL 混淆。指定為 acl 的選項支持 POSIX acl。

NTFS3 的優點

NTFS3 是內核態的驅動,ntfs3 比 ntfs-3g 無論是速度還是負載都要好上不少。

已經有諸多網友做過測試:

除了性能更好以外,NTFS3 還支持掛載用戶和文件許可權管理等功能。具體使用方法可以自行學習 giduid 以及 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 驅動了,我覺得你也不妨嘗試一下。

作者簡介:一個喜歡瞎鼓搗的醫學生

via: https://www.insidentally.com/articles/000029/

作者:insidentally 編輯:wxy

本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國