☆★☆★【檔案系統技術精解!】★☆★☆
了解所有檔案原理,技術內幕一網打盡!檔案系統可以說是電腦軟體系統中最複雜的子系統,也是作業系統的基石,了解其中原理及應用可以幫助使用者解決各種類型的問題。檔案系統的實現與運算資源管理、記憶體資源管理、網路資源管理相互作用,了解這些充滿歷史的故事和智慧的技術方案不但實用,在深入學習電腦各種知識如AI、大數據時,心中更有底,知道考慮的重點是什麼。在網際網路與自媒體時代,知識的獲取變得容易和便捷,資訊的產生、多樣性和品質、獲得呈爆炸性增長。當今個人電腦的硬碟即將進入PB時代,雲端儲存更早就突破這個數字了。本書讓你有機會重新複習各大作業系統的檔案系統,不管是Linux、MacOS或是Windows,一窺我們眼中已具體化的資料,是如何用0/1方式儲存在磁單位或電子單位中,而最新一代的網路檔案系統NFS、SMB,甚至更進一步的分散式雲端檔案系統GFS、CephFS、GlusterFS,甚至是Amazon S3系統,都收納至本書中,從本機到雲端,從雲端到分散,一覽無遺。
本書看點✪檔案系統的概念、原理和基本使用
✪本地檔案系統的關鍵技術、原理介紹
✪傳統網路檔案系統介紹
✪分散式網路檔案系統介紹
✪NFS及SMB
✪CephFS和GlusterFS
✪Amazon S3
作者簡介:
張書寧
戴爾科技(Dell Technologies)首席軟體開發工程師,負責公司核心存儲產品Unity和PowerStore的研發工作。
先後就職於華為、甲骨文(Oracle)、戴爾科技等世界五百強公司,曾負責分散式存儲產品FusionStorage及中端企業級存儲產品Unity和PowerStore等的系統設計和開發工作,深耕存儲領域十幾載。
作者序
從最初的檔案系統雛形到現在,檔案系統已經發展六七十年了。檔案系統的特性變得越來越豐富,適用的場景也越來越多。目前,傳統檔案系統除個別網際網路業務外,基本上能滿足現有各種類型業務的需求。同時,很多應用也都直接建構在檔案系統之上。特別是非結構化的資料,通常都是以檔案的形式儲存在檔案系統中的,如音訊、視訊和日誌等。
隨著網際網路技術的發展,網際網路應用對傳統檔案系統提出更高的要求,傳統檔案系統很難滿足網際網路業務的需求。很多網際網路公司基於自身業務特性建構了自己的儲存系統。網際網路儲存系統更多的是基於自己業務特點簡化儲存系統的某些方面,而增強另外一些方面的。比如,對檔案系統附加特性進行弱化,而對性能和擴充性進行增強等。雖然網際網路公司的儲存系統都是一些私有化的儲存系統,但核心技術並沒有太大變化。
網際網路領域有很多典型的儲存系統,其中比較著名的有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 版本。
本書介紹從本地檔案系統到分散式檔案系統等許多技術,涉及的技術點比較多。作者在說明時儘量結合原始程式碼和圖示將相關內容解釋清楚。由於作者水準有限,書中難免存在一些疏漏和不足,希望同行專家和讀者們給予批評與指正。
特別要感謝電子工業出版社的林瑞和編輯,沒有他的鼓勵和指導,就沒有本書的問世。在撰寫本書的過程中,林瑞和編輯給予了很多非常專業的建議。還要感謝我的好友劉佔甯,他對整本書稿進行了很認真的閱讀,無論是遣詞造句,還是技術內容的準確性方面都提出了很多建議,使得本書的內容更加精準。
我在撰寫本書時獲得了家人,特別是我的妻子路歡歡的很大支持,她承擔了很多的家務,讓我有更多的時間專注寫作。另外,還有很多其他朋友和同事對本書提了建議,在此一併表示感謝!
張書寧
從最初的檔案系統雛形到現在,檔案系統已經發展六七十年了。檔案系統的特性變得越來越豐富,適用的場景也越來越多。目前,傳統檔案系統除個別網際網路業務外,基本上能滿足現有各種類型業務的需求。同時,很多應用也都直接建構在檔案系統之上。特別是非結構化的資料,通常都是以檔案的形式儲存在檔案系統中的,如音訊、視訊和日誌等。
隨著網際網路技術的發展,網際網路應用對傳統檔案系統提出更高的要求,傳統檔案系統很難滿足網際網路業務的需求。很多網際網路公司基於自身業務特性建構了自己的儲存系統。網際網路儲存系統更多的是基...
目錄
01 從檔案系統是什麼說起
1.1 什麼是檔案系統
1.2 常見檔案系統及分類
02 知其然-- 如何使用檔案系統
2.1 巧婦之炊-- 準備開發環境
2.2 檔案內容的存取-- 讀/ 寫檔案
2.3 如何遍歷目錄中的檔案
2.4 格式化檔案系統與掛載
2.5 檔案系統與許可權管理
2.6 檔案系統的鎖機制
2.7 檔案系統的擴展屬性
2.8 檔案的零拷貝
03 知其所以然-- 本地檔案系統原理及核心技術
3.1 Linux 檔案系統整體架構簡介
3.2 本地檔案系統的關鍵技術與特性
3.3 常見本地檔案系統簡介
04 從理論到實戰-- Ext2 檔案系統程式詳解
4.1 本地檔案系統的分析方法與工具
4.2 從Ext2 檔案系統磁碟佈局說起
4.3 Ext2 檔案系統的根目錄與目錄資料佈局
4.4 Ext2 檔案系統的掛載
4.5 如何建立一個檔案
4.6 Ext2 檔案系統刪除檔案的流程
4.7 Ext2 檔案系統中檔案的資料管理與寫資料流程
4.8 讀取資料的流程分析
4.9 如何分配磁碟空間
4.10 Ext2 檔案系統的擴展屬性
4.11 許可權管理程式解析
4.12 檔案鎖程式解析
05 基於網路共用的網路檔案系統
5.1 什麼是網路檔案系統
5.2 網路檔案系統與本地檔案系統的異同
5.3 常見的網路檔案系統簡析
5.4 網路檔案系統關鍵技術
5.5 準備學習環境與工具
5.6 網路檔案系統實例
5.7 NFS 服務端及實例解析
06 提供橫向擴展的分散式檔案系統
6.1 什麼是分散式檔案系統
6.2 分散式檔案系統與網路檔案系統的異同
6.3 常見分散式檔案系統
6.4 分散式檔案系統的橫向擴展架構
6.5 分散式檔案系統的關鍵技術
6.6 分散式檔案系統實例之CephFS
6.7 分散式系統實例之GlusterFS
07 百花爭豔-- 檔案系統的其他形態
7.1 使用者態檔案系統框架
7.2 物件儲存與常見實現簡析
A 參考文獻
01 從檔案系統是什麼說起
1.1 什麼是檔案系統
1.2 常見檔案系統及分類
02 知其然-- 如何使用檔案系統
2.1 巧婦之炊-- 準備開發環境
2.2 檔案內容的存取-- 讀/ 寫檔案
2.3 如何遍歷目錄中的檔案
2.4 格式化檔案系統與掛載
2.5 檔案系統與許可權管理
2.6 檔案系統的鎖機制
2.7 檔案系統的擴展屬性
2.8 檔案的零拷貝
03 知其所以然-- 本地檔案系統原理及核心技術
3.1 Linux 檔案系統整體架構簡介
3.2 本地檔案系統的關鍵技術與特性
3.3 常見本地檔案系統簡介
04 從理論到實戰-- Ext2 檔案系統程式詳解
4.1 本地檔案系...