寫這些有的沒的 主要還是想記錄一下自己曾經學會的知識 或是遇過的慘烈經驗 外加手癢癢 不寫不行 或許當下見解不見得是正確的 就看多年後再回來看的時候 還可以回想起多少當時碎碎念的心情 :-)
Wednesday, March 22, 2017
Storage Snapshot 原理
本來以為 snapshot 可以跳過 因為一般 IT 大都講到爛了
不過後來因為想廢話 Compellent Auto-Tiering 的時候 要把這部分擺進去 怎麼擺位置都不對
乾脆就獨立出來先針對這大家都知道的功能打打屁吧
因為大家都知道了 就快速哈拉就好
一般來說 Storage 內部 大概就是Controller 把Data 分散寫入 一堆 Block 裡面
需要的時候 Controller 知道要去哪個 Block 去取 Data 送到前端使用
例如下圖 目前有 A, B, C 三個 Block 存放 Data 供複寫 或是讀取
假設第一個 Snapshot 1 產生, Block A, B, C 會變成 Read Only Block (圖示以實心表示)
這時候讀取還是沒問題 一樣去 Block A, B, C 讀出來
假設這時候 有兩份資料要寫進來
一份是要改原本 Block A的內容
另一份是要新增在新的區域 Block D
這樣的話 目前供寫取的區域會變成 A1, B, C, D
但是如果要回去當初 Snapshot 1 時間點 取資料的話會變成取用 A, B, C
不會去讀取 D, 因為產生 Snapshot 1的時間點 Block D 並不存在
這時候如果又產生 Snapshot 2, 一樣 Block A1, D 會變成 Read Only Block
同樣的 又有資料進來 要改A1區域的資料 會直接存放在 A2
並且新的資料 E 也被加進來
此時會有三個時間點可以取用
目前供讀寫的為 A2, B, C, D, E
Snapshot 1 時間點資料為 A, B, C
Snapshot 2 時間點資料為 A1, B, C, D
之後 哪天已經不需要 Snapshot 1 時間點的資料了 就把 Snapshot 1 刪除
Snapshot 1 時間點 Block A 因為在 Snapshot 2 時間點 已經有 A1 取代 所以直接刪除
而 Snapshot 1 剩兩個 Block B, C 會被合併到 Snapshot 2
當然 Block B, C 並不會真的搬 只是直接把 Snapshot 1 指標刪除即可
搞定 下篇就可以專心廢話 Compellent Auto-Tiering
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment