验证全局缓存

  • 验证之前参考《全局缓存 特性指南》中的“安全加固”相关内容,进行安全配置。
  • 启动ZooKeeper服务和全局缓存服务需要使用globalcacheop用户。

配置RBD QEMU

  1. 修改QEMU配置文件。

    1. 打开文件。
      1
      vim /etc/libvirt/qemu.conf
      
    2. “i”键进入编辑模式,参照下图取消“user”“group”的注释。

    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。

  2. 配置全局缓存环境变量到libvirtd服务。

    1. 打开“libvirtd.service”文件。
      1
      vim /usr/lib/systemd/system/libvirtd.service
      
    2. “i”键进入编辑模式,在[service]字段中,添加以下内容。
      1
      2
      Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcache_adaptor_compile/third_part/lib/"
      Environment="C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/gcache_adaptor_compile/third_part/inc/"
      

    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。

  3. 启动libvirt服务。

    1
    2
    systemctl daemon-reload 
    systemctl start libvirtd
    

启动CCM ZooKeeper集群

请在服务端所有节点执行以下操作。

  1. 登录globalcacheop用户。
  2. 进入“/opt/apache-zookeeper-3.6.3-bin/bin”目录。

    1
    cd /opt/apache-zookeeper-3.6.3-bin/bin
    

  3. 启动ZooKeeper服务。

    1
    sh zkServer.sh start
    

  4. 查询ZooKeeper集群信息。

    1
    sh zkServer.sh status
    

    集群被分为一个leader节点和多个follower节点,因此查询回显如下所示。

    • leader节点:
      1
      Mode: leader
      
    • follower节点:
      Mode: follower

若要终止ZooKeeper服务端,执行命令:

1
sh zkServer.sh stop

启动BCM ZooKeeper集群

请在服务端所有节点执行以下操作。

  1. 登录globalcacheop用户。
  2. 进入“/opt/apache-zookeeper-3.6.3-bin-bcm/bin”目录。

    1
    cd /opt/apache-zookeeper-3.6.3-bin-bcm/bin
    

  3. 启动ZooKeeper服务。

    1
    sh zkServer.sh start
    

  4. 查询ZooKeeper集群信息。

    1
    sh zkServer.sh status
    

    集群被分为一个leader节点和多个follower节点,因此查询回显如下所示。

    • leader节点:
      1
      Mode: leader
      
    • follower节点:
      Mode: follower

若要终止ZooKeeper服务端,执行命令:

1
sh zkServer.sh stop

清理ZooKeeper

在启动全局缓存之前,需将ZooKeeper清理干净,否则可能导致未知错误。

  1. 登录globalcacheop用户。
  2. 在CCM ZooKeeper集群创建清理脚本。

    1. 新建“zk_clean.sh”文件。
      1
      vim zk_clean.sh
      
    2. “i”键进入编辑模式,添加以下内容。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      ZK_CLI_PATH="/opt/apache-zookeeper-3.6.3-bin/bin/zkCli.sh"
      echo 'deleteall /ccdb' >> ./zk_clear.txt
      echo 'deleteall /ccm_cluster' >> ./zk_clear.txt
      echo 'deleteall /pool' >> ./zk_clear.txt
      echo 'deleteall /pt_view' >> ./zk_clear.txt
      echo 'deleteall /alarm' >> ./zk_clear.txt
      echo 'deleteall /snapshot_manager' >> ./zk_clear.txt
      echo 'deleteall /ccm_clusternet_link' >> ./zk_clear.txt
      echo 'deleteall /tls' >> ./zk_clear.txt
      echo 'ls /' >> ./zk_clear.txt
      echo 'quit' >> ./zk_clear.txt
      cat < ./zk_clear.txt | sh ${ZK_CLI_PATH}
      echo > ./zk_clear.txt
      rm -rf ./zk_clear.txt
      
    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。

  3. CCM ZooKeeper集群执行“zk_clean.sh”脚本。

    1
    sh zk_clean.sh
    

  4. 检查ZooKeeper是否清理干净。

    如下图所示,[]中仅有zookeeper为清理成功。

  5. 在BCM ZooKeeper集群创建清理脚本。

    1. 新建“bcm_zk_clear.sh”文件。
      1
      vim zk_clean.sh
      
    2. “i”键进入编辑模式,添加以下内容。
      1
      2
      3
      4
      5
      6
      7
      ZK_CLI_PATH="/opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkCli.sh -server localhost:2182"
      echo 'deleteall /bcm_cluster' >> ./zk_clear.txt
      echo 'ls /' >> ./zk_clear.txt
      echo 'quit' >> ./zk_clear.txt
      cat < ./zk_clear.txt | sh ${ZK_CLI_PATH}
      echo > ./zk_clear.txt
      rm -rf ./zk_clear.txt
      
    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。

  6. BCM ZooKeeper集群执行“zk_clean.sh”脚本。

    1
    sh bcm_zk_clear.sh
    

  7. 检查ZooKeeper是否清理干净。

    如下入所示,[]中仅有zookeeper为清理成功。

启动全局缓存

  • 启动前服务端需保证至少180G内存。
  • 为防止服务端因刷新日志的buffer/cache占用过多且free内存长时间不回收,建议卸载openEuler-performance优化包并修改内核配置。
  • echo 20971520 > /proc/sys/vm/min_free_kbytes
  • 启动前建议参考《全局缓存 调优指南》配置调优。
  1. 登录globalcacheop用户。
  2. 在所有服务端节点启动全局缓存服务。

    1
    sudo systemctl start GlobalCache.target
    

  3. 开启新的服务端终端,检查各pool占用情况。

    1
    2
    3
    export LD_LIBRARY_PATH="/opt/gcache/lib"
    cd /opt/gcache/bin
    ./bdm_df
    

    查看各pool占用情况是否发生合理变化。

验证全局缓存

在客户端上执行发IO和fio的命令,检查服务端和客户端之间是否可以进行正常的读写操作以及性能情况。

  1. 生效环境变量。

    1
    source /etc/profile
    

  2. 在客户端Ceph创建pool和请求。

    1
    ceph osd pool create rbd 128
    

  3. 查看pool的ID。

    1
    ceph df
    

    如下图所示,RBD的pool ID为782。

  4. 将RBD的pool ID更新到bcm.xml。

    详细操作请参见《全局缓存 特性指南》中“使用bcmtool”相关内容。

    更新前:

    更新后:

  5. 使用bcmtool执行导入动作。

    1
    2
    cd /opt/gcache_adaptor_compile/third_part/bin/
    ./bcmtool_c import
    

    导入成功的信息如下图。

  6. 在客户端Ceph创建image请求。

    1
    rbd create foo --size 1G --pool rbd --image-format 2 --image-feature layering
    

  7. 进行IO测试。

    1
    rbd bench --io-type rw --io-pattern rand --io-total 4K --io-size 4K rbd/foo
    

  8. 使用fio工具进行读写操作。

    1
    2
    fio -name=test -ioengine=rbd -clientname=admin -pool=rbd -rbdname=foo -direct=1 -size=8K -bs=4K -rw=write --verify_pattern=0x12345678
    fio -name=test -ioengine=rbd -clientname=admin -pool=rbd -rbdname=foo -direct=1 -size=4K -bs=4K -rw=write --verify_pattern=0x8888888 -offset=4K
    

  9. 查看Ceph Pool状态和image信息。

    1
    2
    ceph df
    rbd -p rbd --image foo info
    

  10. 在服务端查看是否正确写入到全局缓存。

    1
    2
    cd /opt/gcache/bin
    ./bdm_df