近兩年來,雲計算的概念炒得火熱火熱的。一般來說,一提到雲計算很容易想到的典型應用就是分布式服務與計算,後端是一個超大的服務器集群提供服務,像Google的GFS,BigTable,Chubble以及MapReduce等等。其實在雲計算中還有一個領域就是服務器虛擬化,將物理服務器的CPU、內存、存儲和網絡虛擬出若干個相互之間安全隔離的虛擬服務器以提高資源使用率,低碳節能環保。像Amazon的EC2(彈性計算雲)服務可以讓你很輕松地啟動和管理虛擬服務器。之所以稱之為彈性,是因為當你的應用訪問量激增時EC2可以自動增加虛擬服務器來滿足應用的需求,當你的應用的流量下降時又自動減少虛擬服務器。
在虛擬化技術中,存儲服務的虛擬化則成為核心與難點,這涉及到虛擬機運行所需的所有的數據包括系統數據和用戶數據,虛擬存儲服務不僅在滿足性能的同時,更要提供高安全的數據服務,比如數據的快照技術以防數據出現錯誤時能進行數據回滾以最大限度的降低用戶的損失。同時Amazon彈性計算雲改變了商業模式,你可以按小時付費或按容量付費,不用再去發大量的錢去購買機器或者服務托管。
Amazon Elastic Block Store
Amazon EBS是專門為Amazon EC2 虛擬機設計的彈性塊存儲服務。Amazon EBS可以為Amazon EC2的虛擬機創建卷volumes,Amazon EBS卷類似沒有格式化的外部卷設備。卷有設備名稱,同時也提供了塊設備接口。你可以在Amazon EBS 卷上駐留自己的文件系統,或者直接作為卷設備使用。EBS定價為每月每GB容量10美分,或者每向卷發出100萬次請求10美分。據Amazon稱,用戶還可以將虛擬機的數據以快照的方式存儲到Amazon的S3存儲服務。
一般的,你可以創建多達20個Amazon EBS卷,卷的大小可從1G到1T。在相同Avaliablity Zone中,每個Amazon EBS卷可以被任何Amazon EC2虛擬機使用。如果你需要超過20個卷,則需要提出申請。
同時,Amazon EBS提供了快照功能。可以將快照snapshot保存了Amazon EBS卷到Amazon S3中,其中第一個快照是全量快照,隨後的快照都是增量快照。你可以使用快照作為新的Amazon EBS卷的起始點,這樣當虛擬機數據受到破壞時你可以選擇回滾到某個快照來恢復你的數據,從而提高了數據的安全性與可用性。
下面介紹下Amazon EBS容錯處理和使用快照加載新的卷
Amazon EBS可以將任何的實例(即運行中的虛擬機)關聯到卷。當一個實例失效,Amazon EBS卷可以自動的解除與失效節點的關聯,從而可以將該卷關聯到新的實例。如下圖所示。步驟如下:
1. 運行中的Amazon EC2實例被關聯到Amazon EBS卷,而這個實例突然失效或者出現異常;
2. 為了恢復該實例,你解除Amazon EBS卷和實例的關系(如果沒有自動解除),加載一個新的Amazon EC2實例,將其關聯到Amazon EBS卷;
3. 在Amazon EBS卷失效的情況下(幾率極低),你可以根據快照創建一個新的Amazon EBS卷。
下面介紹快照的使用:
我們可以使用Amazon EBS快照作為一個起點來加載若干個新卷。加載過程如下:
1. 你現在有個大數據量的Web Service服務正在運行;
2. 當數據都正常的時候,你可以為你的卷創建快照,並將這些快照存儲在Amazon S3上;
3. 當服務數據劇增時,你需要根據快照加載新的卷,然後再啟動新的實例,在將新的實例關聯到新的卷;
4. 當服務下降時,你可以關閉一個或多個Amazon EC2實例,並刪除相關的EBS卷。
雖然Amazon沒有詳細說明EBS的實現細節,從上面的快照功能以及EBS的官方文檔可以略知一二:
l 快照需要上傳到S3中,當需要恢復到某個快照則需要將快照從S3下載下來;
l EBS官方文檔指出,EBS為了提高可靠性,EBS卷會有一個後台任務將其數據備份到同一個zone的另一台硬件上;
l EBS官方文檔同時指出,即時EBS有了卷的備份,還不是足夠的高可靠,為此引入了快照功能,將快照存儲到S3上,且第一個快照是全備份,隨後的快照是增量備份,同時不同zone間可以從S3上下載快照;
l EC2與EBS必須處於同一個zone,即EC2實例只能掛在處於同一個zone的EBS卷,且同一個EBS卷不能同時被掛載兩次,即只能掛載給一個EC2實例。
我理解中的amazon的ebs架構圖