ZStack 0.9 版本今天發布,歡迎大家測試試用。在這個版本里,ZStack 新加了兩大重量級的功能:

支持分散式存儲 Ceph

從0.9版本開始,ZStack正式支持Ceph作為主存儲和備份存儲的設備。為了最大化的利用Ceph存儲的高級能力, 在一個Zone內,用戶需要使用一個Ceph Cluster同時作為主存儲和備份存儲。這樣做的好處是, 避免了用戶在創建新的雲主機、備份Volume等操作時,主存儲和備份存儲之間不必要的數據拷貝, 所有的數據操作都是通過COW(copy on write)來實現的。

ack和Ceph之間的交互是通過部署在Ceph Mon伺服器上的Agent來完成的。用戶可以動態的添加或刪除Ceph的Mon伺服器。

Ceph 備份存儲

Ceph 備份存儲只能和Ceph主存儲配合使用

使用Ceph的一個主要的好處是因為Ceph支持COW,所以在ZStack中,如果使用了Ceph的備份存儲,那麼主存儲也必須是同一個Ceph。  由於Ceph備份存儲和主存儲都使用相同的Ceph cluster,所以用戶不能把一個Ceph的備份存儲掛載到多個ZStack的Zones上。  最好的使用方法是每一個Zone使用獨立的Ceph cluster作為同一套主存儲和備份存儲。    換句話說,當ZStack的Zone僅僅掛載了Ceph作為備份存儲的時候,你不能再使用NFS、本地存儲以及ISCSI作為該Zone的主存儲。  當一個Zone同時掛載Ceph備份存儲和SFTP備份存儲的時候,可以混用多種主存儲類型。但是需要特別注意的是,  如果雲主機的鏡像文件只存在於Ceph備份存儲的時候,該雲主機只能在Ceph主存儲上創建成功。  假設創建雲主機時選擇的L3網路所在的Cluster上沒有掛載Ceph主存儲,但是該雲主機的鏡像文件只存在在Ceph備份存儲  上,那麼創建雲主機將會發生找不到合適主存儲的失敗。

從UI添加Ceph備份存儲


  1. 選擇類型 'Ceph'

  2. 輸入Ceph mon server的 IP/hostname

  3. 輸入Ceph mon server的 SSH 用戶名

  4. 輸入Ceph mon server的 SSH 密碼

  5. 點擊 'Add'

  6. 重複步驟 3 ~ 5 來添加其他的Ceph Mon伺服器

  7. 點擊 'Next'

通過CLI添加Ceph備份存儲

你可以使用 AddCephBackupStorage 來添加 Ceph 備份存儲. 例如:

>>>AddCephBackupStorage name=ceph monUrls=root:密碼@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125

monUrls 是一個字元串列表,每一個Mon伺服器的信息通過逗號來分割,每一個Mon伺服器的信息遵從如下的格式:

ssh_用戶名:ssh_密碼@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port]

ssh_用戶名ssh_密碼mon_server_ip 是必須的內容,而ssh_port 和 ceph_mon_port是選填的。ceph_mon_port 是Ceph Mon伺服器的埠,默認值為6789. 一個完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789.

指定 pool

AddCephBackupStorage 有一個特別的參數poolName。通過它,用戶可以指定一個存在的Ceph Pool。  當用戶指定一個pool的名字的時候,ZStack會使用這個pool。當這個pool不存在的時候,ZStack將會報告一個添加失敗的錯誤。  當用戶不指定特別的pool名字的時候,ZStack會自動創建一個新的pool。    你可以利用這個功能預先創建一個合適的pool。

動態添加Mon伺服器

在添加了Ceph備份存儲后,用戶還可以給該備份存儲添加新的Ceph Mon伺服器:

>>>AddMonToCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125

動態刪除Mon伺服器

你還可以使用 RemoveMonFromCephBackupStorage 來刪除一個Ceph Mon伺服器。

>>>RemoveMonFromCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monHostnames=192.168.0.123,192.168.0.124

monHostnames 是一個通過逗號分割的字元串列表,裡面是Mon的IP地址。

查詢Ceph備份存儲

使用QueryCephBackupStorage可以查詢所有Ceph備份存儲的詳情:


Ceph主存儲

Ceph主存儲既可以和Ceph備份存儲協同工作,也可以使用SFTP備份存儲。

通過UI添加


  1. 選擇類型 'Ceph'

  2. 輸入Ceph mon server的IP/hostname

  3. 輸入Ceph mon server的SSH 用戶名

  4. 輸入Ceph mon server的SSH 密碼

  5. 點擊 'Add'

  6. 重複步驟 3 ~ 5 來添加其他的Ceph Mon伺服器

  7. 點擊 'Next'

Add through CLI

你可以使用 AddCephPrimaryStorage 來添加一個 Ceph 主存儲。 例如::

>>>AddCephPrimaryStorage name=ceph zoneUuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125

monUrls 是一個字元串列表,每一個Mon伺服器的信息通過逗號來分割,每一個Mon伺服器的信息遵從如下的格式:

ssh_用戶名:ssh_密碼@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port]

ssh_用戶名ssh_密碼mon_server_ip 是必須的內容,而ssh_port 和 ceph_mon_port是選填的。ceph_mon_port 是Ceph Mon伺服器的埠,默認值為6789. 一個完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789.

指定 pool

AddCephPrimaryStorage 有三個個特別的參數imageCachePoolName, rootVolumePoolName, dataVolumePoolName。  通過它們,用戶可以指定存在的Ceph Pool作為主存儲的Pool。  當用戶指定pool的名字的時候,ZStack會使用這個pool。當pool不存在的時候,ZStack將會報告一個添加失敗的錯誤。  當用戶不指定特別的pool名字的時候,ZStack會自動創建三個新的pool。

你可以利用這個功能預先創建合適的pool。在指定Pool的時候,你可以只指定其中的一個或者兩個,然後由ZStack來創建其餘的Pool。