關(guān)于我們
書單推薦
新書推薦
|
文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道 讀者對象:本書讀者對象為系統(tǒng)運維人員,以及希望對文件系統(tǒng)進一步了解的技術(shù)人員。有意成為架構(gòu)師的程序員應(yīng)該學(xué)習(xí)本書。其他程序員通過學(xué)習(xí)本書,可以進一步理解文件系統(tǒng)的原理,獲得可以借鑒的開發(fā)經(jīng)驗。
本書通過理論與實踐相結(jié)合的方式,深入淺出地介紹了文件系統(tǒng)的概念、原理和具體實現(xiàn)。本書涵蓋本地文件系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng)、分布式文件系統(tǒng)和對象存儲等內(nèi)容,可以說涵蓋了數(shù)據(jù)持久化文件系統(tǒng)的主要領(lǐng)域。為了使讀者更加深入地理解文件系統(tǒng)的原理,本書不僅介紹了文件系統(tǒng)的原理和關(guān)鍵技術(shù),還結(jié)合開源項目介紹了文件系統(tǒng)的實現(xiàn)細節(jié)。最后,本書介紹了在互聯(lián)網(wǎng)領(lǐng)域廣泛使用的對象存儲、承載海量訪問請求的原理及可存儲海量數(shù)據(jù)的架構(gòu)。希望讀者通過閱讀本書對文件系統(tǒng)有全面、深入的認識。本書既可以作為文件系統(tǒng)及其他存儲系統(tǒng)開發(fā)人員的指導(dǎo)用書,也可以作為軟件架構(gòu)師、程序員和 Linux 運維人員的參考用書。
張書寧戴爾科技(Dell Technologies)首席軟件開發(fā)工程師,負責(zé)公司核心存儲產(chǎn)品Unity和PowerStore的研發(fā)工作。先后就職于華為、甲骨文(Oracle)、戴爾科技等世界五百強公司,曾負責(zé)分布式存儲產(chǎn)品FusionStorage及中端企業(yè)級存儲產(chǎn)品Unity和PowerStore等的系統(tǒng)設(shè)計和開發(fā)工作,深耕存儲領(lǐng)域十幾載。為了答謝廣大讀者,凡購買本書的讀者有機會免費加入作者的交流存儲技術(shù)社群(每季度限100人),在該社群中交流存儲及文件系統(tǒng)相關(guān)技術(shù),或者咨詢問題。公眾號: SunnyZhang的IT世界ID:itworld123關(guān)注公眾號,私信“免費社群”即可獲得免費加入的方法
目 錄
第 1 章 從文件系統(tǒng)是什么說起 ................................................................................... 1 1.1 什么是文件系統(tǒng) ...................................................................................... 1 1.1.1 普通用戶角度的文件系統(tǒng) .......................................................... 3 1.1.2 操作系統(tǒng)層面的文件系統(tǒng) .......................................................... 9 1.1.3 文件系統(tǒng)的基本原理 ................................................................ 12 1.2 常見文件系統(tǒng)及分類 ............................................................................ 13 1.2.1 本地文件系統(tǒng) ............................................................................ 14 1.2.2 偽文件系統(tǒng) ................................................................................ 14 1.2.3 網(wǎng)絡(luò)文件系統(tǒng) ............................................................................ 15 1.2.4 集群文件系統(tǒng) ............................................................................ 16 1.2.5 分布式文件系統(tǒng) ........................................................................ 16 第 2 章 知其然——如何使用文件系統(tǒng)...................................................................... 17 2.1 巧婦之炊——準備開發(fā)環(huán)境 ................................................................. 17 2.2 文件內(nèi)容的訪問——讀/寫文件 ............................................................ 18 2.2.1 文件系統(tǒng)的 API ......................................................................... 18 2.2.2 文件訪問的一般流程 ................................................................ 19 2.2.3 文件內(nèi)容的讀/寫實例 ............................................................... 20 2.2.4 關(guān)于 API 函數(shù)的進一步解釋 .................................................... 22 2.3 如何遍歷目錄中的文件 ........................................................................ 24 2.4 格式化文件系統(tǒng)與掛載 ........................................................................ 27 2.5 文件系統(tǒng)與權(quán)限管理 ............................................................................ 29 2.5.1 Linux 權(quán)限管理簡介 .................................................................. 30 2.5.2 設(shè)置文件的 RWX 權(quán)限 ............................................................. 31 2.5.3 設(shè)置文件的 ACL 權(quán)限 .............................................................. 34 2.6 文件系統(tǒng)的鎖機制 ................................................................................ 37 2.6.1 文件鎖的分類與模式 ................................................................ 37 2.6.2 Linux 文件鎖的使用 .................................................................. 38 2.7 文件系統(tǒng)的擴展屬性 ............................................................................ 41 2.8 文件的零拷貝 ........................................................................................ 42 2.8.1 零拷貝的基本原理 .................................................................... 42 2.8.2 零拷貝的系統(tǒng) API ..................................................................... 44 第 3 章 知其所以然——本地文件系統(tǒng)原理及核心技術(shù) .......................................... 46 3.1 Linux 文件系統(tǒng)整體架構(gòu)簡介 .............................................................. 46 3.1.1 從 VFS 到具體文件系統(tǒng) ........................................................... 48 3.1.2 關(guān)鍵處理流程舉例 .................................................................... 50 3.2 本地文件系統(tǒng)的關(guān)鍵技術(shù)與特性 ........................................................ 61 3.2.1 磁盤空間布局(Layout) ......................................................... 61 3.2.2 文件的數(shù)據(jù)管理 ........................................................................ 69 3.2.3 緩存技術(shù) .................................................................................... 77 3.2.4 快照與克隆技術(shù) ........................................................................ 82 3.2.5 日志技術(shù) .................................................................................... 84 3.2.6 權(quán)限管理 .................................................................................... 85 3.2.7 配額管理 .................................................................................... 89 3.2.8 文件鎖的原理 ............................................................................ 91 3.2.9 擴展屬性與 ADS ....................................................................... 92 3.2.10 其他技術(shù)簡介 .......................................................................... 94 3.3 常見本地文件系統(tǒng)簡介 ........................................................................ 95 3.3.1 ExtX 文件系統(tǒng) ........................................................................... 95 3.3.2 XFS 文件系統(tǒng) ............................................................................ 95 3.3.3 ZFS 文件系統(tǒng) ............................................................................ 96 3.3.4 Btrfs 文件系統(tǒng) ........................................................................... 97 3.3.5 FAT 文件系統(tǒng) ............................................................................ 98 3.3.6 NTFS 文件系統(tǒng) ......................................................................... 98 第 4 章 從理論到實戰(zhàn)——Ext2 文件系統(tǒng)代碼詳解 ................................................. 99 4.1 本地文件系統(tǒng)的分析方法與工具 ........................................................ 99 4.1.1 基于文件構(gòu)建文件系統(tǒng) .......................................................... 100 4.1.2 了解函數(shù)調(diào)用流程的利器 ...................................................... 100 4.2 從 Ext2 文件系統(tǒng)磁盤布局說起 ......................................................... 102 4.2.1 Ext2 文件系統(tǒng)整體布局概述 .................................................. 102 4.2.2 超級塊(SuperBlock) ........................................................... 103 4.2.3 塊組描述符(Block Group Descriptor) ................................ 106 4.2.4 塊位圖(Block Bitmap) ........................................................ 108 4.2.5 inode 位圖(inode Bitmap) ................................................... 109 4.2.6 inode 與 inode 表 ..................................................................... 109 4.3 Ext2 文件系統(tǒng)的根目錄與目錄數(shù)據(jù)布局 .......................................... 113 4.4 Ext2 文件系統(tǒng)的掛載 .......................................................................... 116 4.5 如何創(chuàng)建一個文件 .............................................................................. 117 4.5.1 創(chuàng)建普通文件 .......................................................................... 118 4.5.2 創(chuàng)建軟硬鏈接 .......................................................................... 121 4.5.3 創(chuàng)建目錄 .................................................................................. 125 4.6 Ext2 文件系統(tǒng)刪除文件的流程 .......................................................... 125 4.7 Ext2 文件系統(tǒng)中文件的數(shù)據(jù)管理與寫數(shù)據(jù)流程 .............................. 129 4.7.1 Ext2 文件系統(tǒng)中的文件數(shù)據(jù)是如何管理的 .......................... 129 4.7.2 從 VFS 到 Ext2 文件系統(tǒng)的寫流程........................................ 130 4.7.3 不同寫模式的流程分析 .......................................................... 134 4.7.4 緩存數(shù)據(jù)刷寫及流程 .............................................................. 138 4.8 讀數(shù)據(jù)的流程分析 .............................................................................. 140 4.8.1 緩存命中場景 .......................................................................... 141 4.8.2 非緩存命中場景 ...................................................................... 142 4.8.3 數(shù)據(jù)預(yù)讀邏輯 .......................................................................... 143 4.9 如何分配磁盤空間 .............................................................................. 148 4.9.1 計算存儲路徑 .......................................................................... 150 4.9.2 獲取存儲路徑 .......................................................................... 152 4.9.3 分配磁盤空間 .......................................................................... 153 4.10 Ext2 文件系統(tǒng)的擴展屬性 ................................................................ 154 4.10.1 Ext2 文件系統(tǒng)擴展屬性是怎么在磁盤存儲的 .................... 154 4.10.2 設(shè)置擴展屬性的 VFS 流程 ................................................... 157 4.10.3 Ext2 文件系統(tǒng)擴展屬性接口實現(xiàn) ........................................ 159 4.11 權(quán)限管理代碼解析 ............................................................................ 163 4.11.1 ACL 的設(shè)置與獲取 ............................................................... 163 4.11.2 ACL 權(quán)限檢查 ....................................................................... 164 4.12 文件鎖代碼解析 ................................................................................ 165 4.12.1 flock()函數(shù)的內(nèi)核實現(xiàn) ......................................................... 165 4.12.2 fcntl()函數(shù)的內(nèi)核實現(xiàn) .......................................................... 167 第 5 章 基于網(wǎng)絡(luò)共享的網(wǎng)絡(luò)文件系統(tǒng) ................................................................... 172 5.1 什么是網(wǎng)絡(luò)文件系統(tǒng) .......................................................................... 172 5.2 網(wǎng)絡(luò)文件系統(tǒng)與本地文件系統(tǒng)的異同 .............................................. 174 5.3 常見的網(wǎng)絡(luò)文件系統(tǒng)簡析 .................................................................. 174 5.3.1 NFS 文件系統(tǒng) .......................................................................... 174 5.3.2 SMB 協(xié)議與 CIFS 協(xié)議 .......................................................... 175 5.4 網(wǎng)絡(luò)文件系統(tǒng)關(guān)鍵技術(shù) ...................................................................... 175 5.4.1 遠程過程調(diào)用(RPC 協(xié)議) .................................................. 176 5.4.2 客戶端與服務(wù)端的語言——文件系統(tǒng)協(xié)議 ........................... 177 5.4.3 文件鎖的網(wǎng)絡(luò)實現(xiàn) .................................................................. 178 5.5 準備學(xué)習(xí)環(huán)境與工具 .......................................................................... 179 5.5.1 搭建一個 NFS 服務(wù) ................................................................. 179 5.5.2 學(xué)習(xí)網(wǎng)絡(luò)文件系統(tǒng)的利器 ...................................................... 180 5.6 網(wǎng)絡(luò)文件系統(tǒng)實例 .............................................................................. 181 5.6.1 NFS 文件系統(tǒng)架構(gòu)及流程簡析 .............................................. 181 5.6.2 RPC 協(xié)議簡析 .......................................................................... 185 5.6.3 NFS 協(xié)議簡析 .......................................................................... 186 5.6.4 NFS 協(xié)議的具體實現(xiàn) .............................................................. 191 5.7 NFS 服務(wù)端及實例解析 ...................................................................... 203 5.7.1 NFSD ........................................................................................ 203 5.7.2 NFS-Ganesha ............................................................................ 210 第 6 章 提供橫向擴展的分布式文件系統(tǒng) ............................................................... 216 6.1 什么是分布式文件系統(tǒng) ...................................................................... 216 6.2 分布式文件系統(tǒng)與網(wǎng)絡(luò)文件系統(tǒng)的異同 .......................................... 217 6.3 常見分布式文件系統(tǒng) .......................................................................... 217 6.3.1 GFS ........................................................................................... 218 6.3.2 CephFS ..................................................................................... 219 6.3.3 GlusterFS .................................................................................. 219 6.4 分布式文件系統(tǒng)的橫向擴展架構(gòu) ...................................................... 220 6.4.1 中心架構(gòu) .................................................................................. 220 6.4.2 對等架構(gòu) .................................................................................. 221 6.5 分布式文件系統(tǒng)的關(guān)鍵技術(shù) .............................................................. 222 6.5.1 分布式數(shù)據(jù)布局 ...................................................................... 222 6.5.2 分布式數(shù)據(jù)可靠性(Reliability).......................................... 224 6.5.3 分布式數(shù)據(jù)一致性(Consistency) ....................................... 228 6.5.4 設(shè)備故障與容錯(Fault Tolerance) ...................................... 229 6.6 分布式文件系統(tǒng)實例之 CephFS ........................................................ 230 6.6.1 搭建一個 CephFS 分布式文件系統(tǒng) ....................................... 230 6.6.2 CephFS 分布式文件系統(tǒng)架構(gòu)簡析 ........................................ 231 6.6.3 CephFS 客戶端架構(gòu) ................................................................ 234 6.6.4 CephFS 集群端架構(gòu) ................................................................ 236 6.6.5 CephFS 數(shù)據(jù)組織簡析 ............................................................ 239 6.6.6 CephFS 文件創(chuàng)建流程解析 .................................................... 244 6.6.7 CephFS 寫數(shù)據(jù)流程解析 ........................................................ 251 6.7 分布式系統(tǒng)實例之 GlusterFS ............................................................. 253 6.7.1 GlusterFS 的安裝與使用 ......................................................... 253 6.7.2 GlusterFS 整體架構(gòu)簡析 ......................................................... 257 6.7.3 轉(zhuǎn)換器與轉(zhuǎn)換器樹 .................................................................. 259 6.7.4 GlusterFS 數(shù)據(jù)分布與可靠性 ................................................. 263 6.7.5 GlusterFS 客戶端架構(gòu)與 I/O 流程 .......................................... 268 6.7.6 GlusterFS 服務(wù)端架構(gòu)與 I/O 流程 .......................................... 270 第 7 章 百花爭艷——文件系統(tǒng)的其他形態(tài) ............................................................ 272 7.1 用戶態(tài)文件系統(tǒng)框架 .......................................................................... 272 7.1.1 Linux 中的用戶態(tài)文件系統(tǒng)框架 Fuse ................................... 272 7.1.2 Windows 中的用戶態(tài)文件系統(tǒng)框架 Dokany ......................... 279 7.2 對象存儲與常見實現(xiàn)簡析 .................................................................. 282 7.2.1 從文件系統(tǒng)到對象存儲 .......................................................... 282 7.2.2 S3 對象存儲簡析 ..................................................................... 287 7.2.3 Haystack 對象存儲簡析 .......................................................... 288 參考文獻 ....................................................................................................................... 295
你還可能感興趣
我要評論
|