Перевод размышлений Теодора Тс’о (Theodore Ts’o), создателя файловой системы Ext4, о разработке ext4, файловой системе BcacheFS, ядре Linux, ZFS, кодексе поведения и файловых системах в целом:
關於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 также беспокоился о сворачивании регистра и поддержал одного из инженеров). Мы хотим добавить поддержку записи без разрыва (untorn), потому что это улучшит производительность баз данных на облачных эмулируемых блочных устройствах, где можно гарантировать 16k атомарных записей, что позволит избавиться от двойной буферизации в MySQL и PostgreSQL.
(實際上,亞馬遜和谷歌可以透過假設亞馬遜EBS 和谷歌持久磁碟的工作方式,在他們自己的DBMS 產品中做到這一點,但我們希望以更通用的方式來做到這一點,從長遠來看,這種方式更易於維護)。它不像轉發連結那麼有吸引力,但投資回報率更容易證明其合理性,因為成本較低(企業部署的開發、測試和資格認證工作較少),而且收益更容易量化。對於這種生產力功能來說,「我可以在五年內節省XX個全職軟體工程師的工資成本」之類的事情更容易做到。
相比之下,引用連結很有趣,但我還沒有找到願意支付開發成本的客戶,也沒有找到一家相信如果他們將引用連結添加到 ext4 的客戶會購買更多產品的公司。這聽起來可能非常企業化,但有一個故事講述了 ZFS 工程師如何從頭開始一個項目,沒有徵求管理層的許可或沒有獲得銷售人員的意見,並向 Sun 展示了實際上是既成事實的情況。
Звучит здорово, но если вспомнить, что в итоге Sun стала терять деньги, пока не была вынуждена продать себя другой компании, и фактически инженерная организация, поддерживающая ZFS, больше не существует. Примерно в то время, когда была анонсирована ZFS, я участвовал в исследовании всей компании на предмет того, имеет ли смысл инвестировать в функции файловой системы для AIX и Linux — и мы пришли к выводу, что нет, окупаемость инвестиций невелика, а новые функции файловой системы не приведут к увеличению числа клиентов, покупающих оборудование, программное обеспечение или системы IBM. Возможно, для IBM настали тяжёлые времена, но она все ещё существует, а Sun — нет.
Примерно в это же время представители нескольких Linux-компаний собрались вместе, чтобы придумать, как Linux будет конкурировать с ZFS. Именно на этой встрече была выдвинута идея, что btrfs будет долгосрочным ответом, а ext4 — краткосрочным решением, которое обеспечит поддержку таких вещей, как изменение размера в режиме реального времени, 64-битные номера блоков и другие вещи, которые были в традиционных Legacy Unix OS и которых не было в ext3.
在那次會議上,我被要求確定創建一個全新的檔案系統需要什麼。我做了一些研究,了解了創建 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. Покупка x86-сервера за 5000 долларов не даёт большой рентабельности продаж по сравнению с 服務器 售價 10 萬美元的 SunFire E100000k Sparc,Sun 公司將其命名為「dot Com」中的「dot」。
關鍵是,現實世界中的工程是一種權衡,而商業現實是這種權衡的一部分。對於我選擇吃飯並且我想賺到足夠的錢以便有一天退休這一事實,我沒有任何歉意。反過來,這意味著我必須充分了解我如何為雇主帶來至少 10 倍於我薪水的價值。如果我能做到這一點,同時仍然從事開源工作並幫助其他公司賺錢,以便他們願意為 ext4 做出貢獻,那麼,這就是挑戰的一部分,也是我喜歡從事開源工作的原因。
И, возвращаясь к Кодексу поведения, скажу, что почти все мейнтейнеры основных файловых систем поддержали Кодекс не из-за каких-то вялых либеральных соображений. Это потому, что нам нужен каждый инженер, готовый внести свой вклад в наш проект, и большинство из нас видели людей, которые отказывались работать в Linux и переходили на другие операционные системы (я знаю одного человека, который перешёл на Windows и был ценным разработчиком ядра Linux в IBM Linux Technology Center) или работали над внутренними проектами, но не над тем, что требовало взаимодействия с LKML, из-за токсичной среды нескольких людей в списке рассылки.
在某些情況下,這種擔心是沒有根據的;例如,Linus 對一位高級開發人員大喊大叫,而該開發人員確實應該更了解情況,而且在大多數情況下,Linus 曾親自見過他,並且他們已經建立了關係。問題是,新人不知道這一點,並且害怕——「如果萊納斯像對待史蒂夫一樣當眾羞辱我怎麼辦?」而沒有意識到實際上這不會發生。這就是我們擁有 CoC 的原因;這不是為了我們的高級工程師,而是為了支持我們團隊中的年輕工程師,我們希望培訓他們在退休時接替我們,或者我們被公共汽車撞了,或者我們離開這個凡人世界。
不要忘記創建可供企業環境使用的檔案系統需要 50-100 人年的工作。我們需要我們能找到的所有工程師,而且我們中的許多人在業餘時間做額外的工作,因為我們關心。建立高品質的文件系統需要團隊的努力,我們需要每一位有才華的工程師。即使工程師是超級 10 倍程式設計師,如果他最終嚇跑了一群可能從事測試、性能調整等工作的其他工程師,那麼讓某人成為混蛋是不值得的。
來源: opennet.ru
