共計 831 個字符,預計需要花費 3 分鐘才能閱讀完成。
這篇文章主要為大家展示了“ceph sparse read 的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“ceph sparse read 的示例分析”這篇文章吧。
在解釋 ceph 的 sparse read 前,先要解釋一個概念:文件系統的 fiemap。
ext4 已經支持的一個特性是基于 Extent 的文件存儲,簡寫為 fiemap.
現代很多文件系統都采用了 extent 替代 block 來管理磁盤。Extent 能有效地減少元數據開銷。
再說 ceph 的 sparse read
ceph 基于 fiemap 特性來實現 sparse read. 具體舉例來說:
1. client 發出 sparse-read 某個 object 請求.
2. osd 收到請求,傳遞至 filestore,它 通過 FS_IOC_FIEMAP ioctl 判斷底層文件系統是否支持 fiemap, 還要判斷 ceph 配置選項是否默認打開 fiemap.
3. 如果兩個選項都支持,filestore 通過此 ioctl 進一步獲取到 extent map 信息,即哪些 extent 存有真實的數據。
4. filestore 利用 extent map 分析出這個 object 的哪些部分真正在磁盤上分配了空間并存儲了數據,然后把這些部分讀出并返回給客戶端。
注意:
1. ext4 默認支持了 fiemap, 但是 ceph 默認是關閉了 fiemap 選項,原因是測試發現某系 kernel/fs 的 bug. 所以 所有的 client sparse read 在 ceph 內部都是走的跟一般的 read 一樣的路徑。
2. sparse read 對大讀有性能提高,但是對小讀,如小于一個 block size(4096B)的讀,則沒有性能提升。所以要避免對小讀做 sparse read.
以上是“ceph sparse read 的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!