osd OSD的讀寫流程

2022-09-04 20:06:14 字數 1781 閱讀 4882

ceph rados io(讀寫) 處理流程圖:

cpeh讀寫順序保證: 

不同的物件有可能落到同乙個pg裡,ceph實現裡,在osd的處理執行緒中就會給pg加鎖,一直到queue_transactions裡把事務放到bluestore的佇列裡才釋放pg的鎖。從這裡可以看出,對於同乙個pg裡的不同物件,是通過pg鎖來進行併發的控制,好在這個過程中沒有涉及到物件的i/o,不會太影響效率;對於不同pg的物件,就可以直接進行併發訪問。

從上面的介紹可以得知,同乙個物件的訪問也會受到pg鎖的限制,但這是在osd的處理邏輯裡。對於同乙個物件的訪問,要考慮的情況比較複雜。從使用者使用場景上來說,有兩種使用方式。比如:

1)乙個client情況,客戶端對同乙個物件的更新處理邏輯是序列的,要等前一次寫請求完成,再進行後一次的讀取或者寫更新;

2)多個client對同乙個物件的併發訪問,目前的分布式系統裡很少能做到,涉及到多個client同時更新帶來的資料一致性問題,一般都需要集群檔案系統的支援;

對於多client的場景,ceph的rbd也是不能保證的,因此這裡主要以單client訪問ceph rbd塊裝置的場景進行闡述,看乙個極端的例子:同乙個client先後傳送了2次對同乙個物件的非同步寫請求。以這個例子展開進行說明。

從訊息佇列裡取訊息進行處理時,osd端處理op是劃分為多個shard,然後每個shard裡可以配置多個執行緒,pg按照取模的方式對映到不同的shard裡。另外osd在處理pg時,從訊息佇列裡取出的時候就對pg加了寫鎖的,而且是在請求下發到store後端才釋放的鎖,所以訊息佇列裡過來的訊息有序後,在osd端pg這一層處理時也是有序的

1. ceph io, rados io 流程解析(讀寫)

ceph rados io(讀寫) 處理流程圖:

cpeh讀寫順序保證: 

不同的物件有可能落到同乙個pg裡,ceph實現裡,在osd的處理執行緒中就會給pg加鎖,一直到queue_transactions裡把事務放到bluestore的佇列裡才釋放pg的鎖。從這裡可以看出,對於同乙個pg裡的不同物件,是通過pg鎖來進行併發的控制,好在這個過程中沒有涉及到物件的i/o,不會太影響效率;對於不同pg的物件,就可以直接進行併發訪問。

從上面的介紹可以得知,同乙個物件的訪問也會受到pg鎖的限制,但這是在osd的處理邏輯裡。對於同乙個物件的訪問,要考慮的情況比較複雜。從使用者使用場景上來說,有兩種使用方式。比如:

1)乙個client情況,客戶端對同乙個物件的更新處理邏輯是序列的,要等前一次寫請求完成,再進行後一次的讀取或者寫更新;

2)多個client對同乙個物件的併發訪問,目前的分布式系統裡很少能做到,涉及到多個client同時更新帶來的資料一致性問題,一般都需要集群檔案系統的支援;

對於多client的場景,ceph的rbd也是不能保證的,因此這裡主要以單client訪問ceph rbd塊裝置的場景進行闡述,看乙個極端的例子:同乙個client先後傳送了2次對同乙個物件的非同步寫請求。以這個例子展開進行說明。

從訊息佇列裡取訊息進行處理時,osd端處理op是劃分為多個shard,然後每個shard裡可以配置多個執行緒,pg按照取模的方式對映到不同的shard裡。另外osd在處理pg時,從訊息佇列裡取出的時候就對pg加了寫鎖的,而且是在請求下發到store後端才釋放的鎖,所以訊息佇列裡過來的訊息有序後,在osd端pg這一層處理時也是有序的

1. ceph io, rados io 流程解析(讀寫)

hdfs讀寫流程 HDFS 讀寫流程(詳解)

hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...

Hbase的讀寫流程

步驟1 client通過zookeeper的排程,向hregionserver發出寫資料請求,在hregion中寫資料。步驟2 資料被寫入hregion的memstore,直到memstore達到預設閾值。步驟3 memstore中的資料被flush成乙個storefile。步驟4 隨著storef...