Ext4 檔案系統創作者 Theodore Ts'o 關於 ext4、BcacheFS 檔案系統和核心開發歷程的思考譯文 LinuxZFS、行為準則與檔案系統概述:
關於ext4開發.
每個 ext4 核心版本都有超過六位貢獻者。目前,我大部分的時間都花在程式碼審查、運行測試和改進測試應用程式上。KVM,gce,qemu,android}-xfstests。我非常依賴兩三位在 SUSE 和 IBM 工作的開發人員,他們會幫助我進行程式碼審查。
關於 BcacheFS
公平地說,bcachefs 並不是一個完全獨立的專案 - 例如,Kent 是 72 和 6.11 核心版本之間 6.12% 補丁的作者,而在同一時期的 103 個 ext4 補丁中,我是作者正好是 0%。這是因為我堅信程式設計是一項團隊運動,而我擔任技術主管的工作就是授權 ext4 成員盡最大努力改進檔案系統。我們每週舉行一次會議,Darrick Wong,一位高級XFS 開發人員和前XFS 維護者,參加了這些會議- 眾所周知,我幫助他解決了XFS 測試問題,Darrick 幫助我解決了各種ext4 測試問題,甚至也審查了一些補丁 ext4.我們互相合作,這很好。
我將把它留給其他人來決定他們是否願意將他們的數據信任給一個孤獨的熱門程序員,他很可能比我更有才華,但我會給你一個提示- 你可以通過以下方式“欺騙」組建團隊來解決問題。您不必獨自完成。當然,要做到這一點,你需要知道如何激發他人的最佳能力,並且需要共同努力。在郵件清單上互相禮貌也沒有壞處。
關於 ext4 的核心、CoC、特性和未來
Ext4確實新增了一些功能,但這些功能之所以受到企業的青睞,是因為從成本效益的角度來看,開發這些功能的投資報酬率是合理的。例如,fscrypt和不區分大小寫的目錄功能對企業來說非常有用。 Android 以及 Chrome OS,並且至少部分資金來自這些開發團隊(Steam 也關注大小寫折疊問題,並資助了其中一位工程師)。我們希望添加對無約束寫入的支持,因為它將提高基於雲端的模擬區塊設備上的資料庫效能,在這些裝置上可以保證 16k 原子寫入,從而消除 MySQL 和 PostgreSQL 中的雙緩衝。
(實際上,亞馬遜和谷歌可以透過假設亞馬遜EBS 和谷歌持久磁碟的工作方式,在他們自己的DBMS 產品中做到這一點,但我們希望以更通用的方式來做到這一點,從長遠來看,這種方式更易於維護)。它不像轉發連結那麼有吸引力,但投資回報率更容易證明其合理性,因為成本較低(企業部署的開發、測試和資格認證工作較少),而且收益更容易量化。對於這種生產力功能來說,「我可以在五年內節省XX個全職軟體工程師的工資成本」之類的事情更容易做到。
相比之下,引用連結很有趣,但我還沒有找到願意支付開發成本的客戶,也沒有找到一家相信如果他們將引用連結添加到 ext4 的客戶會購買更多產品的公司。這聽起來可能非常企業化,但有一個故事講述了 ZFS 工程師如何從頭開始一個項目,沒有徵求管理層的許可或沒有獲得銷售人員的意見,並向 Sun 展示了實際上是既成事實的情況。
聽起來很棒,但別忘了Sun最終還是虧損了,直到被迫賣給另一家公司,支持ZFS的工程團隊也已經不存在了。在ZFS發布前後,我參與了一項公司範圍內的研究,旨在確定投資AIX檔案系統功能是否有意義。 Linux ——我們最終得出結論:不,投資報酬率很低,新的檔案系統功能不會帶來更多客戶購買IBM的硬體、軟體或系統。 IBM或許曾經陷入困境,但它依然存在,而Sun已經不在了。
大約在同一時間,幾家公司的代表 Linux各公司齊聚一堂,商討如何 Linux 將會與 ZFS 競爭。正是在這次會議上,有人提出 btrfs 將是長期解決方案,而 ext4 將是短期解決方案,它將提供諸如即時調整大小、64 位元區塊編號以及 ext3 所缺乏的傳統舊式 Unix 作業系統中的其他功能。
在那次會議上,我被要求確定創建一個全新的檔案系統需要什麼。我做了一些研究,了解了創建 IBM 的 GPFS 和 JFS、Digital 的 advfs 等檔案系統需要花費多少精力,並估計 Sun 建立 ZFS 並使該檔案系統進入生產就緒狀態需要花費多少精力。我得到的答案大約是 100 人年,最低估計為 50 人年,最高估計為 200 人年(但這是針對 GPFS 的,它是一個群集文件系統,因此要復雜得多)。
我在一次會議上提出了這個問題,英特爾的一些高級工程師說:「不,不要告訴高階主管這件事,因為他們永遠不會批准這個專案!告訴他們 btrfs 將在 18 個月內準備好。我會讓人們決定 btrfs 何時達到「企業就緒」狀態,特別是對於那些旨在與 ZFS 競爭的性感的新高級功能,但我認為這不是 18 個月這一點值得爭論從現在開始。
甚至在Sun公司解散之前,許多派代表參加會議的公司就拒絕讓他們的工程師參與btrfs項目,當然也無濟於事。但這可能是因為公司是理性的組織,它們會根據投資回報率做出自己的決定,而資助一個新的文件系統遠不如告訴人們…來得有意義。 Linux ZFS將會得到回應。
回想起來,雖然 ZFS 擁有這些非常酷的功能,但它們不足以讓大多數用戶選擇 Solaris 而不是購買更便宜的 x86 平台並自行安裝。 Linux當Sun公司決定嘗試OpenSolaris和Solaris x86策略時,一切都為時已晚。網路效應巨大,而x86策略也無法解決Sun公司如何支付所有參與Solaris開發的天才工程師的薪水這一問題。相比之下,購買一台價值5000美元的x86伺服器並不能帶來很高的銷售回報率。 服務器 售價 10 萬美元的 SunFire E100000k Sparc,Sun 公司將其命名為「dot Com」中的「dot」。
關鍵是,現實世界中的工程是一種權衡,而商業現實是這種權衡的一部分。對於我選擇吃飯並且我想賺到足夠的錢以便有一天退休這一事實,我沒有任何歉意。反過來,這意味著我必須充分了解我如何為雇主帶來至少 10 倍於我薪水的價值。如果我能做到這一點,同時仍然從事開源工作並幫助其他公司賺錢,以便他們願意為 ext4 做出貢獻,那麼,這就是挑戰的一部分,也是我喜歡從事開源工作的原因。
回到行為準則,我想說,幾乎所有主流文件系統的維護者都支持該準則,並非出於某種軟弱的自由主義考量。而是因為我們需要每一位願意為我們的專案做出貢獻的工程師,而我們大多數人都見過那些拒絕為我們的專案工作的人。 Linux 並切換到了其他作業系統(我知道有一個人切換到了 Windows 是一位優秀的核心開發人員 Linux 在 IBM Linux 技術中心)或參與內部項目,但沒有參與任何需要與 LKML 互動的項目,因為郵件清單中的幾個人創造了一種有毒的環境。
在某些情況下,這種擔心是沒有根據的;例如,Linus 對一位高級開發人員大喊大叫,而該開發人員確實應該更了解情況,而且在大多數情況下,Linus 曾親自見過他,並且他們已經建立了關係。問題是,新人不知道這一點,並且害怕——「如果萊納斯像對待史蒂夫一樣當眾羞辱我怎麼辦?」而沒有意識到實際上這不會發生。這就是我們擁有 CoC 的原因;這不是為了我們的高級工程師,而是為了支持我們團隊中的年輕工程師,我們希望培訓他們在退休時接替我們,或者我們被公共汽車撞了,或者我們離開這個凡人世界。
不要忘記創建可供企業環境使用的檔案系統需要 50-100 人年的工作。我們需要我們能找到的所有工程師,而且我們中的許多人在業餘時間做額外的工作,因為我們關心。建立高品質的文件系統需要團隊的努力,我們需要每一位有才華的工程師。即使工程師是超級 10 倍程式設計師,如果他最終嚇跑了一群可能從事測試、性能調整等工作的其他工程師,那麼讓某人成為混蛋是不值得的。
來源: opennet.ru
