序
從最初的檔案係統雛形到現在,檔案係統已經發展六七十年瞭。檔案係統的特性變得越來越豐富,適用的場景也越來越多。目前,傳統檔案係統除個別網際網路業務外,基本上能滿足現有各種類型業務的需求。同時,很多應用也都直接建構在檔案係統之上。特別是非結構化的資料,通常都是以檔案的形式儲存在檔案係統中的,如音訊、視訊和日誌等。
隨著網際網路技術的發展,網際網路應用對傳統檔案係統提齣更高的要求,傳統檔案係統很難滿足網際網路業務的需求。很多網際網路公司基於自身業務特性建構瞭自己的儲存係統。網際網路儲存係統更多的是基於自己業務特點簡化儲存係統的某些方麵,而增強另外一些方麵的。比如,對檔案係統附加特性進行弱化,而對性能和擴充性進行增強等。雖然網際網路公司的儲存係統都是一些私有化的儲存係統,但核心技術並沒有太大變化。
網際網路領域有很多典型的儲存係統,其中比較著名的有Google 的GFS、開放原始碼產品HDFS、Facebook 的Haystack 及淘寶的TFS等。每一種儲存係統都是針對其應用進行瞭特殊的最佳化,通常隻能應用在某種特定的業務模式中。
以Haystack 儲存係統為例,其主要應用在Facebook 社交軟體的照片應用中。照片應用有一個非常典型的特徵是一次寫入、多次讀取、不會修改。而該應用對檔案係統的其他特性則沒有要求,如擴充屬性和快照等。
雖然檔案係統具有非常廣泛的應用,但是目前中文並沒有一本係統介紹檔案係統的書籍。作者在學習檔案係統時曾經閱讀很多電腦書籍,發現它們大多隻是對檔案係統進行瞭比較簡要的介紹。比如,一些作業係統類的書籍,其中某些章節對檔案係統的概念和原理進行瞭介紹,但距離實踐還有一些差距,特別是與現在網際網路相關的技術相差甚遠。
透過學習本書內容,希望讀者能夠對檔案係統技術有一個全麵深入的瞭解,並結閤原始程式碼進行實例解析。同時,本書對檔案係統在網際網路和雲端運算等領域的應用進行瞭進一步的介紹和原理分析,讓讀者對檔案係統技術在最先進的應用有所瞭解。
☘ 主要內容
本書分為七章,第一章和第二章主要介紹檔案係統的概念、原理和基本使用,希望讀者能夠對檔案係統有整體、基本的認識。第三章和第四章主要對本地檔案係統的關鍵技術、原理介紹,並且結閤實例進行程式分析。本地檔案係統是學習其他檔案係統的基礎,因此這兩章進行瞭詳細的介紹。第五章主要對傳統網路檔案係統介紹,並結閤NFS 的程式介紹瞭實現細節。第六章主要對分散式網路檔案係統介紹,並結閤目前常用的分散式檔案係統CephFS 和GlusterFS 介紹瞭具體實現。第七章主要介紹瞭檔案係統的其他形態,對目前網際網路應用最廣的物件儲存進行深入的介紹。
☘ 適閤讀者群
雖然本書是介紹檔案係統知識的專業書籍,但是並非隻針對儲存係統開發人員。軟體開發人員、運行維護人員和係統架構師等都可以從本書獲得有用的知識。
■軟體開發人員:瞭解檔案係統的原理對軟體開發人員如何閤理使用檔案係統的相關API 會非常有幫助。比如,軟體開發人員不清楚檔案係統快取的存在,那麼在使用API 時可能就不知道如何保證停電時資料不遺失。
■運行維護人員:有一些係統參數是與檔案係統相關的,如當處理程序打開時最大檔案的數量。如果能夠對檔案係統的原理有所瞭解,相信可以幫助運行維護人員閤理地設定係統參數。
■係統架構師:檔案係統中的很多技術是通用技術,瞭解這些技術可以說明係統架構師進行其他係統的設計,還可以說明係統架構師將檔案係統中的一些技術遷移到其他軟體設計中。
☘ 軟體及程式版本
本書涉及的軟體比較多,分別是Linux 核心、Ceph、GlusterFS 和NFSGanesha等。本書涉及的Linux 核心程式為5.8 版本,涉及的Ceph 相關程式為13.2(Mimic)版本,涉及的GlusterFS 相關程式為release-8版本,涉及的NFS-Ganesha 的程式為2.8.3 版本。本書介紹從本地檔案係統到分散式檔案係統等許多技術,涉及的技術點比較多。作者在說明時儘量結閤原始程式碼和圖示將相關內容解釋清楚。由於作者水準有限,書中難免存在一些疏漏和不足,希望同行專傢和讀者們給予批評與指正。
特別要感謝電子工業齣版社的林瑞和編輯,沒有他的鼓勵和指導,就沒有本書的問世。在撰寫本書的過程中,林瑞和編輯給予瞭很多非常專業的建議。還要感謝我的好友劉佔甯,他對整本書稿進行瞭很認真的閱讀,無論是遣詞造句,還是技術內容的準確性方麵都提齣瞭很多建議,使得本書的內容更加精準。我在撰寫本書時獲得瞭傢人,特別是我的妻子路歡歡的很大支持,她承擔瞭很多的傢務,讓我有更多的時間專注寫作。另外,還有很多其他朋友和同事對本書提瞭建議,在此一併錶示感謝!
張書寧