存储设置

CloudStack被设计为可以支持广泛的商业级和企业级存储设备。如果所选的hypervisor支持,也可以使用本地存储。 所支持的虚拟磁盘类型取决于不同的hypervisor。

存储类型

XenServer vSphere KVM
NFS

支持

支持

支持

iSCSI

支持

通过VMFS支持

通过集群文件系统支持

Fiber Channel

通过Pre-existing SR支持

支持

通过集群文件系统支持

Local Disk

支持

支持

支持

针对KVM使用集群逻辑卷管理器(CLVM),不受CloudStack官方支持。

小规模设置

在小规模设置中,一个NFS服务器可以同时作为主存储和辅助存储。只需要NFS服务器有两个独立的共享目录,一个用于主存储,另一个用于辅助存储。

辅助存储

CloudStack被设计为支持多种可扩展的辅助存储系统。唯一的要求就是辅助存储系统支持NFS协议。

注解

存储服务器应该有大量磁盘,理想情况下磁盘应该由硬件RAID控制器管理。现代的硬件RAID控制器支持热插拔功能并独立于操作系统之外,这样你就可以替换损坏的磁盘而不影响正在运行的操作系统。

配置实例

在本节中我们将通过几个实例说明,如何设置存储并使NFS和iSCSI存储系统正常工作。

基于本地硬盘和DAS的NFS服务

本节描述如何在一个标准的Linux系统中配置NFS输出。具体的命令取决于操作系统版本。

  1. 在存储服务器上安装RHEL/CentOS 发行版

  2. 如果根卷的大小超过2TB,创建一个小点的启动卷用于安装RHEL/CentOS,根分区保留20GB就足够了。

  3. 系统安装好以后,创建一个名为 /export的目录。可以在根分区下创建,或者挂载一个较大的磁盘卷。

  4. 如果你在一台主机上有超过16TB的存储空间, 则创建多个EXT3文件系统和多个NFS输出,单个EXT3文件系统不能超过16TB。

  5. /export目录创建后,运行如下命令配置NFS输出。

    # echo "/export <CIDR>(rw,async,no_root_squash,no_subtree_check)" >> /etc/exports
    

    根据你的部署需求,调整如上参数。

    • 限制NFS输出. 强烈建议通过指定子网掩码来限制NFS访问权限,(例如“192.168.1.0/24”)。只允许规定的集群才能访问, 避免非集群成员访问。 且管理网络和存储网络必须能够访问;如果2个网络相同,那么一个CIDR就足够了。 如果你是单独的存储网络那么必须提供独立的CIDR或者一个足够大的CIDR可以包含它们2个。

      下面是一个分隔的CIDRs的示例:

      /export 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check) 10.50.1.0/24(rw,async,no_root_squash,no_subtree_check)
      
    • 移除async异步标记. 标志允许NFS服务器在提交并写入磁盘操作前就先返回相应,来提高性能。请在关键生产部署中移除异步标志。

  6. 运行下面的命令启动NFS服务。

    # chkconfig nfs on
    
  7. 编辑/etc/sysconfig/nfs,并取消如下行的注释。

    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    RQUOTAD_PORT=875
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020
    
  8. 编辑/etc/sysconfig/iptables,添加如下行的记录到INPUT链的开始部分。

    -A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
    -A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
    -A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
    -A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
    -A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
    
  9. 重启服务

    NFS共享目录/export已经被创建

注解

进行复制和粘贴操作时,执行前确保粘贴内容为单行。一些文档阅读器可能会引起不必要的文本换行。

基于iSCSI的NFS服务

使用以下步骤创建基于iSCSI卷的NFS服务。这些步骤适用于RHEL/CentOS 5发行版。

  1. 安装iscsiadm。

    # yum install iscsi-initiator-utils
    # service iscsi start
    # chkconfig --add iscsi
    # chkconfig iscsi on
    
  2. 发现ISCSI target。

    # iscsiadm -m discovery -t st -p <iSCSI Server IP address>:3260
    

    例如:

    # iscsiadm -m discovery -t st -p 172.23.10.240:3260 172.23.10.240:3260,1 iqn.2001-05.com.equallogic:0-8a0906-83bcb3401-16e0002fd0a46f3d-rhel5-test
    
  3. 登录

    # iscsiadm -m node -T <Complete Target Name> -l -p <Group IP>:3260
    

    例如:

    # iscsiadm -m node -l -T iqn.2001-05.com.equallogic:83bcb3401-16e0002fd0a46f3d-rhel5-test -p 172.23.10.240:3260
    
  4. 发现SCSI磁盘,例如:

    # iscsiadm -m session -P3 | grep Attached
    Attached scsi disk sdb State: running
    
  5. 格式化磁盘为ext3类型并挂载卷。

    # mkfs.ext3 /dev/sdb
    # mkdir -p /export
    # mount /dev/sdb /export
    
  6. 添加磁盘到/etc/fstab并确保在启动时能被挂载。

    /dev/sdb /export ext3 _netdev 0 0
    

现在你可以建立/export共享目录

  • 限制NFS输出. 强烈建议通过特定的子网和掩码限制NFS访问权限(例如”192.168.1.0/24”), 只允许规定的集群才能访问, 避免非集群成员访问并非故意的情况下删除所有数据。 且管理网络和存储网络必须能够访问;如果2个网络相同,那么一个CIDR就足够了。 如果你是单独的存储网络那么必须提供独立的CIDR或者一个足够大的CIDR可以包含它们2个。

    下面是一个分隔的CIDRs的示例:

    /export 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check) 10.50.1.0/24(rw,async,no_root_squash,no_subtree_check)
    
  • 移除async异步标记. 标志允许NFS服务器在提交并写入磁盘操作前就先返回相应,来提高性能。请在关键生产部署中移除异步标志。