《檔案系統技術內幕:大數據時代海量數據存儲之道》是2022年1月電子工業出版社出版圖書,作者是張書寧。本書通過理論與實踐相結合的方式,深入淺出地介紹了檔案系統的概念、原理和具體實現。
基本介紹
- 中文名:檔案系統技術內幕:大數據時代海量數據存儲之道
- 作者:張書寧
- 出版時間:2022年1月
- 出版社:電子工業出版社
- 頁數:308 頁
- ISBN:9787121424786
- 定價:102 元
- 開本:16 開
內容簡介,圖書目錄,作者簡介,
內容簡介
本書涵蓋本地檔案系統、網路檔案系統、分散式檔案系統和對象存儲等內容,可以說涵蓋了數據持久化檔案系統的主要領域
圖書目錄
第 1 章 從檔案系統是什麼說起 . 1
1.1 什麼是檔案系統 . 1
1.1.1 普通用戶角度的檔案系統 . 3
1.1.2 作業系統層面的檔案系統 . 9
1.1.3 檔案系統的基本原理 . 12
1.2 常見檔案系統及分類 . 13
1.2.1 本地檔案系統 . 14
1.2.2 偽檔案系統 . 14
1.2.3 網路檔案系統 . 15
1.2.4 集群檔案系統 . 16
1.2.5 分散式檔案系統 . 16
第 2 章 知其然——如何使用檔案系統. 17
2.1 巧婦之炊——準備開發環境 . 17
2.2 檔案內容的訪問——讀/寫檔案 . 18
2.2.1 檔案系統的 API . 18
2.2.2 檔案訪問的一般流程 . 19
2.2.3 檔案內容的讀/寫實例 . 20
2.2.4 關於 API 函式的進一步解釋 . 22
2.3 如何遍歷目錄中的檔案 . 24
2.4 格式化檔案系統與掛載 . 27
2.5 檔案系統與許可權管理 . 29
2.5.1 Linux 許可權管理簡介 . 30
2.5.2 設定檔案的 RWX 許可權 . 31
2.5.3 設定檔案的 ACL 許可權 . 34
2.6 檔案系統的鎖機制 . 37
2.6.1 檔案鎖的分類與模式 . 37
2.6.2 Linux 檔案鎖的使用 . 38
2.7 檔案系統的擴展屬性 . 41
2.8 檔案的零拷貝 . 42
2.8.1 零拷貝的基本原理 . 42
2.8.2 零拷貝的系統 API . 44
第 3 章 知其所以然——本地檔案系統原理及核心技術 . 46
3.1 Linux 檔案系統整體架構簡介 . 46
3.1.1 從 VFS 到具體檔案系統 . 48
3.1.2 關鍵處理流程舉例 . 50
3.2 本地檔案系統的關鍵技術與特性 . 61
3.2.1 磁碟空間布局(Layout) . 61
3.2.2 檔案的數據管理 . 69
3.2.3 快取技術 . 77
3.2.4 快照與克隆技術 . 82
3.2.5 日誌技術 . 84
3.2.6 許可權管理 . 85
3.2.7 配額管理 . 89
3.2.8 檔案鎖的原理 . 91
3.2.9 擴展屬性與 ADS . 92
3.2.10 其他技術簡介 . 94
3.3 常見本地檔案系統簡介 . 95
3.3.1 ExtX 檔案系統 . 95
3.3.2 XFS 檔案系統 . 95
3.3.3 ZFS 檔案系統 . 96
3.3.4 Btrfs 檔案系統 . 97
3.3.5 FAT 檔案系統 . 98
3.3.6 NTFS 檔案系統 . 98
第 4 章 從理論到實戰——Ext2 檔案系統代碼詳解 . 99
4.1 本地檔案系統的分析方法與工具 . 99
4.1.1 基於檔案構建檔案系統 . 100
4.1.2 了解函式調用流程的利器 . 100
4.2 從 Ext2 檔案系統磁碟布局說起 . 102
4.2.1 Ext2 檔案系統整體布局概述 . 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 檔案系統的根目錄與目錄數據布局 . 113
4.4 Ext2 檔案系統的掛載 . 116
4.5 如何創建一個檔案 . 117
4.5.1 創建普通檔案 . 118
4.5.2 創建軟硬連結 . 121
4.5.3 創建目錄 . 125
4.6 Ext2 檔案系統刪除檔案的流程 . 125
4.7 Ext2 檔案系統中檔案的數據管理與寫數據流程 . 129
4.7.1 Ext2 檔案系統中的檔案數據是如何管理的 . 129
4.7.2 從 VFS 到 Ext2 檔案系統的寫流程. 130
4.7.3 不同寫模式的流程分析 . 134
4.7.4 快取數據刷寫及流程 . 138
4.8 讀數據的流程分析 . 140
4.8.1 快取命中場景 . 141
4.8.2 非快取命中場景 . 142
4.8.3 數據預讀邏輯 . 143
4.9 如何分配磁碟空間 . 148
4.9.1 計算存儲路徑 . 150
4.9.2 獲取存儲路徑 . 152
4.9.3 分配磁碟空間 . 153
4.10 Ext2 檔案系統的擴展屬性 . 154
4.10.1 Ext2 檔案系統擴展屬性是怎么在磁碟存儲的 . 154
4.10.2 設定擴展屬性的 VFS 流程 . 157
4.10.3 Ext2 檔案系統擴展屬性接口實現 . 159
4.11 許可權管理代碼解析 . 163
4.11.1 ACL 的設定與獲取 . 163
4.11.2 ACL 許可權檢查 . 164
4.12 檔案鎖代碼解析 . 165
第 5 章 基於網路共享的網路檔案系統 . 172
5.1 什麼是網路檔案系統 . 172
5.2 網路檔案系統與本地檔案系統的異同 . 174
5.3 常見的網路檔案系統簡析 . 174
5.3.1 NFS 檔案系統 . 174
5.3.2 SMB 協定與 CIFS 協定 . 175
5.4 網路檔案系統關鍵技術 . 175
5.4.1 遠程過程調用(RPC 協定) . 176
5.4.2 客戶端與服務端的語言——檔案系統協定 . 177
5.4.3 檔案鎖的網路實現 . 178
5.5 準備學習環境與工具 . 179
5.5.1 搭建一個 NFS 服務 . 179
5.5.2 學習網路檔案系統的利器 . 180
5.6 網路檔案系統實例 . 181
5.6.1 NFS 檔案系統架構及流程簡析 . 181
5.6.2 RPC 協定簡析 . 185
5.6.3 NFS 協定簡析 . 186
5.6.4 NFS 協定的具體實現 . 191
5.7 NFS 服務端及實例解析 . 203
5.7.1 NFSD . 203
5.7.2 NFS-Ganesha . 210
第 6 章 提供橫向擴展的分散式檔案系統 . 216
6.1 什麼是分散式檔案系統 . 216
6.2 分散式檔案系統與網路檔案系統的異同 . 217
6.3 常見分散式檔案系統 . 217
6.3.1 GFS . 218
6.3.2 CephFS . 219
6.3.3 GlusterFS . 219
6.4 分散式檔案系統的橫向擴展架構 . 220
6.4.1 中心架構 . 220
6.4.2 對等架構 . 221
6.5 分散式檔案系統的關鍵技術 . 222
6.5.1 分散式數據布局 . 222
6.5.2 分散式數據可靠性(Reliability). 224
6.5.3 分散式數據一致性(Consistency) . 228
6.5.4 設備故障與容錯(Fault Tolerance) . 229
6.6 分散式檔案系統實例之 CephFS . 230
6.6.1 搭建一個 CephFS 分散式檔案系統 . 230
6.6.2 CephFS 分散式檔案系統架構簡析 . 231
6.6.3 CephFS 客戶端架構 . 234
6.6.4 CephFS 集群端架構 . 236
6.6.5 CephFS 數據組織簡析 . 239
6.6.6 CephFS 檔案創建流程解析 . 244
6.6.7 CephFS 寫數據流程解析 . 251
6.7 分散式系統實例之 GlusterFS . 253
6.7.1 GlusterFS 的安裝與使用 . 253
6.7.2 GlusterFS 整體架構簡析 . 257
6.7.3 轉換器與轉換器樹 . 259
6.7.4 GlusterFS 數據分布與可靠性 . 263
6.7.5 GlusterFS 客戶端架構與 I/O 流程 . 268
6.7.6 GlusterFS 服務端架構與 I/O 流程 . 270
第 7 章 百花爭艷——檔案系統的其他形態 . 272
7.1 用戶態檔案系統框架 . 272
7.1.1 Linux 中的用戶態檔案系統框架 Fuse . 272
7.1.2 Windows 中的用戶態檔案系統框架 Dokany . 279
7.2 對象存儲與常見實現簡析 . 282
7.2.1 從檔案系統到對象存儲 . 282
7.2.2 S3 對象存儲簡析 . 287
7.2.3 Haystack 對象存儲簡析 . 288
參考文獻 . 295
作者簡介
張書寧
戴爾科技(Dell Technologies)首席軟體開發工程師,負責公司核心存儲產品Unity和PowerStore的研發工作。
先後就職於華為、甲骨文(Oracle)、戴爾科技等世界五百強公司,曾負責分散式存儲產品FusionStorage及中端企業級存儲產品Unity和PowerStore等的系統設計和開發工作,深耕存儲領域十幾載。