准备NFS共享存储

CloudStack需要主存储和辅助存储空间(参阅 云基础设施概述)。两种存储都可以是NFS共享存储。这节描述如何在CloudStack中添加存储。

注解

NFS is not the only option for primary or secondary storage. For example, you may use Ceph RBD, GlusterFS, iSCSI, and others. The choice of storage system will depend on the choice of hypervisor and whether you are dealing with primary or secondary storage.

主存储和辅助存储的需求描述:

典型地安装使用一个独立的NFS 服务器。参阅 使用独立的NFS服务器.

你也可以使用管理服务节点作为NFS服务器。这是更为典型的安装,部署更大的环境在技术上是可行的。参阅 使用管理服务器作为NFS服务器.

使用独立的NFS服务器

这一节描述如何在存储系统中为辅助存储和主存储(可选)设置NFS共享,它运行在一个与管理控制服务器不同的独立节点。

以下步骤的命令取决于你的操作系统版本。

警告

(仅KVM)确保没有任何卷被挂载到你的NFS挂载点上。

  1. 在存储服务器上,创建一个用于辅助存储的NFS共享,如果同时也用于主存储,则创建2个NFS共享,例如:

    1. # mkdir -p /export/primary
    2. # mkdir -p /export/secondary
  2. 配置新的目录作为NFS输出,编辑/etc/exports。使用 rw,async,no_root_squash,no_subtree_check 输出NFS共享目录。例如:

    1. # vi /etc/exports

    插入如下行。

    1. /export *(rw,async,no_root_squash,no_subtree_check)
  3. 输出/export目录。

    1. # exportfs -a
  4. 在管理服务器上,创建一个辅助存储的挂载点。例如:

    1. # mkdir -p /mnt/secondary
  5. 在你的管理服务器上挂载辅助存储。更换下面示例中的NFS服务器名称和NFS共享路径为你自己的。

    1. # mount -t nfs nfsservername:/nfs/share/secondary /mnt/secondary

使用管理服务器作为NFS服务器

本节讲述如何在管理服务器节点上设置主存储和辅助存储的NFS共享目录。这是典型的安装部署,但是部署更大的环境在技术上可行的。假设你的主机上拥有少于16TB的存储空间。

以下步骤的命令取决于你的操作系统版本。

  1. 在 RHEL/CentOS系统上,你需要安装 nfs-utils包:

    1. $ sudo yum install nfs-utils
  2. 在管理服务器主机上,创建两个目录用作主存储和辅助存储。例如:

    1. # mkdir -p /export/primary
    2. # mkdir -p /export/secondary
  3. 配置新的目录作为NFS输出,编辑/etc/exports。使用 rw,async,no_root_squash,no_subtree_check 输出NFS共享目录。例如:

    1. # vi /etc/exports

    插入如下行。

    1. /export *(rw,async,no_root_squash,no_subtree_check)
  4. 输出/export目录。

    1. # exportfs -a
  5. 编辑/etc/sysconfig/nfs文件。

    1. # vi /etc/sysconfig/nfs

    取消如下行的注释:

    1. LOCKD_TCPPORT=32803
    2. LOCKD_UDPPORT=32769
    3. MOUNTD_PORT=892
    4. RQUOTAD_PORT=875
    5. STATD_PORT=662
    6. STATD_OUTGOING_PORT=2020
  6. 编辑 /etc/sysconfig/iptables文件。

    1. # vi /etc/sysconfig/iptables

    在INPUT链开始处添加如下行, 处为你正在使用的网络:

    1. -A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 111 -j ACCEPT
    2. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 111 -j ACCEPT
    3. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 2049 -j ACCEPT
    4. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 32803 -j ACCEPT
    5. -A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 32769 -j ACCEPT
    6. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 892 -j ACCEPT
    7. -A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 892 -j ACCEPT
    8. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 875 -j ACCEPT
    9. -A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 875 -j ACCEPT
    10. -A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 662 -j ACCEPT
    11. -A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 662 -j ACCEPT
  7. 运行如下命令:

    1. # service iptables restart
    2. # service iptables save
  8. 如果客户端和服务器之间使用NFS v4进行通讯,在hypervisor主机和管理服务器上的/etc/idmapd.conf文件中添加你的域名。

    1. # vi /etc/idmapd.conf

    从idmapd.conf文件中的Domain开始行移除字符#,并替代文件中的该值为你自己的域名。在下面的示例中,域名为company.com.

    1. Domain = company.com
  9. 重启管理服务器主机。

    两个NFS共享 /export/primary和 /export/secondary已经建立。

  10. 强烈建议您测试以确保之前的步骤已经成功。

    1. 登陆hypervisor主机。

    2. 确定NFS和rpcbind正在运行。具体命令可能因您的操作系统而不同。例如:

      1. # service rpcbind start
      2. # service nfs start
      3. # chkconfig nfs on
      4. # chkconfig rpcbind on
      5. # reboot
    3. 重新登录到hypervisor主机并尝试挂载/export目录。例如,替代你自己的管理服务器名称:

      1. # mkdir /primary
      2. # mount -t nfs <management-server-name>:/export/primary
      3. # umount /primary
      4. # mkdir /secondary
      5. # mount -t nfs <management-server-name>:/export/secondary
      6. # umount /secondary