SGE集群队列状态并清除队列错误状态

SGE集群可能出现独列错误状态。此时,使用命令 qstat -f 检测集群队列队列状态。最后一列stats若为空,则表示队列状态正常,可以用于任务提交。其它状态解释如下:

a: 负载超限了,开启警报alarm。
A: 超限暂替,开启警报Alarm。
E: 队列有错误,不能提供任务提交服务了。
au:主机和SGE系统连接中断,此时负载状态为-NA-。需要重启相应服务器的sgeexecd命令。

当出现状态 E 时,则需要使用root用户在对应的主机中重启sge计算服务:

/opt/sysoft/sge/default/common/sgeexecd restart

然后,清除队列中的错误信息:

qmod -c all.q

服务器远程强制连接并重启

在服务器使用过程中,我遇到这样一种情况:服务器将网络上的文件系统挂载到了 /home 目录;当系统出现问题导致 /home 没有响应时,导致了 /home 目录下的普通用户无法登陆。

解决方法我于是使用了备用的不在 /home 目录下的其它普通用户登陆。此时则可以登陆到服务器中了。此时,可能遇到一种情况,能登陆到服务器,但是不会返还命令提示符。这可能依然是 /home 目录没有响应,而很多依赖该分区下数据运行的程序异常运行导致的。此时,按如下方式可以登陆到服务器中:

ssh -t chenlianfu@xx.xx.xx.xx "cd /; bash"

由于挂载的 /home 分区没有响应。此时,使用正常的重启命令,极可能关机失败,从而无法再次连接服务器。因为依赖 /home 分区数据运行的程序无法强行杀死导致系统无法关机。则需要直接通过硬件关机再开机。若无法直接接触服务器,则使用IPMI方法实现硬件上的强制关机或重启:

# 加载 ipmi 驱动,确认服务器支持IPMI
sudo modprobe ipmi_msghandler ipmi_devintf ipmi_si
sudo ls -l /dev/ipmi*

# 数显按照 ipmitool 软件
sudo yum reinstall ipmitool
# 需要值得注意的是:在CentOS系统上,重启系统后ipmitool命令失效了。每次重启系统后,需要重新安装ipmitool才能正常使用。

# 再使用 ipmitool 命令实现应硬件上强制重启
sudo ipmitool power reset

将EndNote X7和Microsoft Word关联

正常情况下,先安装EndNote后,再安装Microsoft软件,则在使用Microsoft Word时会自动载入EndNote插件,从而支持文献导入。而很多时候,笔记本电脑自带正版的Microsoft软件,后安装EndNote X7破解版软件时,则需要手动安装EndNote插件到Microsoft软件中。操作步骤如下:

第一步,安装破解版EndNote X7软件。直接将软件解压缩到C:\Program Files (x86)\EndNote X7文件夹下(推荐将加压缩后得到的文件夹改名,带一些中文字符不太好)。

第二步,修改插件压缩包。将C:\Program Files (x86)\EndNote X7\Product-Support\CWYW\Cwyw_x64.dat文件后缀修改为rar,即得到C:\Program Files (x86)\EndNote X7\Product-Support\CWYW\Cwyw_x64.rar文件。

第三步,将Cwyw_x64.rar压缩文件中的两个文件EndNote Cwyw.dll和EndNote Cwyw.dot解压缩到C:\Users\chenlianfu\AppData\Roaming\Microsoft\Word\STARTUP和C:\Users\chenlianfu\AppData\Roaming\Microsoft\AddIns目录下。注意路径中chenlianfu是我在windows中的账户名,需要自己相应修改成对应的账户名。

第四步,注册EndNote Cwyw.dll文件。按windows+x键,点击Windows Powershell(管理员)打开CMD,执行命令:.\regsvr32.exe “C:\Users\chenlianfu\AppData\Roaming\Microsoft\Word\STARTUP\EndNote Cwyw.dll”。

最后,打开word文档,看看是否出现了EndNote X7一栏。若没有,依次点击文件——选项——加载项——COM加载项转到——勾选EndNote Cite While You Write——确定。

以上方法可能还是不凑效。其实,最简单的方法是下载当前最新的EndNote X9破解版,直接安装后即可直接搞定。

Linux系统删除find找到的文件或文件夹

当我运行得到结果文件后,需要删除当前目录下许多的中间文件夹:

find ./ -maxdepth 1 -type d -regex "./\w.*" -exec rm -rf {} +

各参数意义如下:
./ 是被搜索的文件夹
-maxdepth 1 表示仅搜索第一层目录
-type d 表示仅搜索文件夹类型数据,注意该参数要放-maxdepth参数后面,否则程序会有警告信息。
-regex "./\w.*" 使用正则表达式方式搜索数据,该正则表达式不会搜索当前目录下名称为 . 的目录,以防把当前目录直接删除
-exec rm -rf {} + 用于对搜索到的文件执行相应的操作,其中{}表示搜索到的文件路径。{}后面可以接空格加号或空格反斜线分号。

将当前目录下所有权限为600的普通文件变为644,

find ./ -type f -perm 600 -exec chmod 644 {} +

将当前目录下所有权限为700的文件夹变成755:

find ./ -type d -perm 700 -exec chmod 755 {} +

ssh登陆到服务器后自动切换到指定目录

我有多台服务器,每台服务器都将其存储挂载到了/disks/目录下并通过万兆网共享给所有局域网其它服务器。此时,我需要当切换到其它服务器时,一步到位自动切换到其存储目录下。此时,我按如下操作执行ssh命令即可。

ssh -t node2 "cd /disks/node2_16TB/chenlianfu; bash"

# ssh登陆node2服务器时,执行cd命令并使用bash命令登陆当前用户。若不加-t参数,ssh则时登陆到目标服务器后,执行相应命令后返回到当前主机。添加-t参数则表示强制分配虚拟终端,有利于远程服务器上一些依赖屏幕软件(例如less和bash命令)的运行。

# 想了解-t参数的意义,可以比较以下两个命令的差异。
ssh -t node2 "less /proc/cpuinfo"
ssh node2 "less /proc/cpuinfo"
# 只有添加了-t参数,才能真正让less命令使用屏幕,否则,不会为less命令分配虚拟终端而不能正常运行。

出行指南

1. 从广州火车站到华南植物园科研区

在广州火车站地铁站,搭乘地铁5号线(文冲方向)到区庄站;换乘地铁6号线(香雪方向)到地铁长湴站A出口;换乘775路公交车到华南植物园西门下车即到。

CentOS8系统下识别H700/H800阵列卡

安装CentOS8系统后,由于缺少DELL H700/H800的阵列卡驱动。可以自己手动安装其驱动:

wget https://elrepo.org/linux/dud/el8/x86_64/dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso
mount -o ro dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso /mnt/
dnf -y install /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm

但是要注意的是,安装驱动完毕后,重启系统后导致网卡驱动不能正常识别。

可以考虑安装系统时,同时安装Megaraid驱动。将其ISO镜像文件使用UltraISO烧录到一个U盘中。然后将该U盘和CentOS8启动U盘同时插入到服务器上安装系统。从启动U盘启动CentOS8系统安装,在启动安装界面按字母e对启动参数进行编辑,后面添加参数信息inst.dd=/dev/sdb4,表示通过第二个U盘第四个分区中的驱动数据安装驱动,然后按ctrl + x启动,若顺利的话,则可以识别H700整列卡从而可以安装CentOS8系统。

制作CentOS8系统的U盘启动盘

当在Windows系统上使用UltraISO软件来制作CentOS8系统的U盘启动盘时:若使用默认的USB-HDD+写入方式制作出来的CentOS8启动盘是无法启动安装系统的,这种方式适合绝大部分系统镜像;这时需要使用RAW写入方式来烧录ISO镜像文件,从而可以正常启动CentOS8系统安装界面,但是这种模式下U盘不能再正常写入数据。

推荐在Windows系统下使用Rufus软件制作CentOS8的U盘启动盘。这种方法既能制作正常的启动盘,也能让U盘正常读写数据。

1. 先下载Rufus软件
2. 启动软件,选择CentOS8镜像文件
3. 设置卷标为CentOS8_1
4. 点击开始,同意联网下载两个文件
5. 选择默认的ISO镜像模式写入
6. 点击OK开始将数据烧录到U盘中。

CEPH故障以其处理方法

1. Slow OSD heartbeats

# ceph -s
health: HEALTH_WARN
       Slow OSD heartbeats on back (longest 6181.010ms)
       Slow OSD heartbeats on front (longest 5953.232ms)

OSDs之间会相互测试(ping)访问速度,若两个OSDs之间的连接延迟高于1s,则表示OSDs之间的延迟太高,不利于CEPH集群的数据存储和访问。两个OSDs之间可以通过内网(存储服务器之间 / back)检测其延迟,也可以通过外网(存储服务器到使用服务器 / front)检测其延迟。若延迟过高,会将相应的OSDs down掉,进而可能导致CEPH数据丢失。

一般情况下OSDs之间延迟高的原因是因为网络原因导致的。可能是某台存储服务器重启网络导致,或网线出问题导致。前者的时间会逐渐变小,最后恢复正常,后者则问题一直存在。通过查看详细的OSDs延迟信息查找延迟较高的主机,再进行解决。

# ceph health detail

[WRN] OSD_SLOW_PING_TIME_BACK: Slow OSD heartbeats on back (longest 11846.602ms)
    Slow OSD heartbeats on back from osd.12 [] to osd.25 [] 11846.602 msec
    Slow OSD heartbeats on back from osd.8 [] to osd.17 [] 3617.281 msec
    Slow OSD heartbeats on back from osd.16 [] to osd.27 [] 2784.517 msec
    Slow OSD heartbeats on back from osd.21 [] to osd.17 [] 1678.064 msec
    Slow OSD heartbeats on back from osd.11 [] to osd.15 [] 1675.884 msec
    Slow OSD heartbeats on back from osd.20 [] to osd.13 [] 1073.790 msec
[WRN] OSD_SLOW_PING_TIME_FRONT: Slow OSD heartbeats on front (longest 11427.677ms)
    Slow OSD heartbeats on front from osd.12 [] to osd.25 [] 11427.677 msec
    Slow OSD heartbeats on front from osd.8 [] to osd.17 [] 3787.868 msec
    Slow OSD heartbeats on front from osd.16 [] to osd.27 [] 3465.298 msec
    Slow OSD heartbeats on front from osd.11 [] to osd.15 [] 1469.591 msec
    Slow OSD heartbeats on front from osd.21 [] to osd.17 [] 1341.135 msec
    Slow OSD heartbeats on front from osd.20 [] to osd.13 [] 1224.235 msec
    Slow OSD heartbeats on front from osd.5 [] to osd.16 [] 1101.175 msec

通过以上信息查看,可以发现有一台主机和其它主机的OSDs延迟都比较高,将该主机的光纤网线拔下擦拭干净并重新插上得以解决。

2. slow ops

# ceph -s
     21 slow ops, oldest one blocked for 29972 sec, mon.ceph1 has slow ops

先保证所有存储服务器上的时间同步一致,再重启相应主机上的moniter服务解决。

3. pgs not deep-scrubbed in time

# ceph -s
    47 pgs not deep-scrubbed in time

应该是OSDs掉线后,CEPH自动进行数据恢复。再将相应的OSDs重新加入后,则需要将恢复的数据再擦除掉。于是提示相应的警告信息,正在进行删除相关的操作,且其pgs的数量会不断变少。等待一段时间后,则恢复正常,此时ceph文件系统性能很差。

4. MDS cache is too large

ceph config set mds mds_cache_memory_limit 10GB

ceph config dump

当MDS使用的缓存过高,比设定的阈值高很多时,则有此警告信息。使用如上命令设置更高的MDS缓存阈值,即可消除次警告信息,但会消耗更多的内存。使用config dump命令可以查看各项参数阈值信息。

此外,可能增大了mds_cache_memory_limit参数后,过了一段时间后仍然提示该警告,检测发现MDS缓存使用又超过新设定值的1.5倍大小了。此时,可以考虑设置多个活动状态的MDS服务。

# 先开启3台服务器的MDS服务,确保这3台服务器的内存是够用的,最好这3台服务器的内存更大。
ceph orch apply mds cephfs ceph106,ceph107,ceph109
ceph fs set cephfs max_mds 3

# 由于激活了3台服务器的MDS,缺少备用的MDS服务。再增加一个备用的MDS服务主机。
ceph orch apply mds cephfs ceph106,ceph107,ceph109,ceph110

5. Client node18 failing to respond to cache pressure

表示node18主机和MDS服务之前的响应较慢,若过一会儿就显示health_ok,则不用管它。若是长期显示该警告,则在对应的node18主机上卸载ceph文件系统后重新挂载即可。

客户端在使用相应数据时,MDS服务端则将其数据缓存到服务器的内存中。当MDS服务端需要减少缓存消耗时,则会给客户端发送相应的请求。此时,客户端响应过慢,则提示此警告信息。若一直如此,会导致MDS服务器缓存无法释放,内存消耗持续增加甚至导致宕机。

ceph集群提供元数据服务,则客户端可以提挂载ceph文件系统。客户端访问数据时,则在客户端和元数据服务器中都缓存相应的数据。元数据服务器会和客户端inode占用情况来消减缓存。当客户端响应太慢,则会报错“failing to respond to cache pressure” or MDS_HEALTH_CLIENT_RECALL。若确实是客户端负荷较大,是正常读写操作,可以考虑增大mds_recall_warning_decay_rate参数的值(默认为60s),从而消除警告。

可以查询ceph客户端的ID号及其使用inode数(num_caps的值)。

ceph tell mds.0 session ls

谨慎使用如下命令踢出目标客户端或全部客户端。

ceph tell mds.0 session evict id=11134635
ceph tell mds.0 session evict

踢出客户端是将客户端加入了黑名单,可以使用如下命令查看黑名单信息或移出黑名单。虽然移出黑名单,可能还不能让客户端正常挂载ceph文件系统,因此需要谨慎处理。

ceph osd blacklist ls
ceph osd blacklist rm 192.168.20.1:0/1498586492
ceph osd blacklist clear

6. Reduced data availability: 4 pgs inactive, 4 pgs incomplete

当有pgs出现incomplete时,表明pgs对应的OSDs存活数量少于最小副本数。因此,其对应的数据无法读写,处于reduced状态,会导致MDS服务出问题,提示如下报错信息,示例:

3 MDSs report slow metadata IOs
2 MDSs report slow requests
2 MDSs behind on trimming
Reduced data availability: 4 pgs inactive, 4 pgs incomplete

pg 5.6de is incomplete, acting [254,356,222,352,111,247,100,133,351,206] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
pg 5.6e9 is incomplete, acting [276,244,357,358,221,321,311,229,314,351] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
pg 5.73b is incomplete, acting [186,279,351,247,293,354,359,220,181,283] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
pg 5.eda is incomplete, acting [164,157,120,227,353,351,295,269,95,354] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')

此时,需要修复pgs。

# 查询pg信息(pg id 为 5.6de)
ceph pg 5.6de query

# 强行重建pg
ceph osd force-create-pg 5.6de --yes-i-really-mean-it

7. failed to probe daemons or devices stderr:Non-zero exit code 125 from /bin/podman

由于Ceph存储集群中个别服务器的podman容器出问题,导致相应服务启动失败。报告警告如下:

[WRN] CEPHADM_REFRESH_FAILED: failed to probe daemons or devices
host ceph105 ceph-volume inventory failed: cephadm exited with an error code: 1, stderr:Non-zero exit code 125 from /bin/podman run --rm --ipc=host --net=host --entrypoint stat -e CONTAINER_IMAGE=docker.io/ceph/ceph:v15 -e NODE_NAME=ceph105 docker.io/ceph/ceph:v15 -c %u %g /var/lib/ceph
stat:stderr Error: readlink /var/lib/containers/storage/overlay/l/HMGABIBEWBRXOSBT4JLOKQIKDA: no such file or directory
Traceback (most recent call last):
File "", line 6112, in
File "", line 1299, in _infer_fsid
File "", line 1382, in _infer_image
File "", line 3581, in command_ceph_volume
File "", line 1477, in make_log_dir
File "", line 2084, in extract_uid_gid
RuntimeError: uid/gid not found

执行以下命令时,会有如上报错。而正常的存储节点则不会报错。

cephadm shell

该类报错表示podman的docker容器出错。查找出错的存储节点:

ceph orch ps | grep error

在各存储节点重新pull相应的docker镜像:

cephadm pull
podman pull ceph/ceph:v15
# 以上两个命令都可以达到目的,后者能看到下载的速度,以免等待较长时间下载几百M的文件而不清楚进度。
# 重新pull镜像后,会提升ceph版本。不会影响使用

检查podman的docker镜像

podman images
podman ps

最后重启服务器或重启CEPH服务。

8. mds.cephfs.ceph109.avzzqn(mds.1): Behind on trimming (594/128) max_segments: 128, num_segments: 594

有MDS服务器报警:

[WRN] MDS_TRIM: 2 MDSs behind on trimming
mds.cephfs.ceph109.avzzqn(mds.1): Behind on trimming (594/128) max_segments: 128, num_segments: 594
mds.cephfs.ceph106.hggsge(mds.0): Behind on trimming (259/128) max_segments: 128, num_segments: 259

MDS服务器将元数据以segments(object)方式存放,当MDS中的segments数量超出mds_log_max_segments的设置值(默认为128)时,MDS服务开始启动Trimming,即将segments数据进行回写。当MDS中的segments数超过设定值两倍时,开始报警Behind on trimming信息。当MDS服务器内存足够时,推荐增大mds_log_max_segments参数值。

ceph config set mds mds_log_max_segments 1024

9. mds N slow requests are blocked > 30 secs

MDS服务报警:

[WRN] MDS_SLOW_REQUEST: 3 MDSs report slow requests
mds.cephfs.ceph109.avzzqn(mds.1): 29 slow requests are blocked > 30 secs
mds.cephfs.ceph110.sfagxf(mds.2): 1 slow requests are blocked > 30 secs
mds.cephfs.ceph106.hggsge(mds.0): 3 slow requests are blocked > 30 secs

以上报警表示MDS响应慢,原因可能是:mds服务运行太慢、底层pg或OSD出问题导致写入日志未确认、或BUG。通过设置mds_op_complaint_time值为3000,问题依旧。

出现此警告时,OSD未报错。而mds服务运行应该正常,内存也足够用。通过阵列卡检测硬盘,发现有两台服务器分别有一块硬盘没有检测到。推测是相应的硬盘出问题,而OSD还未反应过来,带后续观察。

10. insufficient standby MDS daemons available

当有mds服务crash的时候,候选的mds则补上。此时,已经连接上的计算服务器还是可以正常访问ceph存储。但是,新的计算服务器无法挂载ceph文件系统。

解决方法是,ssh登陆到mds服务有crash的服务器,然后重启其mds服务。再登陆备用的mds服务器,重启其mds服务。

ssh ceph107
systemctl restart ceph-8f1c1f24-59b1-11eb-aeb6-f4b78d05bf17@mds.cephfs.ceph106.hggsge.service
ssh ceph102
systemctl restart ceph-8f1c1f24-59b1-11eb-aeb6-f4b78d05bf17@mds.cephfs.ceph102.imxzno.service

Linux系统下挂载exFat分区

1. 安装exfat软件

使用root用户下载并安装exfat软件:

# 先安装exfat件依赖的系统软件
dnf install -y fuse fuse-devel

# 下载exfat源码包并安装
wget https://github.com/relan/exfat/archive/v1.3.0.tar.gz -O /media/software_packages/exfat-1.3.0.tar.gz
tar zxf /media/software_packages/exfat-1.3.0.tar.gz
cd exfat-1.3.0/
autoreconf --install
./configure --prefix=/usr && make -j 4 && make install
cd ../ && rm -rf exfat-1.3.0

2. 挂载exfat移动硬盘

mount.exfat /dev/sdb1 /mnt
# 或
mount -t exfat /dev/sdb1 /mnt
# 或
mount /dev/sdb1 /mnt
# 第3个命令若要执行成功,需要将软件安装在/usr目录下。