數據備份 快照技術 之第一次寫時複製(COW)和寫時重定向(ROW)

數據備份  快照技術 之第一次寫時複製(COW)和寫時重定向(ROW)

 

1.快照技術

關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點的映像。

快照相當於給數據拍個照片

2. 第一次寫時複製  COW

COW(Copy-On-Write),寫時拷貝,也稱爲寫前拷貝。

創建快照以後,如果源卷的數據發生了變化,那麼快照系統會首先將原始數據拷貝到快照捲上對應的數據塊中,然後再對源捲進行改寫。

 

寫操作

如上圖簡要示例,快照創建以後,若上層業務對源卷寫數據X,X在緩存中排隊,快照系統將X即將寫入的位置(邏輯地址)上的數據Y,拷貝到快照卷中對應的位置(邏輯地址)上,同時,生成一張映射表,表中一列記錄源捲上數據變化的邏輯地址,另一列記錄快照捲上數據變化的邏輯地址。我們可以看到,上層業務每下發一個數據塊,存儲上,發生了兩次寫操作:一次是源卷將數據寫入快照卷(即圖中Y),一次是上層業務將數據寫入源卷(即圖中X)。

讀操作

 

如上圖,快照卷若映射給上層業務進行數據分析等用途時,針對快照進行讀操作時,首先由快照系統判斷,上層業務需要讀取的數據是否在快照卷中,若在,直接從快照卷讀取,若不在,則查詢映射表,去對應源卷的邏輯地中讀取(這個查表並去源卷讀的操作,也叫讀重定向)。這一點,恰好就解釋了爲什麼快照是一份完全可用的副本,它沒有對源捲進行100%的拷貝,但對上層業務來說,卻可以將快照看做是和源卷“一模一樣”的副本。

 

 

也就是說,我們開始有原數據以及創建好的快照,當原數據要發生改變時(暫時在cache中),我們先將即將改變的位置的數據複製到快照,再將數據複製到原始磁盤,然後快照指針更改,存在一個重定向,如果在快照中找不到,即重定向到原始磁盤尋找。

 

 

3.寫時重定向

ROW(Redirect-on-write ),也稱爲寫時重定向。

創建快照以後,快照系統把對數據卷的寫請求重定向給了快照預留的存儲空間,直接將新的數據寫入快照卷。上層業務讀源卷時,創建快照前的數據從源卷讀,創建快照後產生的數據,從快照卷讀。

寫操作:

如上圖簡要示例,快照創建以後,若上層業務對源卷寫數據X,X在緩存中排隊,快照系統判斷X即將寫入源卷的邏輯地址,然後將數據X寫入快照卷中預留的對應邏輯地址中,同時,將源卷和快照卷的邏輯地址寫入映射表,即寫重定向。我們可以看到,上層針對源卷寫入一個數據塊X,存儲上只發生一次寫操作,只是寫之前進行了重定向。

讀操作:

快照創建以後,上層業務對源捲進行讀,則有兩種情況:1)若讀取的數據,在創建快照前產生,數據是保存在源捲上的,那麼,上層就從源捲進行讀取;2)若需要讀取的數據是創建快照以後才產生的,那麼上層就查詢映射表,從快照捲進行讀取(即讀重定向)。

快照創建以後,上層業務對快照捲進行讀,同樣也有兩種情況:1)若讀取的數據,在創建快照前產生,數據是保存在源捲上的,那麼上層就查詢映射表,從源捲進行讀取;2)若需要讀取的數據是創建快照以後才產生的,那麼上層就直接從快照捲進行讀取。

我們可以看到,ROW快照也是根據創建快照後上層業務產生的數據,來實時佔用必需的存儲空間。

 

 

參考:https://zhuanlan.zhihu.com/p/39916936

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章