---
title: 服务端部署
description: "共需要部署两个ZooKeeper集群，bcm-zk集群和ccm-zk集群。bcm-zk存储加速节点配置信息，ccm-zk存储GlobalCache集群信息。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200SPC2/sds/kunpengglobalcache_06_0032.html
sourcePath: /source/zh/kunpengboostkithistory/2200SPC2/sds/kunpengglobalcache_06_0032.html
indexId: 2649df0a2d46253f1c0ab4c57fcbff47c358fc38a24969a5b94ff7f90f1c2b9c78
---
# 服务端部署

#### 部署ZooKeeper集群

共需要部署两个ZooKeeper集群，bcm-zk集群和ccm-zk集群。bcm-zk存储加速节点配置信息，ccm-zk存储GlobalCache集群信息。

配置注意项：

- gcache.conf如果故障域配置为机架，要求尽量将zookeeper集群的各个节点部署到不同的机架上，以防某个机架下电时，整个zk集群不可用的情况发生。
- gcache.conf和bcm.xml两个文件中的zk_server_list的需要保证和实际配置集群一致，如果不一致会出现以下两种现象：

  - zk_server_list的格式为"host1:port1, host2:port2, host3:port3"，如果出现无法识别ip的host，那么connect会直接失败（如下图日志）。
  - 如果host都能识别，但是存在port配错，或者host上没有部署znode，那么连接时会出现重试几次后才能成功。
    服务端提供配置文件配置服务端侦听端口，默认服务端侦听端口：7880和7881，支持客户可扩展端口范围为7880-7889


- CCM-ZK部署

  1. 部署ccm ZooKeeper。

    a. 进入zkData目录创建并修改myid文件。
      1 2 cd /opt/apache-zookeeper-3.6.3-bin && mkdir zkData cd zkData && echo 1 > myid

      在ceph1节点将“myid”的值设置为“1”，ceph2/ceph3节点则分别设置“myid”的值为“2”和“3”。

    b. 进入“conf”目录，修改zoo.cfg的配置，注意修改dataDir的位置和server对应的端口号。
      1 2 3 cd /opt/apache-zookeeper-3.6.3-bin/conf mv zoo_sample.cfg zoo.cfg vi zoo.cfg

      1 2 3 4 5 6 7 8 9 10 11 12 tickTime=1000 initLimit=10 syncLimit=2 dataDir=/opt/apache-zookeeper-3.6.3-bin/zkData clientPort=2181 server.1=ceph1:2888:3888;2181 server.2=ceph2:2888:3888;2181 server.3=ceph3:2888:3888;2181 autopurge.purgeInterval=3 autopurge.snapRetainCount=3 maxClientCnxns=333 4lw.commands.whitelist=*

      需要修改的参数配置建议如表1所示。

**表1 参数释义**

| 参数名称 | 参数说明 | 配置建议 |
| --- | --- | --- |
| dataDir | ZooKeeper数据存放目录。 | 请根据实际情况填写 |
| server.x | ZooKeeper服务ID。 | 主机名（IP）:2888:3888 |
| autopurge.purgeInterval | 清理历史快照的时间间隔，单位为小时。 可以设置时间周期，在业务不繁忙的时候进行清理。 | 3 |
| autopurge.snapRetainCount | 保留最近的多少个历史快照，用于数据恢复，最小值为3。 | 3 |
| maxClientCnxns | 同一台客户端与该server最大连接数，默认为60。 | 1000/zk节点数，三节点为333，四节点为250，以此类推 |
| 4lw.commands.whitelist | ZooKeeper4字命令白名单，默认是关闭的。 | \* |


    c. 修改日志文件配置项，防止日志文件过大。
      1 vi log4j.properties

      1 2 zookeeper.log.maxfilesize=20MB zookeeper.log.maxbackupindex=100

      1 vi /opt/apache-zookeeper-3.6.3-bin/bin/zkEnv.sh

      1 2 3 4 if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi

      需要修改的参数配置建议如表2所示。

**表2 参数释义**

| 参数名称 | 参数说明 | 配置建议 |
| --- | --- | --- |
| zookeeper.log.maxfilesize | ZooKeeper日志文件最大大小。 | 20MB |
| zookeeper.log.maxbackupindex | ZooKeeper日志文件最大个数。 | 100 |
| ZOO\_LOG4J\_PROP | Zookeeper日志文件输出规则 | INFO,ROLLINGFILE |


    d. 进入“/opt/apache-zookeeper-3.6.3-bin/bin”目录，修改zkServer.sh文件。
      1 2 cd /opt/apache-zookeeper-3.6.3-bin/bin vi zkServer.sh

    e. 添加如下内容。
      1 export LD_LIBRARY_PATH="/opt/gcache/lib"

    f. 修改/opt/apache-zookeeper-3.6.3-bin/bin/zkEnv.sh，添加JAVA_HOME路径。

```
vim /opt/apache-zookeeper-3.6.3-bin/bin/zkEnv.sh
```


      添加如下内容。

      1 JAVA_HOME="/usr/local/jdk8u282-b08"

    g. 修改目录属组权限。
      1 chown globalcacheop:globalcache -R /opt/apache-zookeeper-3.6.3-bin


- BCM-ZK部署

  1. 部署bcm ZooKeeper。

    a. zkData目录创建并修改myid文件。
      1 2 cd /opt/apache-zookeeper-3.6.3-bin-bcm && mkdir zkData cd zkData && echo 1 > myid

      在ceph1节点将“myid”的值设置为“1”，ceph2/ceph3节点则分别设置“myid”的值为“2”和“3”。

    b. 进入“conf”目录，修改zoo.cfg的配置，注意修改dataDir的位置和server对应的端口号。
      1 2 3 cd /opt/apache-zookeeper-3.6.3-bin-bcm/conf mv zoo_sample.cfg zoo.cfg vi zoo.cfg

      1 2 3 4 5 6 7 8 9 10 11 12 tickTime=1000 initLimit=10 syncLimit=2 dataDir=/opt/apache-zookeeper-3.6.3-bin-bcm/zkData clientPort=2182 server.1=ceph1:2889:3889;2182 server.2=ceph2:2889:3889;2182 server.3=ceph3:2889:3889;2182 autopurge.purgeInterval=3 autopurge.snapRetainCount=3 maxClientCnxns=333 4lw.commands.whitelist=*

      需要修改的参数配置建议如表1所示。

    c. 修改日志文件配置项，防止日志文件过大。
      1 vi log4j.properties

      1 2 zookeeper.log.maxfilesize=20MB zookeeper.log.maxbackupindex=100

      1 vi /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkEnv.sh

      1 2 3 4 if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi

      需要修改的参数配置建议参考CCM-ZK配置表2。

    d. 进入“/opt/apache-zookeeper-3.6.3-bin-bcm/bin”目录，修改zkServer.sh文件。
      1 2 cd /opt/apache-zookeeper-3.6.3-bin-bcm/bin vi zkServer.sh

    e. 添加如下内容。
      1 export LD_LIBRARY_PATH="/opt/gcache/lib"

    f. 修改/opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkEnv.sh，添加JAVA_HOME路径。

```
vim /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkEnv.sh
```


      添加如下内容。

      1 JAVA_HOME="/usr/local/jdk8u282-b08"

    g. 修改目录属组权限。
      1 chown globalcacheop:globalcache -R /opt/apache-zookeeper-3.6.3-bin-bcm


推荐使用单数节点的ZooKeeper集群，偶数节点的ZooKeeper可能会导致数据不一致。


#### ZooKeeper开机启动配置

在部署bcm-zk和ccm-zk的节点上设置zookeeper开机自动启动。用户根据当前节点实际部署zookeeper类型进行配置，以下示例节点同时部署了bcm-zk和ccm-zk。

1. 进入到“/etc/rc.d/init.d”目录下，新建一个ZooKeeper脚本，并添加权限。
  1 2 3 cd /etc/rc.d/init.d/ touch zookeeper chmod 700 zookeeper

2. 编辑ZooKeeper脚本。
  1 vim zookeeper

```
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/local/jdk8u282-b08
case $1 in
start)
su globalcacheop /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start
su globalcacheop /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkServer.sh start
;;
stop)
su globalcacheop /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop
su globalcacheop /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkServer.sh stop
;;
status)
su globalcacheop /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh status
su globalcacheop /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkServer.sh status
;;
restart)
su globalcacheop /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh restart
su globalcacheop /opt/apache-zookeeper-3.6.3-bin-bcm/bin/zkServer.sh restart
;;
*) echo "require start|stop|status|restart" ;;
esac
```


3. 添加到开机启动。

```
chkconfig --add zookeeper
```


4. 检查是否添加成功。

```
chkconfig --list
```


#### 部署Global Cache

1. 服务端gcache.conf配置项配置。

```
vi /opt/gcache/conf/gcache.conf
```


  以下为gcache.conf的全量可配置项，其中用#注释的配置项为默认项，即如果用户不配置的话，该配置项就会以默认值生效，如果用户取消注释进行配置，程序会以用户的配置值生效。 非默认项的配置项为必须配置项，即配置文件必须存在这些配置项，用户可以自行配置生效。 gcache.conf中配置项以单元标签进行分类，注意配置项与单元标签是相关的，如果A单元的配置项配置到B单元的标签下不会生效 单元内的标签可以无序(A标签下的item1可以在item2之前也可以在之后，但是必须在A标签下)，单元也可以无序(A单元可以在B单元之前，B单元也可在A单元之前)。 ccm单元为ccm服务专属配置单元，gc、sa、global单元为globalcache服务专属配置单元，其余单元为共享配置单元。服务启动会校验专属配置单元和共享配置单元中的配置项。

```
## 注意关于文件夹,文件路径，路径配置项的值长度最长为128，过长会被判断非法
## ---------------------------- log ----------------
# [log]
# log_flush_interval = 500         ## 日志刷盘频率，单位毫秒，range:[0,2147483647]
# log_size = 20971520              ## 最大备份日志大小，单位bytes,range:[0,20971520]
# log_num = 100                    ## 最大日志备份文件数量，单位个,range:[0,2147483647]
# log_level = INFO                 ## 日志打印级别阈值，range:CRI,ERR,WARN,INFO,DBG
# log_file_path = /var/log/gcache/                      ## 日志文件路径
# log_backup_file_path = /var/log/gcache/backup/        ## 日志备份文件路径
# log_file_path_tmp = /opt/gcache/tmp/                  ##
# log_backup_file_path_tmp = /opt/gcache/tmp/backup     ##
# log_disk_threshold = 80                               ## range:[0,100]
# log_disk_interval = 1                                 ## range:[0,2147483647]
# log_mod_level = 386:INFO                              ## 各模块日志级别，书写格式:moduAId:logLevel,modiBId:logLevel
# zk_log_level = zk_log_level_info                      ## zk日志级别,range: zk_log_level_error,zk_log_level_warn, zk_log_level_info, zk_log_level_debug
# log_retention_period = 31536000                       ## 日志留存期，单位秒
## --------------------------security------------------------
[security]
tls_status=on                                           ## 是否开启tls,range:on,off。注意如果配置为on，需要security标签下的所有配置项合法，比如kmc，cert路径文件存在；如果配置是off，那么启动时不会校验该单元标签下的配置项
# tls_version = 1.3                                     ## tls协议版本,目前只支持1.3
# max_connect = 4096                                    ## ssl最大链接数,range:[0,40960]
# portid_start = 7880                                   ## 端口号起点,range:[1024,65535]
# portid_end = 7889                                     ## 端口号终点,range:[1024,65535]
# cert_check_period_days = 3                            ## 证书过期检测周期天数,range:[0,2147483647]
# cert_check_warnning_days = 90                         ## 证书过期告警提前天数,range:[0,2147483647]
# tls_cipher_list = TLS_AES_256_GCM_SHA384              ## tls算法, range:TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_CCM_SHA256, TLS_AES_128_CCM_8_SHA256
# cert_path = /opt/gcache/secure/Certs                  ## cert相关文件路径
# ca_file = ca.crt                                      ## ca证书文件名，所在目录为cert_path配置路径
# keypass_file = identity.ks                            ## 口令文件名称，所在目录为cert_path配置路径
# agent_cert_file = agent.crt                           ## 设备证书文件名称，所在目录为cert_path配置路径
# public_key_file = agent.common                        ## 设备公钥文件名称，所在目录为cert_path配置路径
# private_key_file = agent.self                         ## 设备私钥文件名称，所在目录为cert_path配置路径
# revoke_crl_file = revoke.crl                          ## 吊销列表文件名称，所在目录为cert_path配置路径
# kmc_path = /opt/gcache/secure/kmc                     ## kmc相关文件路径
# kmc_primary_ksf = kmc.primary.ks                      ## kmc primary密钥文件名，所在目录为kmc_path配置路径
# kmc_standby_ksf = kmc.standby.ks                      ## kmc standby密钥文件名，所在目录为kmc_path配置路径
## -------------------------- gcrpc -----------------
[gcrpc]
ccm_address = 192.168.1.108:7910                            ## ccm进程的rpc server侦听地址，ip与public_ipv4_addr保持一致
gc_address  = 192.168.1.108:7915                            ## gc进程的rpc server侦听地址，ip与public_ipv4_addr保持一致
# -----------------------------proxy-----------------------------
[proxy]
ceph_conf_path = /opt/gcache/ceph/ceph.conf                ## ceph配置文件路径
ceph_keyring_path = /opt/gcache/ceph/ceph.client.admin.keyring     ## ceph keyring文件路径
# core_number = 26,27,28,29                           ## CephProxy绑核信息，其中每个数字表示CPU ID
# bind_core = 1                                       ## 是否绑核，1表示绑核，0表示不绑核，为0时，core_number无效
# rados_log_out_file = /var/log/gcache/proxy.log
rados_mon_op_timeout = 5                              ## CephProxy与Monitor交互的请求超时时间，单位秒（s）,如果不设置该选项或者改为0，则表示不超时,range:[0,2147483647]
# rados_osd_op_timeout = 0                            ## osd超时时间，0表示不设置超时,range:[0,2147483647]
# --------------------------- communicate ---------------------------------
[communicate]
public_ipv4_addr = 192.168.1.108                      ## 前端网络IP，服务端与客户端之间的网络, 用于客户端与SA(Sever Adapter)之间通信
# local_port = 7880,7881                              ## 本节点用于接收客户端的请求的端口号，目前最多支持配置8个端口使用端口号,每个需要在[1024,65535]内的没有使用的端口号
zk_server_list = ceph1:2181,ceph2:2181,ceph3:2181     ## 在ZooKeeper中配置的IP，在/etc/hosts中映射得到，ZooKeeper server集群IP:port,如果是多机，则用逗号,隔开; 如果开启了tls_status，那么端口号需要设置为客户端安全端口号2281（与zookeeper server zoo.cfg中的配置相同）。无默认值，必须配置
# -----------------------------ccm----------------------------
[ccm]
# replication_num = 3                                 ## 数据副本数，多节点填3，单节点填1
cache_node_num = 3                                    ## 当前gc集群节点数，该值必须不小于replication_num，不大于集群最大节点数128
pt_num = 4096
pg_num = 1024
# temp_fault_time_out = 1800                          ## 临时故障检测时间，超时判断为永久故障，range:[1,2147483647]
# check_node_up_time_out = 900                        ## 节点启动检测时间，超时判断为节点故障,range:[1,2147483647]
# heartbeat_timeout = 5                               ## 心跳超时时间，单位秒，范围[3,20]
# heartbeat_interval = 1                              ## 心跳上报和检测时间间隔，单位秒，范围[1,3]
# rpc_timeout = 5                                     ## 范围[5,15]
ccm_monitor = 1                                       ## 该节点是否作为ccm部署节点，1为部署，0为不部署
fault_domain = node                                   ## ccm故障域设置，可选值node或者rack
# write_op_throttle = 200                             ## 限制未返回的write operation的数量，0表示不限制
# read_op_throttle = 0                                ## 限制未返回的read operation的数量，0表示不限制
# write_bw_throttle = 600000                          ## 限制未返回的write operation的带宽，单位kb，0表示不限制
# read_bw_throttle = 0                                ## 限制未返回的read operation的带宽，单位kb，0表示不限制
[gc]
cluster_ipv4_addr = 192.168.2.108                     ## 后端网络IP，服务端之间的网络，用于Plog(Persistence Layer)之间通信
## ------------------------ cluster Hb -------------
# # cluster heartbeat parameters, 超时时间为retry_times * retry_interval + interval，如下默认配置为5s
# [clusterHb]
# interval = 1                                        ## 连接上如果没有数据发送的话，多久后发送keepalive探测分组，单位是秒,range:[1,3]
# retry_times = 4                                     ## 关闭连接之前的最大重试次数,range:[3,10]
# retry_interval = 1                                  ## 前后两次探测之间的时间间隔，单位是秒,range:[1,3]
# -----------------------------sa-----------------------------
# [sa]
# core_number_64 = 18,19,20,21,22,23,24,25,26,27          ## server adaptor绑核信息，其中每个数字表示CPU ID
# core_number_96 = 72,73,74,75,76,77,78,79,80,81,82,83
# core_number_128 = 72,73,74,75,76,77,78,79,80,81,82,83
# queue_amount = 8                                     ## 消息处理队列数量,range:[4,5000]
# queue_max_capacity = 512                             ## 消息处理队列最大容量, 最大1024,range:[1,1024]
# msgr_amount = 5                                      ## SA的msgr-worker线程数量,range:[1,16]
# bind_core = 1                                        ## messenger线程是否绑核,range:0 or 1
# bind_queue_core = 1                                  ## pthread绑核,range:0 or 1
# write_qos = 1                                        ## 是否启用wcache的QoS，0表示不启用
# get_quota_cyc = 1000                                 ## 启用wcacheQoS时，读取wcache带宽限额的时间间隔，单位ms
# enable_messenger_throttle = 1                        ## 是否启用Ceph messenger的QoS，0表示不启用
# sa_op_throttle = 30000                               ## 限制未返回的operation的数量，0表示不限制
#-------------------------sa ceph-------------------------
[global]
ms_connection_idle_timeout = 259200                    ## 空闲链接可以保留的时间，单位秒。网络超时配置
# 以下三个参数用于配置Ceph messenger的throttle。启用Ceph messenger的QoS时有效
osd_client_message_size_cap = 8589934592
osd_client_message_cap = 5000000000
ms_dispatch_throttle_bytes = 1258291200
```


2. 执行touch /etc/sudoers.d/globalcache-smartctl创建文件。
  此处以nvme namespace为1作为示例，对于其余namespace对应进行修改。

  1 2 touch /etc/sudoers.d/globalcache-smartctl vi /etc/sudoers.d/globalcache-smartctl

```
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1p[0-9]
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1p[0-9][0-9]
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9]
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9][0-9]
globalcache ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9][0-9][0-9]
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1p[0-9]
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9]n1p[0-9][0-9]
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9]
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9][0-9]
globalcacheop ALL=NOPASSWD:/usr/sbin/smartctl -i /dev/nvme[0-9][0-9]n1p[0-9][0-9][0-9]
```


3. 根据所使用的机器的NVMe盘的使用情况修改bdm.conf配置文件，配置文件在“/opt/gcache/conf”目录下。
  使用如下命令查看系统磁盘，确认哪一块盘是空闲的可以做BDM分区。

  1 lsblk

  如上图所示nvme0n1p13和nvme1n1p13是可以使用的，可以看到nvme0n1p13和nvme1n1p13的容量大小都是2.7T，6中关于创建池的大小设置可以根据实际情况分配。

  bdm.conf配置文件中默认使用/path/to/your/disk作为BDM控制的设备，需要根据实际情况进行修改。通常情况下Ceph的WAL与DB分区会使用一部分NVMe空间，在这种情况下需要手动创建bdm的nvme分区。参考部署OSD节点，partition.sh脚本最后两行创建/dev/nvme0n1p13与/dev/nvme1n1p13给BDM使用，则修改bdm.conf配置文件为： 1 2 3 4 5 6 7 8 9 #metapool:id:<pool_id>:segmentSize:<size>:name:<name> #datapool:id:<pool_id>:segmentSize:<size>:name:<name> metapool:id:0:segmentSize:4096:name:metapool metapool:id:1:segmentSize:262144:name:headpool datapool:id:2:segmentSize:4194304:name:datapool #device:id:<disk_id>:size:<size>:status:<status>:name:<name> device:id:0:sn:0:size:0:status:0:name:/dev/nvme0n1p13 device:id:1:sn:0:size:0:status:0:name:/dev/nvme1n1p13 以上最后两行加粗的盘符即使用的NVMe盘。 当前版本CCM需要保证刚好具有两个分区，否则会导致启动失败。 当前版本需要保证6的WCachePool 180G空间和IndexPool 700G空间，RCachePool使用剩余空间。

4. 修改使用的NVME分区的权限，以/dev/nvme0n1p13和/dev/nvme1n1p13为例。
  1 2 chown globalcache:globalcache /dev/nvme0n1p13 chown globalcache:globalcache /dev/nvme1n1p13

5. 为开机执行脚本添加执行权限。
  1 chmod 700 /etc/rc.d/rc.local

  打开rc.local。 1 vi /etc/rc.d/rc.local

  添加以下内容：

  1 2 chown globalcache:globalcache /dev/nvme0n1p13 chown globalcache:globalcache /dev/nvme1n1p13

6. 执行BDM的格式化操作， 并创建WcachePool、RcachePool、IndexPool、StreamPool。
  BDM格式化前，需要确保gcache.conf配置正确，否则会初始化失败，失败原因可以查看/var/log/messages。 推荐配置： 3.2T nvme盘 * 2：推荐配置1 7.68T nvme盘 * 2：推荐配置2

  推荐配置1： 1 2 3 4 5 sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_format /opt/gcache/conf/bdm.conf --force sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 4194304 180G WCachePool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 67108864 3500G RCachePool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 67108864 700G IndexPool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 4194304 20G StreamPool

  推荐配置2：

  1 2 3 4 5 sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_format /opt/gcache/conf/bdm.conf --force sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 4194304 180G WCachePool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 67108864 7000G RCachePool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 67108864 700G IndexPool sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_createCapPool 4194304 20G StreamPool

7. 使用bdm_df命令查看信息。
  1 sudo -u globalcacheop LD_LIBRARY_PATH=/opt/gcache/lib /opt/gcache/bin/bdm_df

  查看Pool ID 3，4，5，6是否创建成功，并且Pool ID和2的创建顺序正确对应。

8. 创建sysctl.conf配置文件，设置一个进程可以拥有的VMA（虚拟内存区域）的数量。
```
vi /etc/sysctl.conf
```


  a. 新增如下内容。
    1 2 3 4 5 6 7 # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. ## Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there. To override# only specific settings, add a file with a lexically later # name in /etc/sysctl.d/ and put new settings there.## For more information, see sysctl.conf(5) and sysctl.d(5). vm.max_map_count = 1000000

  b. 使修改内容生效。
    1 sysctl -p

9. 为安全起见，建议创建运维用户，禁止root用户的远程管理。

  a. 解除操作系统对普通用户使用su命令的限制。

```
vi /etc/pam.d/su
```


    使用"#"注释掉红框的一行。

  b. 禁止root用户的远程管理。
    1 vi /etc/ssh/sshd_config

    修改PermitRootLogin为no。

  c. 重启sshd服务，使配置生效。
    1 systemctl restart sshd.service

  d. 修改运维账号口令有效期为90天。
    1 passwd -x 90 globalcacheop

    修改运维账号口令到期前7天提醒。

    1 passwd -w 7 globalcacheop

    修改运维账号过期后35天内允许用户修改。

    1 passwd -i 35 globalcacheop


集群启动后，不可以使用/opt/apache-zookeeper-3.6.3-bin-bcm/bin和/opt/apache-zookeeper-3.6.3-bin/bin下的zkCli.sh对ZK集群的信息做出修改，否则会导致严重问题。
