做者:邵悠鋒windows
對於企業生產來講,最重要的就是數據。能夠說數據是企業的生命,數據的破壞、丟失都會給企業形成巨大的損失,因此數據的保護相當重要。網絡
數據的保護方案能夠分爲快照和備份,那麼這兩種方案有什麼區別,又分別適用於什麼場景呢?首先,咱們須要明確一點,快照不是備份,當數據處於危險時,快照和備份可作的事情是不同的,兩種不一樣的機制是用來應對不一樣需求的。性能
歸納地說,快照是保存數據狀態的方式,以便於可以及時恢復到該點。如下是存儲網絡工業協會(如下簡稱SNIA)對快照的定義:測試
A type of point in time copy that preserves the state of data at an instant in time, by storing only those blocks that are different from an already existing full copy of the dataspa
快照是一個特定時間點對數據狀態的保護,只保存那些完整拷貝之外有變化的數據。換言之,若是數據沒有變化,快照是不會保存額外數據的,快照能夠當作是對某個特定時間點的數據的凍結。操作系統
目前行業內快照實現有兩種方式,COW(Copy On Write)和ROW(Redirect On Write),這兩種方式的區別是:當數據有變化時,對應數據塊的處理方式也會不一樣。指針
首先看COW,快照生成後,若是沒有數據的寫入,那麼快照卷的指針仍是指向原始卷的數據塊。blog
一旦有數據寫入,好比寫入此處的E數據塊,系統會從新分配一個數據塊,將E的數據總體拷貝到新的數據塊中,而後原來E的位置寫入新數據,計爲I。相應的,快照卷對E的指針須要指向新的數據塊,而原始卷的指針指向是不變的。開發
再看ROW,和COW的不一樣之處在於,若是有數據進行了修改,則分配數據塊將修改的數據寫入新的空間記爲I,而後將原始卷的指針指向I,快照卷不作任何改動。rem
從以上的分析能夠看到,COW的優點在於:原始卷的物理塊是連續的,沒有碎片,缺點則是寫放大了,原本1個寫如今變成3個寫,原始數據、快照指針指向、新數據,因此COW適合讀多寫少的業務;ROW的優點是:寫性能比COW更好,1個寫變成2個寫,原始卷指針指向、新數據,但缺點是原始卷物理塊不連續,會致使讀性能較低,刪除快照須要將原始卷指針修改,將數據提交至原始物理塊,快照越大越消耗時間,故而ROW適合寫密集型業務。
從快照原理上能夠看到,快照其實仍是對原始卷有依賴,快照卷中大部分的指針依然會指向原始卷的數據塊,若是有某個數據塊損壞,頗有可能快照是沒法恢復的,由於有可能損壞的數據塊就是沒有變化過的。因此快照的做用是對一些操做的臨時回滾,是一個臨時手段。好比開發測試環境,以及生產環境作一些可能會影響操做系統、業務系統的操做,能夠用快照作一個臨時的保障,在異常時快速回滾到正常狀態。
另外,快照若是建立的太多了,會極大的影響業務的性能,快照的各類連接會使得數據的讀寫變的很是複雜,同時也會佔用大量的存儲空間。因此,通常生產不建議使用快照,必定要使用快照的話,也是在進行危險的操做時,如可能損壞系統的操做系統更新或配置變更
一個典型的快照應用就是windows還原點,將系統的部分信息存放在C盤某個位置,而且不影響我的的文件,能夠在系統發生故障時迅速還原。
一樣看下SNIA對備份的定義:
A collection of data stored on (usually removable) non-volatile storage media for purposes of recovery in case the original copy of data is lost or becomes inaccessible; also called a backup copy.To be useful for recovery, a backup must be made by copying the source data image when it is in a consistent state.
簡單來講備份就是對數據的一個完整的拷貝,是新增長了一個一致性的副本,在原始卷因災難或人爲錯誤而損壞的狀況下,可以爲您提供恢復的可能性。與快照不一樣的是,備份獨立於原始卷,能夠輕鬆導出並存儲到其餘地方。
備份的類型能夠分爲全量備份、增量備份、差別備份三種。
全量備份顧名思義就是把整個數據都備份下來,全量備份的數據完整性最好,能夠提供最好的數據保護,恢復速度也很是快,可是全量備份佔用的空間很是大,可能會形成磁盤的浪費,並且由於是作全部數據的備份,數據量越大備份的時間就越長。
增量備份是備份上一次備份以後發生變化的數據量,第一次作增量備份必然會作一個全量備份,後續全部的備份操做都是增量。增量備份會造成一條備份鏈,除了第一次的全量備份之外,後續全部增量備份都須要依賴於前一次備份的數據,若是一旦有某個中間的備份數據損壞或者丟失,那麼在這個點之後的全部備份就所有失效了;若是要進行恢復,必須沿着從全量備份到指定時間點增量備份的順序來進行恢復,這就使得恢復時間會變得很長,可是相對的,相比較於全量備份,每一個增量備份的備份數據量很是小,只有上次備份之後發生變化的量,因此備份時間也很是短。
差別備份是備份上一次全量備份以後發生變化的數據量,第一次作差別備份必然會作一個全量備份,後續全部的備份操做都是和全量備份相比發生變化的數據,在進行恢復時,只需對第一次全量備份和最後一次差別備份進行恢復。差別備份避免了全量備份和增量備份的缺陷,同時又具有了它們各自的優勢。首先,它具備增量備份的備份時間短、節省磁盤空間的優點;其次,它又具備全量備份恢復時間短的特色,管理員只須要第一次全量備份和最後一次差別備份兩份數據便可。差別備份的缺點是會存在必定量的重複數據,以前的差別備份數據都和最後一份差別備份數據有重複,固然能夠根據設定的保留策略將多餘的數據刪除。
從備份原理上能夠看到,備份是拷貝出新的副本,是長久的數據保存方式,適用於對數據的長期保護,當數據發生錯誤或者丟失時,能夠進行快速恢復,以保證業務的連續性。
其實備份過程當中也用到了快照技術,通常要進行備份時都會作一個臨時快照,把數據進行凍結,而後把快照的內容拷貝一份,最後刪除快照。備份的時間點通常會選擇凌晨業務量低谷的時候,以免備份數據的不一致性。
一句話來對比:快照是數據存儲的某一時刻的狀態記錄,備份則是數據存儲的某一個時刻的副本,這是兩種徹底不一樣的概念。
來詳細對比下快照和各類不一樣類型的備份方式的差別:
經過以前的概念介紹,咱們能夠了解到:全量備份是對全部數據的一個拷貝,會將數據保存在不一樣的地方,和原始卷沒有任何關係,是獨立的存在;而快照仍是依賴於原始卷,而且只有變化的數據塊纔會拷貝。
增量備份是將上次備份以後變化的數據拷貝出來,和原始卷是沒有依賴關係的,可是和上次的備份之間有依賴關係,會有一條依賴連接,一直連接到上次的全量備份。
差別備份是將上次全量備份以後變化的數據拷貝出來,一樣也是和原始卷沒有依賴關係的,差別備份之間也沒有任何關係,可是和上次的全量備份之間有依賴。
對比COW,COW的快照之間沒有依賴關係,可是都和原始卷有依賴,對於變化的數據塊,會分配新的數據塊將老的數據拷貝過去。
對比ROW,ROW的快照之間會有快照鏈,也和原始卷有依賴,當刪除快照的時候,由於要把數據都提交給原始卷,因此會把此快照時間點以後的快照都一併刪除。
經過比較快照和備份的差別,能夠看到其實快照是一種技術,而備份是一個過程,快照是某個時間點的狀態,而備份是對數據的拷貝,快照並不能等同於備份。對於數據的臨時保護,可使用快照,若是要進行長期保護,則須要使用備份。
快照和備份都有各自的應用場景,在合適的場景使用恰當的方案,纔可以最大程度的保護數據。