使用 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";

 

Ubuntu 16.04 改变 Transmission 运行用户

//先停止服务
sudo systemctl stop transmission-daemon.service

//修改文件
vim /etc/init/transmission-daemon.conf
setuid yaoge123
setgid yaoge123

//添加信息
sudo systemctl edit transmission-daemon.service
[Service]
User=yaoge123

//重启服务
sudo systemctl daemon-reload
sudo systemctl start transmission-daemon.service

 

Huawei 5500 v3 VMware 环境部署要点

以下各类版本如无特殊说明均指2017年4月时的情况。

在硬盘域中创建存储池和在存储池中创建LUN/文件系统,都不要把全部空间用尽,否则将来进行扩容等操作时可能会报错。

DIF需要在LUN映射前通过CLI开启。

在最新的V300R003C20SPC200版本中,SAN的重删压缩虽然已经与大多数增值业务不冲突了,但是仍旧和自动分层冲突,启用了重删压缩的LUN的SmartTier必须设定为不迁移。因此可以单独建立一个启用了重删压缩的LUN,并且设定好容量初始分配策略(如优先从容量层分配),这样的LUN用来做存档备份很好。重删默认不会进行逐个字节对比,压缩默认为高性能压缩算法,如需要启用逐个字节对比或高压缩率算法需通过CLI进行配置。

对于LUN

  1. show lun dedup_compress 确认LUN的ID
  2. change lun lun_id=2 dedup_enabled=yes bytecomparison_enabled=yes 打开ID为2的LUN重删逐字节比较
  3. change lun lun_id=2 compression_enabled=yes compression_method=deep 设置ID为2的LUN压缩策略为压缩率优先

对于文件系统

  1. show file_system general 确认文件系统的ID
  2. change file_system dedup_compress file_system_id=3 dedup_enabled=yes bytecomparison_enabled=yes  打开ID为3的文件系统重删逐字节比较
  3. change file_system dedup_compress file_system_id=3 compression_enabled=yes compression_method=deep 设置ID为3的文件系统压缩策略为压缩率优先

ACC重删压缩卡介入卸载CPU负载的条件是,每两分钟检查一次,如果CPU负载高于50%则卸载。

NAS不支持SmartTier,因此给文件系统存储池分配多个层级的存储介质是没有太大意义的。

此存储支持 VMware VAAI,从V300R003C20开始重删压缩LUN也支持VAAI,在ESXi的存储设备中可以看到相应的LUN硬件加速状态为支持。

VVol是VMware 6.0新的功能,让存储了解每一个虚拟机,需要eSDK Storage VASA 2.0支持,当前最新V100R005C60SPC006只支持VMware 6.0u2,存储固件只支持V300R003C00,这显然落后太多了。即便是最新尚未正式推出的eSDK Storage Plugins V200R001 1.0 RC4,VVol和vCenter的插件也只支持VMware 6.0。VVol和自动分层也是冲突的,综上故不建议使用。

vCenter的插件允许在vCenter中查看和配置存储,最新的eSDK Storage V100R005C70不支持最新的存储固件V300R003C20,只支持VMware 5.0/5.1/5.5/6.0,后面肯定是升级到eSDK Storage Plugins,故不建议使用。

华为存储有自己的多路径软件OceanStor UltraPath,需要在ESXi和VCSA上安装相同的版本,ESXi上可以通过命令行或者Update Manager安装,VCSA需要通过命令行安装,UltraPath可以查看和监控很多链路信息。但是VMware已经出6.5d了,UltraPath支持6.5的V200R001还没有正式推出(还在RC3),当前最新的V100R008C50SPC500只支持VMware 5.0/5.1/5.5/6.0,也不支持RHEL 6.9/7.3;多路径做为基本重要的服务,UltraPath和VMware的版本紧密相关,一旦VMware升级UltraPath也必须跟着升级,其过程要参考升级指导书,增加了整个系统后期的维护成本,因此不太建议使用。

使用VMware NMP多路径需要额外配置:

  1. 对于ESXi 5.5/6.0/6.5,T V1 Series, Dorado5100, Dorado2100 G2, T V2 Series, 18000 V1 Series, V3 Series系列存储,仅为双控且未来也没有扩控计划的,推荐启用ALUA,配置ESXi SATP为VMW_SATP_ALUA,PSP为VMW_PSP_RR;
  2. ESXi进入维护模式
  3. 存储端:修改每个主机的每个启动器,勾选使用第三方多路径,切换模式选择ALUA;
  4. SSH登录ESXi
    1. esxcli storage core device list 查看一下存储的Vendor和Model
    2. esxcli storage nmp satp rule add -V HUAWEI -M XSG1 -s VMW_SATP_ALUA -P VMW_PSP_RR -c tpgs_on 添加多路径规则
    3. esxcli storage nmp satp rule list | grep HUAWEI 看一下刚刚添加的规则
  5. ESXi上面修改存储的LUN多路径策略为循环
  6. 重启ESXi,确认存储LUN为VMW_SATP_ALUA和循环
  7. 退出维护模式

定制ESXi安装包

比如Intel J1900 四千兆的无风扇迷你电脑,AHCI(Intel Atom Processor E3800 Series SATA AHCI Controller 8086:0f23)不受ESXi支持,因此需要在ESXi的安装包中添加驱动。

准备工作:

  1. 下载安装VMware PowerCLI
  2. 下载ESXi Offline Bundle放到D:\VMware
  3. 从http://www.v-front.de/p/esxi-customizer-ps.html下载ESXi-Customizer-PS放到D:\vm
  4. 从https://vibsdepot.v-front.de/wiki/index.php/Sata-xahci下载sata-xahci Offline Bundle放到D:\vm

启动VMware PowerCLI,执行下面的命令

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CURRENTUSER

重启计算机,再打开VMware PowerCLI

PowerCLI C:\> d:
PowerCLI D:\> cd vm
PowerCLI D:\vm> .\ESXi-Customizer-PS-v2.4.ps1 -v60 -pkgDir d:\vm -log d:\vm\log.txt -izip 'D:\VMware\update-from-esxi6.0-6.0_update02.zip'
Set-ExecutionPolicy Undefined -Scope CURRENTUSER
PowerCLI D:\vm> Set-ExecutionPolicy Undefined -Scope CURRENTUSER

用D:\vm下面新生成的iso安装ESXi

 

LSF资源限制配置lsb.resources中的USERS和PER_USER

LSF的lsb.resources文件中可以针对用户进行资源使用限制,用户可以用USERS和PER_USER设置,这里列出不同设置下的意义。

USERS=all:所有用户使用资源总和不能超过限制
USERS=A B C:A B C三个用户(组)使用资源总和不能超过限制
PER_USER=all:每个用户使用资源不能超过限制,按照每个用户计算不管用户组
PER_USER=A B C:A B C三个用户(组)的每个用户使用资源不能超过限制,哪怕这里的A B C是用户组,但是还是按照每个用户计算

IB存储的opensm

一台DDN 7700X,双控,每个控制器两个FDR IB口。两台IO节点,每台两个双口FDR IB卡,一个卡双口与存储两个控制器连接,另一个卡单口与集群IB网络连接。

存储和IO节点间是IB直接连接的,没有通过交换机,每条IB链路都是独立的,所以在每条IB链路上都需要有subnet manager。因每个opensm进程只能绑定一个物理端口,而 service opensmd 只能启动一个opensm进程,所以只能在每个io节点上启动两个opensm专门用于管理存储IB链路。

首先用ibstat查一下和存储连接IB口的Port GUID,在/etc/rc.local中添加opensm并且绑定guid,注意前面的sleep是必须的,否则opensm启动失败。

sleep 30
/usr/sbin/opensm -B -g 0x7cfe900300a8bf41
/usr/sbin/opensm -B -g 0x7cfe900300a8bf42

 

LSF 配置NUMA Affinity

首先要给节点启用NUMA Affinity,在lsb.hosts的Host节中添加AFFINITY列,值为Y,如:

Begin Host
HOST_NAME MXJ   r1m     pg    ls    tmp  DISPATCH_WINDOW  AFFINITY 
......
default    !    ()      ()    ()     ()     ()            (Y)      
End Host

启用后用bhost -l -aff可以看到Affinity已经Enable

提交作业时-R参数添加affinity字段如affinity[core:membind=localprefer:distribute=pack]

Dell H730P – Intel SSD 730 RAID5 测试

两台Dell R730(2*E5-2670 v3,64GB内存),RAID卡为PERC H730P Mini(2GB Cache),每台5个Intel SSD 730 480GB做一个RAID5(Strip Size 128KB,Write Back,No Read Ahead),将两台节点上的SSD RAID做成一个GPFS测试。

测试命令 write rewrite read reread
iozone -i 0 -i 1 -r 128K -s 128G -t 2 -+m ./io 2595 2777 4514 4584
iozone -i 0 -i 1 -r 128K -s 2G -t 128 -+m ./io 3034 3823 4543 4582
iozone -i 0 -i 1 -r 128K -s 1G -t 256 -+m ./io 2963 3767 4505 4569
iozone -i 0 -i 1 -r 128K -s 512M -t 512 -+m ./io 2783 3549 2290 2307
iozone -i 0 -i 1 -r 128K -s 256M -t 1024 -+m ./io 2204 3743 2683 2715
iozone -i 0 -i 1 -r 64K -s 128G -t 2 -+m ./io 2504 3927 4474 4581
iozone -i 0 -i 1 -r 64K -s 2G -t 128 -+m ./io 3074 3752 4507 4584
iozone -i 0 -i 1 -r 64K -s 1G -t 256 -+m ./io 2949 3952 4509 4575
iozone -i 0 -i 1 -r 64K -s 512M -t 512 -+m ./io 2826 3565 4481 4554
iozone -i 0 -i 1 -r 64K -s 256M -t 1024 -+m ./io 2288 3647 2656 2751
iozone -i 0 -i 1 -r 32K -s 128G -t 2 -+m ./io 2507 3601 4379 4559
iozone -i 0 -i 1 -r 32K -s 2G -t 128 -+m ./io 3065 3518 4501 4587
iozone -i 0 -i 1 -r 32K -s 1G -t 256 -+m ./io 2956 3540 4516 4582
iozone -i 0 -i 1 -r 32K -s 512M -t 512 -+m ./io 2810 3587 4500 4550
iozone -i 0 -i 1 -r 32K -s 256M -t 1024 -+m ./io 2310 3224 2692 2734
iozone -i 0 -i 1 -r 16K -s 128G -t 2 -+m ./io 2517 3566 4404 4579
iozone -i 0 -i 1 -r 16K -s 2G -t 128 -+m ./io 3058 3524 4494 4571
iozone -i 0 -i 1 -r 16K -s 1G -t 256 -+m ./io 2557 2675 2669 2675
iozone -i 0 -i 1 -r 16K -s 512M -t 512 -+m ./io 2406 2491 2553 2530
iozone -i 0 -i 1 -r 16K -s 256M -t 1024 -+m ./io 2056 1953 2125 2178
iozone -i 0 -i 1 -r 8K -s 128G -t 2 -+m ./io 3179 3620 4421 4513
iozone -i 0 -i 1 -r 8K -s 2G -t 128 -+m ./io 2794 2868 3082 3045
iozone -i 0 -i 1 -r 8K -s 1G -t 256 -+m ./io 1327 1366 1348 1352
iozone -i 0 -i 1 -r 8K -s 512M -t 512 -+m ./io 1242 1269 1304 1253
iozone -i 0 -i 1 -r 8K -s 256M -t 1024 -+m ./io 1214 1121 1164 1151
iozone -i 0 -i 1 -r 4K -s 128G -t 2 -+m ./io 2370 2816 3809 3854
iozone -i 0 -i 1 -r 4K -s 2G -t 128 -+m ./io 1462 1485 1594 1596
iozone -i 0 -i 1 -r 4K -s 1G -t 256 -+m ./io 675 684 716 729
iozone -i 0 -i 1 -r 4K -s 512M -t 512 -+m ./io 623 627 639 643
iozone -i 0 -i 1 -r 4K -s 256M -t 1024 -+m ./io 645 618 575 575

Intel SSD 730 测试

Dell R730(2*E5-2670 v3,64GB内存,H730P),4个Intel SSD 730 480GB做JBOD,系统中将四个SSD做成GPFS测试

 测试命令 write rewrite read reread
iozone -i 0 -i 1 -r 128K -s 128G -t 1 1939 1899 2132 2142
iozone -i 0 -i 1 -r 128K -s 2G -t 64 1900 1925 2076 2127
iozone -i 0 -i 1 -r 128K -s 1G -t 128 1971 1898 2145 2141
iozone -i 0 -i 1 -r 128K -s 512M -t 256 1642 1872 991 1047
iozone -i 0 -i 1 -r 64K -s 128G -t 1 1960 1866 2139 2138
iozone -i 0 -i 1 -r 64K -s 2G -t 64 1871 1891 2110 2140
iozone -i 0 -i 1 -r 64K -s 1G -t 128 1948 1895 2152 2141
iozone -i 0 -i 1 -r 64K -s 512M -t 256 1555 1830 1066 1073
iozone -i 0 -i 1 -r 32K -s 128G -t 1 1904 1916 2063 2110
iozone -i 0 -i 1 -r 32K -s 2G -t 64 1937 1867 2142 2129
iozone -i 0 -i 1 -r 32K -s 1G -t 128 1886 1916 2038 2112
iozone -i 0 -i 1 -r 32K -s 512M -t 256 1855 1843 2067 2043
iozone -i 0 -i 1 -r 16K -s 128G -t 1 1881 1909 2037 2136
iozone -i 0 -i 1 -r 16K -s 2G -t 64 1962 1870 2100 2052
iozone -i 0 -i 1 -r 16K -s 1G -t 128 1320 1305 1331 1320
iozone -i 0 -i 1 -r 16K -s 512M -t 256 1251 1266 1258 1266
iozone -i 0 -i 1 -r 8K -s 128G -t 1 1858 1873 2111 2142
iozone -i 0 -i 1 -r 8K -s 2G -t 64 1437 1455 2047 1510
iozone -i 0 -i 1 -r 8K -s 1G -t 128 671 661 680 681
iozone -i 0 -i 1 -r 8K -s 512M -t 256 629 637 641 643
iozone -i 0 -i 1 -r 4K -s 128G -t 1 1458 1620 1764 1878
iozone -i 0 -i 1 -r 4K -s 2G -t 64 750 758 792 794
iozone -i 0 -i 1 -r 4K -s 1G -t 128 337 332 341 339
iozone -i 0 -i 1 -r 4K -s 512M -t 256 316 316 316 317