- 通过主板BMC确认拟移除物理位置NVMe盘对应的SN
- 使用 nvme list 查找SN对应的盘符
- 使用 mmlsnsd -m|grep $HOSTNAME 查找盘符对应的NSD名称
- 使用 mmdeldisk 从文件系统中移除NSD
- 使用 mmdelnsd 删除NSD
- ls -l /sys/class/block/ 查找盘符对应的BUS ID
- 使用 lspci -vvv|grep -a1 NVMe 查找BUS ID对应的 Physical Slot
- cd /sys/bus/pci/slots/$slot ($slot替换为上一步查到的Physical Slot)
- cat address 确认BUS ID正确
- echo 0 > power 下电
- lsblk 中已无此盘符
- 执行 mmnsddiscover 刷新
- 此时对应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
Mellanox IB 交换机 SM HA
所有交换机要求相同的CPU架构和相同的OS版本
- 在其中一台交换机上创建subnet并指定VIP:
[standalone: master] (config) # ib ha hpc ip 192.168.1.10 255.255.255.0
[hpc: master] (config) # - 在其它交换机上加入subnet:
[standalone: master] (config) # ib ha hpc
[hpc: standby] (config) # - 通过第一步设置的VIP设置SM
ZFS 自动挂载问题
ubuntu 20.04 LTS,开机后需要手工zpool import,否则zfs没有挂载
手工执行/sbin/zpool import -c /etc/zfs/zpool.cache -aN,如果出错则用 zpool reguid <pool> 更新zpool.cache
创建目录和文件/etc/systemd/system/zfs-import-cache.service.d/override.conf,内容为
[Unit]
After=multipathd.service
FortiWeb中配置HTTPS
以FortiWeb 6.3.1导入GoGetSSL颁发的RSA/ECC双证书为例
- 导入根证书和OCSP证书:菜单System->Certificates->CA,CA标签页,导入AAA Certificate Services、USERTrust RSA Certification Authority、USERTrust ECC Certification Authority、GoGetSSL RSA DV CA、GoGetSSL ECC DV CA
- 导入中级证书:菜单System->Certificates->Intermediate CA,Intermediate CA标签页,导入AAA Certificate Services签发的USERTrust RSA Certification Authority和USERTrust ECC Certification Authority,再导入USERTrust RSA Certification Authority签发的GoGetSSL RSA DV CA和USERTrust ECC Certification Authority签发的GoGetSSL ECC DV CA
- 创建中级证书组:菜单System->Certificates->Intermediate CA,Intermediate CA Group标签页,创建证书组GoGedtSSL RSA,先添加GoGetSSL RSA DV CA,再添加USERTrust RSA Certification Authority,ID 1应为签发服务器证书的中级证书,ID 2应为根证书签发的中级证书;同样的创建证书组GoGetSSL ECC,加入中级证书GoGetSSL ECC DV CA和USERTrust ECC Certification Authority;再创建一个证书组GoGetSSL把这四个中级证书都加进去
- 导入服务器证书:菜单System->Certificates->Local,分别导入证书颁发机构签发的服务器RSA和ECC证书及其对应的Key
- 添加OCSP stapling:菜单System->Certificates->OCSP stapling,为每一个服务器证书创建对应的OCSP,其中CA Certificate和OCSP URL按照服务器证书内容选择和填写,CA要先导入
- 创建多证书:菜单System->Certificates->Multi-certificate,创建一个多证书,分别选择RSA和ECDSA两个服务器证书
- 在Server里面如果使用多证书,就要选择有RSA和ECC中级证书的证书组,这是因为当前FortiWeb的系统的多证书只能选择一个中级证书组,所以就需要这个中级证书组里面放置所有的中级证书,将这些中级证书全部发送给客户端,让客户端自己选择
用 openssl s_client -showcerts -status -tlsextdebug -connect www.yaoge123.com:443 和 SSL Labs 检查证书链和OCSP
廉价SSL证书比较
首先是当然推荐免费的Let’s Encrypt,支持ECDSA和泛域名,极大地推动了HTTPS的普及,但是90天的有效期太短了。对于复杂的系统来说,会有很多不能自动导入证书的设备,管理起来成本太高。因此我们来看一下三种便宜的SSL证书:Sectigo (Comodo)、RapidSSL、AlphaSSL。
Sectigo(原Comodo,拆分出售后改名),主品牌一直以来就是廉价SSL证书的代表,所以用它家证书的基本都是小网站。Comodo自己拥有四个根证书,分别是COMODO RSA Certification Authority、COMODO ECC Certification Authority、USERTrust RSA Certification Authority、USERTrust ECC Certification Authority,都是从2010年(COMODO ECC从2008年起)起至2038年止的根证书,这四个证书比较新故在老的系统中不受信任,不过也因为比较新所以提供了更高的安全性并且完美支持ECDSA(RSA4096、ECC384,SHA384)。对于老的系统,COMODO收购了一个从2000年起的根AddTrust External CA Root,但是这个证书到2020年5月30日就过期了,不过COMODO还有一个2004年起的根AAA Certificate Services能一直用到2028年。AddTrust和AAA在老系统中兼容性很好,只要在服务器的证书链中导入交叉签名的第二个中级证书即可,这样老系统就能信任新颁发的SSL证书,但是这样会导致证书链变长(两个中级证书)。Sectigo的证书几乎所有网站都在卖,最便宜的通配符证书应该是GoGetSSL售卖的自有品牌证书(4年$32.5/year),Sectigo用自己的根证书给GoGetSSL签发了两个中级证书GoGetSSL RSA DV CA和GoGetSSL ECC DV CA,GoGetSSL再用自己的中级证书给用户签发SSL证书,所以和Sectigo证书兼容性一样。
RapidSSL是DigiCert下属的廉价证书品牌,使用DigiCert的根证书,根和中级证书只支持RSA。RapidSSL比较有名,很多网站都有转售,通配符证书两年期SSL2BUY便宜(2年$73.5/year),四年期CheapSSLsecurity更便宜一点(4年$72.31/year)。
AlphaSSL是GlobalSign下属的廉价证书品牌,使用GlobalSign的根证书,根和中级证书只支持RSA。这个名气小很多,很少有网站转售,通配符证书两年期SSL2BUY便宜(2年$40/year)。
综上所述,想要便宜且整个证书链支持ECDSA只能买GoGetSSL,但是对于老终端需要四级证书链。不需要整个证书链是ECDSA的,老终端也只有一个中级证书的三级证书链,可选RapidSSL和AlphaSSL,RapidSSL名气大一点,其它的基本没有区别。
现在几乎所有的SSL证书都是由中级证书签发的,而直接由根证书签发没有中级证书的SSL证书现在应该已经不存在了,因为这样根证书太不安全了。所以三级证书链基本上就是最短的证书链了。多一级中级证书服务器额外发送大约2K的证书信息,客户端需要多查询一个证书的吊销情况。
在CAs trustworthy in browsers db可以大概查看各个根证书受信任情况。
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
批量更改Transmission的tracker
某些站会改tracker,所以需要批量更改已有种子的tracker
#!/bin/bash
username="yaoge123"
password="yaoge123"
host="localhost:9091"
for i in $(transmission-remote $host -n $username:$password -l|awk '{print $1}'|grep -o -P '\d+')
do
out=$(transmission-remote $host -n $username:$password -t $i -it|grep $1)
if [ -n "$out" ];then
id=$(echo "$out"|awk -F: '{print $1}'|grep -o -P '\d+')
echo $i
transmission-remote $host -n $username:$password -t $i -tr $id
transmission-remote $host -n $username:$password -t $i -td $2
fi
done
用法:./chtracker.sh https://old.tracker.com https://new.tracker.com/announce.php?passkey=xxxxxxxxxx
Docker 自动更新 Let’s Encrypt
在nginx的 docker run 中添加webroot和配置文件挂载
-v $PWD/nginx/letsencrypt/:/var/www/letsencrypt:ro \
-v $PWD/letsencrypt/etc/:/etc/nginx/letsencrypt/:ro \
在nginx中将wwwroot发布出去
location ^~ /.well-known/ {
root /var/www/letsencrypt/;
}
在nginx中配置证书文件
ssl_certificate letsencrypt/live/www.yaoge123.com/fullchain.pem;
ssl_certificate_key letsencrypt/live/www.yaoge123.com/privkey.pem;
创建 certbot 的docker run脚本,以后只要周期性运行这个脚本就可以自动更新证书了
#!/bin/sh
cd $(dirname $0)
pwd
docker run -it --rm \
-v $PWD/letsencrypt/etc:/etc/letsencrypt \
-v $PWD/letsencrypt/lib:/var/lib/letsencrypt \
-v $PWD/letsencrypt/log:/var/log/letsencrypt \
-v $PWD/nginx/letsencrypt:/var/www \
certbot/certbot \
certonly --webroot \
--email yaoge123@example.com --agree-tos --no-eff-email \
--webroot-path=/var/www/ \
-n \
--domains www.yaoge123.com
docker kill --signal=HUP nginx
CentOS 7 YUM 安装 Cacti
先添加EPEL再用yum安装cacti和中文字体
yum install cacti cacti-spine mariadb-server google-noto-sans-simplified-chinese-fonts
编辑 /etc/httpd/conf.d/cacti.conf ,在 Directory /usr/share/cacti/ 中添加可访问的浏览器客户端
编辑 /etc/cron.d/cacti ,去掉注释
编辑 /etc/spine.conf ,注释RDB_*
创建数据库
[root@yaoge123]# mysqladmin --user=root create cacti
创建数据库用户
[root@yaoge123]# mysql --user=root mysql
MariaDB [mysql]> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser';
MariaDB [mysql]> flush privileges;
数据库用户增加 timezone 权限
[root@yaoge123]# mysql -u root
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY 'cactiuser';
MariaDB [(none)]> flush privileges;
数据库增加 timezone
[root@yaoge123]# mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql
新建一个文件 /etc/my.cnf.d/cacti.cnf ,内容供参考根据实际情况修改
[mysqld]
character-set-client = utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_additional_mem_pool_size = 80M
innodb_buffer_pool_size = 1024M
innodb_doublewrite = ON
innodb_file_format = Barracuda
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_large_prefix = ON
join_buffer_size = 748M
max_allowed_packet = 16777216
max_heap_table_size = 374M
tmp_table_size = 374M
重启相关服务,设置开机自动启动
systemctl restart mariadb
systemctl enable mariadb
systemctl restart httpd
systemctl enable httpd
导入数据库
[root@yaoge123]# mysql cacti < /usr/share/doc/cacti-*/cacti.sql
浏览器打开 http://<server>/cacti/ ,默认用户名密码为 admin/admin