物理服务器侧
ntp同步异常
# 服务器端、客户端放行规则
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT
service iptables save
service iptables restart
# 设置物理服务器硬件时钟
hwclock --show
# 正确时间
date -s "2025-02-26 11:00:00"
hwclock --systohc
查看启动过程
# 操作启动后
dmesg
# 操作启动中
vim /etc/default/grub
# 改成""或"debug"
GRUB_CMDLINE_LINUX_DEFAULT=
update-grub
reboot
虚拟化平台侧
VM无法开关机
esxi主机上的某一台虚拟机频繁出现开关机故障,其他选项为不可操作的灰色,每次解决需要重启物理服务器。
处理
# ssh远程登录esxi
# 查看进程占用文件的world-id
esxcli vm process list
# 终止进程
esxcli vm process kill --type=hard --world-id=xxxx
#或者
#显示pid、父进程、服务
ps | grep vmx
kill -9 pid/父进程
进入对应datastore执行lsof xx.vmdk,发现磁盘文件依旧被占用,同时发现vmx.lck文件,使用rm -rf尝试删除该文件,提示:file or resource busy,其他几个文件.vmx、.vmx.lck、.vmdk也不可访问,同时存在大量vmware.log。于是先删除日志文件,再删vmx.lck,正常开机。
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] ls
x.x.x.249_appserver-0b4786b5.hlog x.x.x.249_appserver.vmx.lck vmware-1.log
x.x.x.249_appserver-ctk.vmdk x.x.x.249_appserver.vmxf vmware-2.log
x.x.x.249_appserver-flat.vmdk x.x.x.249_appserver.vmx~ vmware-3.log
x.x.x.249_appserver.nvram x.x.x.249_appserver_1-ctk.vmdk vmware-4.log
x.x.x.249_appserver.vmdk x.x.x.249_appserver_1-flat.vmdk vmware-5.log
x.x.x.249_appserver.vmsd x.x.x.249_appserver_1.vmdk vmware.log
x.x.x.249_appserver.vmx vmware-0.log
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] rm vmware-0.log vmware-1.log vmware-2.log vmware-3.log vmware-4.log vmware-5.log
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] rm vmware.log
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] ls
x.x.x.249_appserver-0b4786b5.hlog x.x.x.249_appserver.vmsd x.x.x.249_appserver_1-ctk.vmdk
x.x.x.249_appserver-ctk.vmdk x.x.x.249_appserver.vmx x.x.x.249_appserver_1-flat.vmdk
x.x.x.249_appserver-flat.vmdk x.x.x.249_appserver.vmx.lck x.x.x.249_appserver_1.vmdk
x.x.x.249_appserver.nvram x.x.x.249_appserver.vmxf
x.x.x.249_appserver.vmdk x.x.x.249_appserver.vmx~
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] rm x.x.x.249_appserver.vmx.lck
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver] ls
x.x.x.249_appserver-0b4786b5.hlog x.x.x.249_appserver.vmdk x.x.x.249_appserver.vmx~
x.x.x.249_appserver-ctk.vmdk x.x.x.249_appserver.vmsd x.x.x.249_appserver_1-ctk.vmdk
x.x.x.249_appserver-flat.vmdk x.x.x.249_appserver.vmx x.x.x.249_appserver_1-flat.vmdk
x.x.x.249_appserver.nvram x.x.x.249_appserver.vmxf x.x.x.249_appserver_1.vmdk
[root@localhost:/vmfs/volumes/5fb38966-95ddf6d8-0cd5-b8ca3af07740/x.x.x.249_appserver]
解释
磁盘锁文件。因为.vmdk虚拟磁盘文件有一个保护机制。为了防止多台虚拟机同时访问一个.vmdk虚拟磁盘文件带来的数据丢失和性能下降。每次启动虚拟机时通过.vmx.lck的磁盘锁文件对.vmdk虚拟磁盘文件进行锁定保护。当虚拟机正常关闭,.vmx.lck磁盘锁文件自动删除。
VM侧
修复suse操作系统
由于安全渗透扫描,导致存储故障,等待其恢复后,发现suse操作系统异常,包括但不限于network、zyppear在内的基础命令不可用,提示:xxx service failed when loaded shared lib . error ibgobject.so.2.0:no such file or directory.
处理
版本:suse linux enterprise desktop 10,下载suse linux enterprise server 12的iso镜像,通过第一启动项引导,按照如下方式直接升级解决。
### 补充-zypper源
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/openSUSE-stable/repo/oss/ openSUSE-openSUSE-stable-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/openSUSE-stable/repo/non-oss/ openSUSE-openSUSE-stable-Non-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/openSUSE-stable/ openSUSE-openSUSE-stable-Update-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/openSUSE-stable-non-oss/ openSUSE-openSUSE-stable-Update-Non-Oss
windows server频繁断网
win2012r2虚拟机频繁发生网络中断,登录系统内部排查,无法ping通网关、同网段地址。由于该虚拟机是win2008迭代升级而来的,先前网卡类型是E1000,win2012开始不支持该类型。
处理
新增网卡类型VMXNET 3,删除旧网卡类型E1000。(热更换需要提前安装vmwaretools)
文件系统实际使用率与监控数值差距大
监控系统上报文件系统占用率96%,登录节点后,执行:
1、df -lh查看只有17%;
2、对同一个目录分别使用df -h、du -xh,一个显示80G,一个显示29G;
3、lsof |grep deleted卡顿,长时间没有回显。
处理
# 统计根目录磁盘使用情况
# -x:只统计与指定目录在同一文件系统内的磁盘使用量。这意味着如果有其他文件系统挂载在某个子目录中,du 不会递归进入并计算那个子目录中的磁盘使用情况;
# -c:最后显示total;
du -xch /
# 输出当前所有打开文件以及相关信息,查找包含deleted的行,显示文件路径
lsof | awk ‘/deleted/ {print $9}’
# 查找虚拟文件系统/proc下所有进程的文件描述符;
# 查找以deleted结尾的符号链接;
# 忽略标准错误输出;
find /proc/*/fd -lname '*(deleted)' 2>/dev/null
# 杀进程
kill -9 进程号
VM内存逐日增长直至100%
经监控按日期统计,运行多站点备份的节点,每经过24小时,内存使用率增长2.7%~3.3%,直至100%。前几次采取重启,目前要细化监控,抓取证据反馈。
处理
#!/bin/bash
# 输出目录
OUTPUT_DIR="/var/log/sys_monitor"
mkdir -p "$OUTPUT_DIR"
# 时间戳
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
# 输出文件
OUTPUT_FILE="$OUTPUT_DIR/sys_monitor_$TIMESTAMP.log"
# 获取进程信息
echo "=== 进程信息 ===" > $OUTPUT_FILE
ps -eo comm | sort | uniq -c | sort -nr >> $OUTPUT_FILE
# 获取 CPU 使用情况
echo -e "\n=== CPU负载 ===" >> $OUTPUT_FILE
mpstat 1 1 | tail -n 2 >> $OUTPUT_FILE
# 获取内存和 Swap 使用情况
echo -e "\n=== 内存与交换空间使用情况 ===" >> $OUTPUT_FILE
free -h >> $OUTPUT_FILE
# 获取 I/O 情况
echo -e "\n=== IO统计 ===" >> $OUTPUT_FILE
iostat -x 1 2 | tail -n +4 >> $OUTPUT_FILE
# 获取网卡吞吐量
echo -e "\n=== 网络流量 ===" >> $OUTPUT_FILE
sar -n DEV 1 1 | grep -E "Average|eth|enp|ens" >> $OUTPUT_FILE
echo "已保存至$OUTPUT_FILE"
普通用户切换root失败
在普通账户boco下,使用su - root并输入正确密码,无法切换,提示“su: Authentication failure”。
处理
# 查看是否存在
grep "boco" /etc/passwd
grep "boco" /etc/shadow
# 查看是否在wheel组
groups boco
# 限制非wheel组用户使用su
cat /etc/pam.d/su
# 可注释
# 不注释就将用户添加到wheel组:usermod -aG wheel boco
auth required pam_wheel.so use_uid
# 权限
ls -l /bin/su
# 发现权限不对:-rwxr-xr-x
# 所属组不对:boco boco
# 改成-rwsr-xr-x和root root
chmod u+s /bin/su
chmod root:root /bin/su
# su - root成功切换
普通用户无法登录
使用ps -ef查看进程4000以上。
处理
# 查看该用户下的进程数限制nproc,可以适当增加资源;
ulimit -a
vim /etc/security/limits.conf
账户 soft nproc 8192
账户 hard nproc 16384
# 批量终止xw5用户进程脚本:
#!/bin/bash
# 获取xw5用户的所有进程ID
pids=$(pgrep -u xw5)
for pid in $pids; do
# 进程的使用文件
files=$(lsof -p $pid 2>/dev/null | awk '{print $9}' | grep -v '^$')
# 进程名称
proc_name=$(ps -p $pid -o comm=)
# 输出进程信息
echo "进程名称: $proc_name"
echo "进程ID: $pid"
echo "进程使用文件:"
echo "$files"
# 杀死进程,已注释
# kill -9 $pid
done
开机grub>修复
处理结果。
# 根分区所在的硬盘分区
set root=(hd0,msdos3)
# 查找vmlinuz、盘符,比如:
# linux /vmlinuz-{uname -r} root=/dev/mapper/bel-root ro
# linux /boot/vmlinuz-5{uname -r} root=/dev/sda3 ro
# 查找initramfs镜像,比如:
# initrd /initramfs-{uname -r}.img
# initrd /boot/initramfs-{uname -r}.img
boot
网络抓包分析
# 手动抓取60秒
timeout 60 tcpdump -i eth1 -nn -vv -w /tmp/result.pcap
tcpdump -nn -vv -r /tmp/result.pcap >> /tmp/result.txt
# 查看带宽
nload -m -uh eth1
#!/bin/bash
# 脚本抓取,60秒1个文件
timestamp=$(date +"%Y%m%d_%H%M%S")
tcpdump -i any port 1972 -w /root/td_$timestamp.pcap -G 60 -W 1
io统计
后台运行io统计,并添加时间戳
# 仅显示磁盘,速度为MB/s,扩展性能指标;
# print strftime("%Y-%m-%d %H:%M:%S"), $0:在每行内容前在,添加格式化的时间戳;
# fflush():强制刷新输出缓冲区,立即输出;
iostat -dmx 60 /dev/vdb | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }' >> iostat_output.log &