云存储快照技术
云存儲快照技術
- 方案
- COW(Copy-On_Write):寫時拷貝
- ROW(Redirect-On-Write):寫時重定向
- 費曼方法
- 鏡像復制方案
- 參考鏈接
方案
快照算法通常有寫時拷貝COW和寫時映射ROW兩種,對于不同的應用需求,這兩種算法有各自的優缺點。從結構上分,快照有草型快照和鏈式快照之分,不同的結構有不同的效率和性能。
COW(Copy-On_Write):寫時拷貝
創建快照后,原始數據盤上有數據更新,則將對應位置數據從原始盤拷貝到額外存儲空間(快照盤)-> 元數據記錄數據更新位置 -> 將數據寫入原始數據盤。 一次數據更新涉及兩次寫盤操作。
源盤保存完成的實時數據。
采用COW方式實現快照,每次數據更新會涉及兩次寫盤操作,影響源盤的寫性能。
COW快照之間獨立,無關聯。
ROW(Redirect-On-Write):寫時重定向
創建快照后,原始數據盤上有數據更新,將IO重定向到額外的存儲空間(快照盤),數據直接寫入到快照盤,同時元數據記錄數據更新位置。一次數據更新僅涉及到對快照盤的一次寫盤操作。
源盤保存快照創建前的完整數據。
ROW快照,當創建多個快照時,快照之間關聯形成快照鏈。刪除快照或快照回滾時,邏輯上比較復雜。
COW和ROW在創建快照時均不產生額外存儲空間,只有當對源盤進行數據更新時才涉及存儲空間的分配。
綜合COW和ROW的實現原理,實現快照功能涉及如下部分:
- 源盤:數據存儲的原始邏輯盤,以此盤為
- 快照盤:創建快照時分配,用來存儲快照創建后有數據更新時的源盤數據(COW)或更新數據(ROW)。 快照盤同原始盤容量大小相同。
- 元數據:記錄數據更新位置,通過檢索元數據來進行數據重定向。元數據需要持久化,且重啟后重構并加載到內存。
- 快照:記錄源盤與快照盤的對應關系,根據快照可以獲取其對應的原始盤和快照盤。
費曼方法
- COW:創建快照時不拷貝,只有寫原盤時,會將原盤的東西拷貝到快招盤,然后才寫入原盤(原盤一直保存最新的數據)
- ROW:原盤一直不動,保存快照的完整數據,新數據寫入快照盤。
- COW與ROW最大的不同是,COW的快照盤存放的是原始數據,而ROW的快照盤存放的是新數據
| 寫源盤 | 影響 | 無影響 |
| 讀源盤 | 無影響 | 影響 |
| 讀快照 | 讀重定向,有輕微時延 | 讀重定向,有輕微時延 |
| 刪除快照 | 瞬間完成 | 需要數據拷回源盤,耗時很久 |
| 應用場景 | read-intensive | write-intensive |
鏡像復制方案
參考鏈接
總結
- 上一篇: C/C++多个链接库含有同名函数,编译会
- 下一篇: gdb常用命令及参考文档