市場上作數據遷移,備份和恢復的廠商不少,有像EMC和Symantec這樣的存儲設備提供商,也有像NSI Double-Take這樣的軟件服務供應商,分別表明性的產品有,EMC Replication Manager,Symantec Backup Exec和Double-Take。緩存
不管哪種數據備份軟件,最關鍵最核心的技術其實就是兩點:app
1. Freeze/Thaw備份對象的I/Oide
2. 快速拷貝備份對象的數據spa
在關注完這兩個技術點以後,再進一步討論:操作系統
1. 將備份軟件由物理機擴展到虛擬機指針
2. 備份對象和備份平臺的擴展對象
備份的對象能夠是文件或磁盤,也能夠是應用程序或操做系統。對於前者,若是沒有IO操做,那麼備份過程相對簡單,能夠直接進行拷貝操做。若是存在IO操做,那麼只有停機才能保證數據的完整性和一致性,若是不停機,因爲數據尚在緩存或者讀寫過程當中,則沒法保證數據的完整性和一致性,所以備份出來的數據可能沒有意義。對於後者,雖然備份的最終對象也是文件或磁盤,但備份的過程須要獲得應用程序或操做系統的支持,這樣既能夠不停機,甚至應用程序能夠繼續提供服務,又能夠保證備份數據的完整性和一致性。索引
應用程序爲了支持數據備份,一般的作法是,在備份開始前,將備份單元緩存的數據寫回進磁盤中,而後Freeze備份單元的IO;在備份過程當中,將備份單元的寫操做轉到臨時文件中;在備份結束後,將臨時文件的數據從新寫回進磁盤中,而後Thaw備份單元的IO。很是典型的例子是,Oracle的hot backup script,Microsoft爲SQL Server和Exchange Server提供的VDI和VSS接口。接口
爲了保證服務質量,通常狀況下,應用程序從Freeze備份單元的IO到Thaw備份單元的IO的間隔時間都比較短,例如Oracle的備份時間是60s,而VDI和VSS的備份時間只有10s。備份時間是如此的短,而備份數據一般又是很是的龐大,所以徹底拷貝原始的數據幾乎是不可能的,因而基於Copy-On-Write的Snapshot技術在存儲設備中獲得了普遍的應用。ip
Copy-On-Write的基本原理其實也簡單,假設原始數據區爲A,備份數據區爲B,當A中的某個數據塊有寫請求時,先將原來的數據塊拷貝到B中,而後再對A執行寫操做。A中未執行寫操做的數據塊,只須要在B中維護一個A中對應數據塊的索引指針便可。這樣,當A中的數據改動比較少時,B須要的空間一般也不多,只要原來的10%~30%。
在爲備份數據區申請空間時,若是是申請固定空間,則該空間應大於原始空間,固然,一般不這麼作,而是申請自動精簡配置的磁盤空間,須要多少,佔用多少,從而節省數據空間,避免無謂的浪費。而在具體的實現中,據做者的親歷瞭解,作法是爲每一個原始空間保留一個大的緩衝區,爲原始空間創建的多個備份空間都從這個緩衝區裏面分配。
以EMC Replication Manager爲例,支持Exchange,SQL Server,SharePoint,Oracle,DB2等應用程序的備份,支持的存儲設備包括Symmetrix,CLARiiON等。
由於備份過程須要獲得存儲設備的支持,備份的最小數據單元也就成了一個LUN。一個LUN在主機端表現爲一塊物理磁盤,主機能夠發送標準的SCSI命令給這個LUN,可是這種狀況在虛擬機環境下就發生了變化,這是由於在虛擬機(如VMWare)中,只認識虛擬磁盤.vmdk。
所幸的是,RDM(Raw Device Mapping)技術解決了這個難題。RDM是從VMFS捲到原始LUN的符號連接。映射使LUN顯示爲VMFS卷中的文件。在虛擬機配置中引用映射文件而非原始LUN。打開LUN進行訪問時,系統會讀取映射文件以獲取原始LUN的引用。能夠不用經過映射文件直接對裸LUN進行讀寫操做。RDM Volume只能是FC或者iSCSI的LUN。
NSI Double-Take的產品對數據在物理機和虛擬機之間的遷移,備份和恢復作得至關出色,惋惜相關的資料很少,因此瞭解得也頗有限。
Symantec Backup Exec的功能很是全面,這一點,能夠爲其它備份軟件的開發提供方向性的參考。它支持的備份平臺有NetWare,Macintosh,Linux,Unix,Windows,支持的應用軟件有SAP,SharePoint,SQL Server,Exchange,DB2,Lotus Domino,Active Directory,Enterprise Vault,支持的虛擬機有VMWare,Hyper-V。