NVMe 热移除

  1. 通过主板BMC确认拟移除物理位置NVMe盘对应的SN
  2. 使用 nvme list 查找SN对应的盘符
  3. 使用 mmlsnsd -m|grep $HOSTNAME 查找盘符对应的NSD名称
  4. 使用 mmdeldisk 从文件系统中移除NSD
  5. 使用 mmdelnsd 删除NSD
  6. ls -l /sys/class/block/ 查找盘符对应的BUS ID
  7. 使用 lspci -vvv|grep -a1 NVMe 查找BUS ID对应的 Physical Slot
  8. cd /sys/bus/pci/slots/$slot ($slot替换为上一步查到的Physical Slot)
  9. cat address 确认BUS ID正确
  10. echo 0 > power 下电
  11. lsblk 中已无此盘符
  12. 执行 mmnsddiscover 刷新
  13. 此时对应NVMe盘指示灯应熄灭,拔出此盘

GPFS CES 安装配置

GPFS提供两种高可用NFS服务的方式,分别是Cluster NFS (CNFS)和Cluster Export Services (CES),二者互斥只能选其一。CNFS只支持NFS、CES支持NFS/SMB/Object。CNFS基于Linux kernel的NFS server,NFS的配置不由GPFS管理,元数据性能较好;CES基于用户空间的Ganesha NFS server,GPFS管理NFS配置,数据流式访问性能好。注意两者切换必将导致NFS停机。

设置CES共享目录:此目录每个CES节点应均能访问,此步骤需要整个GPFS集群停机
mmshutdown -a
mmchconfig cesSharedRoot=/share/ces
mmstartup -a

添加CES节点:
mmchnode –ces-enable -N ces1,ces2

配置CES IP:CES IP是专用于提供NFS/SMB/Object服务的虚IP,不可用于内部GPFS通讯,CES IP必须可通过DNS或/etc/hosts解析。每个CES节点上应配置有和CES虚IP相同网段IP的网络接口,GPFS只能给这些网络接口添加子IP。如ces1配置有192.168.1.101/24、ces2配置有192.168.1.102/24,CES IP为192.168.1.11和192.168.1.12
mmces address add –ces-ip 192.168.1.11,192.168.1.12

验证CES IP:
[root@ces1 ~]# mmces address list –full-list
cesAddress cesNode attributes cesGroup preferredNode unhostableNodes
192.168.1.11 ces2 none none none none
192.168.1.12 ces1 none none none none

安装NFS:
yum install pyparsing pygobject2 libwbclient
rpm -ivh gpfs.nfs-ganesha-2.7.5-ibm058.12.el7.x86_64.rpm gpfs.nfs-ganesha-gpfs-2.7.5-ibm058.12.el7.x86_64.rpm gpfs.nfs-ganesha-utils-2.7.5-ibm058.12.el7.x86_64.rpm

安装SMB:
yum install libarchive gdb
rpm -ivh gpfs.smb-4.11.16_gpfs_19-2.el7.x86_64.rpm

启用CES NFS:
mmces service enable nfs

在所有CES节点上启动NFS服务:
mmces service start NFS -a

验证CES NFS:
[root@ces1 ~]# mmces service list -a
Enabled services: NFS
ces1: NFS is running
ces2: NFS is running

推荐创建一个独立的fileset用于NFS:
mmcrfileset share data –inode-space new
mmlinkfileset share data -J /share/data

设置用户认证方式:
mmuserauth service create –data-access-method file –type userdefined

创建NFS共享:
mmnfs export add /share/data –client “192.168.1.100/32(Access_Type=RW)”

检查NFS共享:
[root@ces1 ~]# mmnfs export list

Path Delegations Clients
—————— ———– ————-
/share/data NONE 192.168.1.100/32

 

Prometheus + Grafana 监控 NVIDIA GPU

1.首先安装 NVIDIA Data Center GPU Manager (DCGM),从 https://developer.nvidia.com/dcgm 下载安装

nv-hostengine -t
yum erase -y datacenter-gpu-manager
rpm -ivh datacenter-gpu-manager*
systemctl enable --now dcgm.service

2. 安装 NVIDIA DCGM exporter for Prometheus,从 https://github.com/NVIDIA/gpu-monitoring-tools/tree/master/exporters/prometheus-dcgm 下载手工安装

wget -q -O /usr/local/bin/dcgm-exporter https://raw.githubusercontent.com/NVIDIA/gpu-monitoring-tools/master/exporters/prometheus-dcgm/dcgm-exporter/dcgm-exporter
chmod +x /usr/local/bin/dcgm-exporter
mkdir /run/prometheus 
wget -q -O /etc/systemd/system/prometheus-dcgm.service https://raw.githubusercontent.com/NVIDIA/gpu-monitoring-tools/master/exporters/prometheus-dcgm/bare-metal/prometheus-dcgm.service
systemctl daemon-reload
systemctl enable --now prometheus-dcgm.service

3. 从 https://prometheus.io/download/#node_exporter 下载 node_exporter,手工安装为服务并添加 dcgm-exporter 资料

tar xf node_exporter*.tar.gz
mv node_exporter-*/node_exporter /usr/local/bin/
chown root:root /usr/local/bin/node_exporter
chmod +x /usr/local/bin/node_exporter

cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

sed -i '/ExecStart=\/usr\/local\/bin\/node_exporter/c\ExecStart=\/usr\/local\/bin\/node_exporter --collector.textfile.directory=\/run\/prometheus' /etc/systemd/system/node_exporter.service

systemctl daemon-reload
systemctl enable --now node_exporter.service

4. Grafana 添加这个Dashboard
https://grafana.com/grafana/dashboards/11752

HPE ProLiant DL380 Gen10 不同BIOS设置内存性能测试

硬件环境

2*Intel(R) Xeon(R) Gold 5122 CPU @ 3.60GHz
12*HPE SmartMemory DDR4-2666 RDIMM 16GiB

iLO 5 1.37 Oct 25 2018
System ROM U30 v1.46 (10/02/2018)
Intelligent Platform Abstraction Data 7.2.0 Build 30
System Programmable Logic Device 0x2A
Power Management Controller Firmware 1.0.4
NVMe Backplane Firmware 1.20
Power Supply Firmware 1.00
Power Supply Firmware 1.00
Innovation Engine (IE) Firmware 0.1.6.1
Server Platform Services (SPS) Firmware 4.0.4.288
Redundant System ROM U30 v1.42 (06/20/2018)
Intelligent Provisioning 3.20.154
Power Management Controller FW Bootloader 1.1
HPE Smart Storage Battery 1 Firmware 0.60
HPE Eth 10/25Gb 2p 631FLR-SFP28 Adptr 212.0.103001
HPE Ethernet 1Gb 4-port 331i Adapter – NIC 20.12.41
HPE Smart Array P816i-a SR Gen10 1.65
HPE 100Gb 1p OP101 QSFP28 x16 OPA Adptr 1.5.2.0.0
HPE InfiniBand EDR/Ethernet 100Gb 2-port 840QSF 12.22.40.30
Embedded Video Controller 2.5

软件环境

CentOS Linux release 7.6.1810 (Core)
Linux yaoge123 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Intel(R) Memory Latency Checker – v3.6

Continue reading

安装 GPFS 管理GUI

  1. GUI节点安装 gpfs.gss.pmcollector-.rpm gpfs.gss.pmsensors-.rpm gpfs.gui-.noarch.rpm gpfs.java-.x86_64.rpm
  2. 所有节点安装 gpfs.gss.pmsensors-*.rpm
  3. 初始化收集器节点 mmperfmon config generate –collectors [node list],GUI节点必须是收集器节点
  4. 启用传感器节点 mmchnode –perfmon -N [SENSOR_NODE_LIST]
  5. 设置容量监控节点和间隔 mmperfmon config update GPFSDiskCap.restrict=[node] GPFSDiskCap.period=86400
  6. 设置fileset容量监控节点和间隔 mmperfmon config update GPFSFilesetQuota.restrict=[node] GPFSFilesetQuota.period=3600
  7. GUI节点自动启动systemctl enable gpfsgui

删除

  1. GUI节点:systemctl stop gpfsgui; systemctl disable gpfsgui;
  2. mmlscluster |grep perfmon 查询一下哪些节点,mmchnode –noperfmon -N [SENSOR_NODE_LIST]
  3. mmperfmon config delete –all
  4. 清空数据库 psql postgres postgres -c “drop schema fscc cascade”
  5. 删除相关的rpm包 yum erase gpfs.gss.pmcollector gpfs.gss.pmsensors gpfs.gui gpfs.java
  6. mmlsnodeclass 查询有哪些节点,分别用mmchnodeclass GUI_SERVERS delete -N <……> 和 mmchnodeclass GUI_MGMT_SERVERS delete -N <……> 删除

浪潮刀片和机架的一些问题

用了四年的浪潮NF5270M3机架服务器、I8000刀箱和NX5440刀片服务器,总结一下碰到的管理问题

  1. 浪潮认为刀片BMC的IP应该紧跟着刀箱管理模块的IP顺序增加,比如刀箱管理模块是192.168.1.10,那么第一个刀片就应该是192.168.1.11。不这样设置会出现一些问题,如按刀片上的KVM按钮会亮红灯无法切换,需要SSH到刀片的BMC里用命令行修改一些配置文件
  2. 使用浏览器访问刀片的BMC必须用IP,用hostname的访问打开IP KVM会报错无法使用
  3. 在Linux下打开刀片的IP KVM报错无法使用,Windows下则正常,新的刀片已解决此问题
  4. 刀箱管理模块无法发送报警邮件,NTP配置无法保存且也没有同步时间,无发送syslog功能
  5. 机架BMC发送报警测试邮件正常,但是实际出现故障(如移除电源模块)时却没有发送邮件
  6. 刀箱电源风扇模块故障时前面板报警灯不亮,只在刀箱背后的电源风扇模块上有指示灯变红
  7. 机架RAID卡故障,如硬盘故障,前面板报警灯不亮

GPFS 创建 CNFS

GPFS有两种NFS导出方式,一是Cluster Export Services (CES) NFS,二是clustered NFS (CNFS)。CNFS使用Linux内核的nfsd,提供了较好小文件操作性能,当然也只支持NFS。CES使用用户空间Ganesha的nfsd,连续读写性能较好,CES还支持SMB和Object存储。

CNFS通过动态的调整IP地址来提供NFS的HA,只能提供故障转移不支持负载均衡,下面以nfs1,nfs2两个节点配置CNFS为例

  1. 确保所有服务端和客户端节点与同一个时钟源严格同步时间,服务端节点需要mmchlicense server
  2. 为了防止故障切换时出现写入问题,CNFS export共享目录的文件系统需指定syncnfs挂载选项
    mmchfs fsyaoge123 -o syncnfs
  3. 在每个服务端上面配置相同的/etc/exports,不同目录的fsid必须不同,不同服务端上面同一个目录的fsid必须相同,1.1.1.10/1.1.1.11是客户端IP
    /fsayaoge123/nfs 1.1.1.10(ro,fsid=11) 1.1.1.11(rw,fsid=11)
  4. 在每个服务端上面设置nfsd自动启动
    systemctl enable nfs-server
  5. 定义CNFS的共享目录,最好是一个单独小的文件系统且不被NFS共享出去
    mmchconfig cnfsSharedRoot=/fs2yaoge123/cnfs
  6. 每个服务端使用一个额外的静态IP(onboot=no)用于NFS共享,注意这个IP不能用于GPFS,将这个interface启动起来
  7. 在每个服务端上进行配置,ip_address_list为上面配置的专用于NFS的ip,node为这个节点在GPFS里面的主机名
    mmchnode --cnfs-interface=ip_address_list -N node
    mmchnode --cnfs-interface=1.1.1.1 -N nfs1  //配置nfs1使用1.1.1.1做为NFS专用IP
  8. 查一下rpc.mountd绑定的端口号,配置上去
    mmchconfig cnfsMountdPort=mountd_port -N node
  9. NFS客户端挂载时需加选项 -o sync,hard,intr,nfs1为主用
    mount -o sync,hard,intr 1.1.1.1:/fsyaoge123/nfs /mnt
  10. 测试关机、停止nfsd、停止gpfs三种情况下是否会自动切换

查看CNFS节点

mmlscluster --cnfs

删除CNFS节点

mmchnode --cnfs-interface=DELETE -N "nfs1,nfs2"

 

GPFS 优化

  1. 所有节点需和同一个时钟源严格同步时钟
  2. 一些文件系统操作在defaultHelperNodes上面运行,默认是所有节点,设置为NSD节点可能获得更好的性能
  3. maxMBpS是每个节点的GPFS的吞吐量,可设置为节点IO吞吐量的两倍,特别是IO节点
    1. 默认是2048;单路FDR设置1200,单路QDR设置8000,双路万兆设置5000
  4. GPFS的NSD节点如为专用IO节点,NSD节点没有数据访问则不会缓存任何数据,但是缓存可以为NSD工作线程所用,故可进行如下优化:
    1. 增加pagepool的大小
    2. 将nsdBufSpace设置为最大值(70%)
  5. 磁盘系统优化
    1. RAID segment size × 数据盘个数 = stripe size,GPFS block size应整倍数于stripe size
    2. GPFS block size应整倍数于HBA卡最大IO尺寸
    3. 最好倍数都是1
    4. /sys/block/*/queue/max_sectors_kb
  6.  存储的缓存策略
    1. 顺序IO负载:启用读缓存,禁用任何形式的预读
    2. 随机IO负载和Metadata:启用读写缓存
  7.  对于使用大量文件的GPFS节点,特别是登录节点、NFS/SMB输出节点、登录节点,可进行如下优化:
    1. 提高maxFilesToCache的值,这是缓存文件metadata的数量,最好能提高到并发打开文件数加上最近使用的文件数
    2. 在Linux上面maxStatCache是无效的,所以需要设定maxStatCache为一个较小的值,如512
    3. 按照maxFilesToCache × 3 KB + maxStatCache × 400 bytes估算内存消耗,增加的内存不在pagepool中
    4. 增加pagepool的大小,修改pagepoolMaxPhysMemPct可提高pagepool的上限
  8. 网络优化
    1. net.core.rmem_max = 8388608
      net.core.wmem_max = 8388608
      net.ipv4.tcp_rmem = 4096 262144 8388608
      net.ipv4.tcp_wmem = 4096 262144 8388608
    2. GPFS的socketMaxListenConnections和系统的net.core.somaxconn设置为集群节点数量
  9. sharedMemLimit和maxBufferDescs等看mmfsadm dump fs | head -8输出结果决定是否需要增加
  10. 文件系统的-n参数匹配集群节点数
  11. 后端由大量磁盘或固态盘组成NSD设置ignorePrefetchLUNCount=yes
  12. 用mmlsconfig和mmdiag –config可以查看配置

使用 rrdcached 解决 Ganglia 高 IOPS

用Ganglia监控一个近300个节点的集群,采样时间为默认的15s,加了一些自定义的参数,rrds目录容量74GB,12万个rrd文件。这样的一个规模下,平均每秒写入32MB、8k IOPS,平均每次写入只有4K数据,基本都是gmetad将采样的数据写入rrd文件中。这样高的IOPS对存储还是有明显的压力的,RRDtool中的rrdcached可以将对rrd的updates操作缓存到内存中然后在合并写入硬盘,显著降低了对硬盘的压力。

创建一个rrdcached的服务,编辑文件 /usr/lib/systemd/system/rrdcached.service,内容如下

[Unit]
Description=Data caching daemon for rrdtool
After=network.service
Before=gmetad.service httpd.service

[Service]
Type=forking
PIDFile=/run/rrdcached.pid
ExecStart=/usr/bin/rrdcached -s ganglia -m 664 -l unix:/var/lib/ganglia/rrdcached.sock -s apache -m 777 -P FLUSH,STATS,HELP -l unix:/var/lib/ganglia/rrdcached_limited.sock -b /var/lib/ganglia/rrds -B -p /run/rrdcached.pid

[Install]
WantedBy=multi-user.target
  • rrdcached.sock给gmetad用的、rrdcached_limited.sock限制了可用的操作给WEB前台用
  • -b指定工作目录,-B限制在工作目录下
  • -w指定缓存时间,如果更新时发现超过本文件已经缓存了超过此缓存时间,就放到写入队列中等待写入,默认300s
  • -z指定随机延迟,每一个rrd写入时都插入一个随机延迟,此值不能比-w,默认为0
  • -f指定超时,如果rrd超过此时间还没有更新则写入硬盘

启动服务

systemctl daemon-reload
systemctl enable --now rrdcached.service

修改 /usr/lib/systemd/system/gmetad.service ,在[Unit]和[Service]段修改和添加,并重启gmetad服务

[Unit]
…………
After=network.target rrdcached.service
Requires=rrdcached.service

[Service]
Environment=RRDCACHED_ADDRESS=/var/lib/ganglia/rrdcached.sock
…………
…………

修改前台网页的配置 /etc/ganglia/conf.php 添加一行,并重启httpd服务

$conf['rrdcached_socket'] = "unix:/var/lib/ganglia/rrdcached_limited.sock";