對稱式共享儲存器系統支援共享和私有化資料的快取
私有資料被單個處理器使用,共享資料則被多個處理器所使用 ,基本上是通過讀寫共享資料實現處理器之間的通訊
共享資料的好處:
減少訪問的時延和降低對儲存器頻寬的要求
減少多個處理器同時讀取共享資料時的競爭現象
共享資料放入cache會導致cache一致性的問題
儲存器行為的兩個方面:
一致性(coherence) 定義了讀操作返回什麼樣的值,連貫性(consistency)寫入的數值什麼時候才能被讀操作返回
如果某個處理器對x的寫操作只領先其他處理器對x的讀操作很短一段時間,則無法保證該讀操作的能返回寫入的數值,這一刻寫入的資料甚至還沒有被處理器傳送出去
如何實施一致性
在多處理器系統上執行的程式會要求在多個cache中有同乙個資料副本,cache提供共享資料的遷移和複製
遷移:資料項遷移到本地cache並以透明的方式使用
複製:cache在本地為那些被同時讀取的共享資料提供副本
監聽協議:
寫無效協議:在處理器寫資料項之前保證該處理器能獨佔地訪問資料項
在執行寫操作時使得其他的副本無效。
寫操作要求處理器獨佔,執行讀操作的處理器所保留的任何副本都被置為無效,執行讀操作時,可能出現cache缺失,需要取回新的資料副本.
對於寫操作,要求執行寫操作的處理器獨佔訪問,防止任何其他處理器同時執行寫操作
寫更新(寫廣播協議):
寫入資料項時更新該資料項所有的副本
該方法需要將所有的寫操作廣播給共享cache,需要更大的頻寬.
基本實現技術:
實現寫無效的採用匯流排或者其他廣播媒介來完成
實現無效操作,處理器只需取得匯流排控制權然後在匯流排上廣播無效資料的位址
處理器檢測各自的cache中是否由匯流排上廣播的位址,要是有則置為無效即可
若兩個處理器向一塊中寫,需要匯流排仲裁,達到序列的目的
第乙個獲得匯流排控制權的,將另乙個處理器置為無效
cache缺失時對資料項進行定位:
寫回的cache能夠使用同樣的監聽方案來處理cache缺失和寫操作:
所以處理器都監聽匯流排上的位址,若乙個處理器發現其留有被請求的cache塊的乙個髒副本,馬上做出響應,提供該cache,並中斷對儲存器的訪問.
利用cache中的標識位進行無效操作,對於寫操作,需要知道其他cache中還有沒有副本,若是沒有副本,則無需在匯流排上進行寫操作
判斷乙個cache資料塊是否被共享:
增加乙個狀態位,根據該狀態位判斷是否要進行無效操作,對於共享資料進行寫操作時,cache會發乙個無效操作並將該塊標記為私有
傳送無效操作時,將cache狀態變成非共享狀態,稍後有其他處理器請求該cache塊,再次變為共享狀態.
協議範例:
分布式儲存系統設計(3) 儲存結構
在nosql儲存系統中,一般都採用key value的資料型別,key value結構簡單,易於儲存,非常適合分布式nosql儲存系統。但簡單的資料型別對業務儲存的資料就有一定的侷限性,比如需要儲存列表型別的資料。針對這個問題,系統對key value型別的資料做了一些擴充套件,支援在乙個key下儲...
Linux系統下NFS共享儲存伺服器配置與使用
linux 系統下nfs 共享儲存伺服器配置與使用 檔案共享服務一般有samba和nfs,前者多用於windows系統,如果多個linux系統使用共享儲存服務,建議使用nfs服務。nfs是network file system的縮寫,即網路檔案系統。一種使用於分布式檔案系統的協定,由sun公司開發,...
nfs伺服器共享儲存
nfs的使用 主機 192.168.189.129 備份機 192.168.189.130 詳解見 公社詳解nfs共享儲存服務 實驗操作 準備一台伺服器當儲存伺服器,在其上部署nfs 192.168.189.129 yum y install rpcbind nfs utils開啟服務,並在主伺服器...