根據我作為在 Windows 工作站上工作的 Java 開發人員的觀察,NTFS 與 Linux 檔案系統相比速度較慢。問題是,NTFS 驅動程式中是否有任何可以手動調整的內容,例如為其提供更多記憶體用於快取?啟用一些實驗演算法?如果這不可用,是否有另一個檔案系統可以在 Windows 上使用,甚至可能是商業檔案系統,它比 NTFS 更快?
要先明確的是,我並不是想要提高 Maven 專案的編譯速度,我希望能獲得作業系統的整體改進。我有一種感覺,與 Linux 檔案系統相比,NTFS 早已過時且緩慢。讓我感到奇怪的是,地球上最受歡迎的作業系統只有一個檔案系統,但仍然需要手動碎片整理。也許有是替代?
更新:根據我的觀察,這是緩慢的。我正在建立/打包一個項目,這意味著磁碟上有大量的讀取/寫入操作。建置系統是跨平台的(Java、Maven),因此我可以在啟動到 Ubuntu 時執行完全相同的操作。
在 Linux 上,我的建置速度至少快了 1/3。因此就有了關於檔案系統的問題。如果放錯地方了,我很抱歉。
答案1
雖然我希望看到 ZFS 之類的東西可用於 Windows 主機,但 NTFS 並不是一個可怕的檔案系統。它支援大多數「現代」檔案系統功能(擴充屬性、日誌、ACL,凡是你能想到的),但它受到資源管理器和大多數其他不支援這些功能的應用程式的阻礙。
絕對會影響其效能的一件事是目錄中的條目“太多”。一旦你在一個目錄中傳遞了數千個條目,一切都會變得緩慢。從字面上看,當發生這種情況時,整台電腦將停止等待 NTFS 建立或刪除條目。
我曾經使用過一個為 .NET 組件產生基於 HTML 的文檔的應用程式;它會為每個屬性、方法、類別、命名空間等建立一個文件。在 NTFS 上建造期間,機器將花費幾個小時。
理論上,Windows 支援檔案系統插件,這將使本機 ZFS、ext3 或任何(甚至 FUSE)成為可能。實際上,API 沒有文件記錄,因此您完全依靠自己。
現在,既然您正在進行 Java 開發,您是否可以在電腦上安裝不同的作業系統,或者在 Windows 之上使用 VM?
另外,您可能想嘗試一些獨立於平台的檔案系統基準測試(iozone、bonnie...可能有更現代的基準測試,我根本不知道,甚至可能有一些是用Java 編寫的)來看看它是否有效實際上是檔案系統阻礙了你,或者是其他原因。過早的優化以及所有這些...
答案2
- 關閉上次訪問時間
- 關閉短檔名
- 關閉刪除通知
- 關閉索引
- 停用日誌記錄
- 停用卷影複製和先前的版本以及配額和共用。
- 啟用繞過遍歷檢查
我想真正的解決方案是重寫您的建置系統,以便它使用本機 Windows 檔案系統 API,而不是可移植性框架下的 unix API(fopen 等)本身。但這不會發生,所以基本上你只能堅持他們認為可以接受的任何性能水平。
通常,當使用最初不是為 Windows 編寫的系統時,您會發現目錄遍歷處理得非常糟糕,因此請確保您有一個非常扁平的目錄樹。
答案3
有一種檔案系統受新的 Windows 作業系統支援並且比 NTFS 更快。這是exFAT。有可能將其用於系統驅動器。但尚不清楚它可能會出現什麼併發症。
不過,您當然可以將它用於其他分割區。隨機讀取/寫入操作速度更快。例如,非常適合 SSD。
答案4
歷史記載:有檔案系統,它在 NTFS 之上添加了一個更具結構化的層,使 Windows 能夠更有效地處理文件內容。
NTFS「真正」的繼承者是參考文獻。它的重點是彈性。它僅適用於 Windows 10 企業版和 Windows 專業工作站版。好的閱讀是NTFS 與 ReFS – 如何決定使用哪一個。