块设备与 CloudStack

CloudStack 4.0 及以上版本可以通过 libvirt 使用 Ceph 块设备, libvirt 会配置 QEMU 与 librbd 交互。 Ceph 会把块设备映像条带化为对象并分布到整个集群,这意味着大个的 Ceph 块设备性能会优于单体服务器。

要让 CloudStack 4.0 及更高版使用 Ceph 块设备,你得先安装 QEMU 、 libvirt 、和 CloudStack 。我们建议在另外一台物理服务器上安装 CloudStack ,此软件最低需要 4GB 内存和一个双核 CPU ,但是资源越多越好。下图描述了 CloudStack/Ceph 技术栈。

Important

要让 CloudStack 使用 Ceph 块设备,你必须有 Ceph 存储集群的访问权限。

CloudStack 集成了 Ceph 的块设备作为它的主要存储( Primary Storage ),下列指令详述了 CloudStack 的安装。

Note

我们建议您安装 Ubuntu 14.04 或更高版本,这样就不用手动编译 libvirt 了。

安装、配置 QEMU 用于 CloudStack 不需要任何特殊处理。确保你的 Ceph 存储集群在运行,配置好 QEMU 即可;然后安装 libvirt 0.9.13 或更高版本(也许得手动编译)并确保它与 Ceph 磨合正常。

Note

Ubuntu 14.04 和 CentOS 7.2 版搭载了 libvirt , 而且默认启用了 RBD 存储池支持。

创建存储池

默认情况下, Ceph 块设备使用 rbd 存储池,建议为 CloudStack NFS 主存储新建一存储池。确保 Ceph 集群在运行,再创建存储池:

ceph osd pool create cloudstack

参考创建存储池为存储池指定归置组数量,参考归置组确定应该为存储池分配多少归置组。

新建的存储池在使用前必须先初始化,用 rbd 工具初始化此存储池:

rbd pool init cloudstack

创建 Ceph 用户

To access the Ceph cluster we require a Ceph user which has the correct credentials to access the cloudstack pool we just created. Although we could use client.admin for this, it’s recommended to create a user with only access to the cloudstack pool.

ceph auth get-or-create client.cloudstack mon 'profile rbd' osd 'profile rbd pool=cloudstack'

Use the information returned by the command in the next step when adding the Primary Storage.

详情见 用户管理

添加主存储

要添加一个 Ceph 块设备作为 Primary Storage ,步骤包括:

  1. 登录 CloudStack 界面;

  2. 点击左侧导航条的 Infrastructure

  3. 选择 Primary Storage 下的 View All

  4. 点击右上角的 Add Primary Storage 按钮;

  5. 按照你的基础设施配置,填入下列信息:

    • Scope (i.e. Cluster or Zone-Wide).

    • Zone.

    • Pod.

    • Cluster.

    • Name of Primary Storage.

    • Protocol 那里选择 RBD

    • For Provider, select the appropriate provider type (i.e. DefaultPrimary, SolidFire, SolidFireShared, or CloudByte). Depending on the provider chosen, fill out the information pertinent to your setup.

  6. 添加集群信息(支持 cephx )。

    • RADOS Monitor 这里填入一个 Ceph 监视器节点的 IP 地址。

    • RADOS Pool 这里填入一个 RBD 存储池的名字。

    • RADOS User 这里填入用户,这个用户应该有此存储池的足够的权限。注:不要加用户名的 client. 部分;

    • RADOS Secret 这里填入用户的密钥;

    • Storage Tags 是可选的。用不用标签由你,关于 CloudStack 的存储标签,请参考存储标签

  7. 点击 OK

创建存储服务

要新建硬盘存储服务,参考创建存储服务 (4.2.0) 创建一存储服务以与 rbd 相配,这样 StoragePoolAllocator 查找合适存储池时就会选择 rbd 存储池;如果存储服务没有与 rbd 标签相配, StoragePoolAllocator 就会选用你创建的存储池(即 clouldstack )。

局限性

  • ClouldStack 只能绑定一个监视器(但你可以创建一个轮询域名来滚动多个监视器)