汇总Linux系统运维中遇到的问题

汇总Linux系统运维中遇到的问题

1、fdisk 磁盘分区报错

GPT PMBR size mismatch (20971519 != 83886079) will be corrected by w(rite).
GPT PMBR size mismatch (20971519 != 83886079) will be corrected by w(rite).

这个错误通常是由于磁盘分区表(partition table)与磁盘本身的大小不匹配所导致的。这可能是由于一个分区表被意外地覆盖或者磁盘被重新分区而导致的。parted -l 列出磁盘分区时将提示修复。

parted -l

2、控制台打印 audit: backlog limit exceeded

audit: backlog limit exceeded 的记录意味着系统审计日志的缓冲区已满,导致一些记录无法写入日志文件中,这可能会导致一些安全事件被丢失。通常,这是由于系统的审计日志速度太快而导致的,而系统无法及时处理所有的记录。这可以通过增加系统审计日志缓冲区的大小来解决。您可以通过修改 /etc/audit/audit.rules 文件中的 --backlog 参数来增加缓冲区的大小。例如,将 --backlog 参数的值从默认的8192增加到16384可以将缓冲区的大小翻倍。修改完后,您可能需要重新启动 auditd 服务才能使更改生效。
如果仍然存在问题,您可以尝试优化您的审计规则,删除一些不必要的规则,或者将某些规则设置为更高的优先级,以便系统可以更快地处理它们。

3、关于linux系统资源限制命令和内核参数

ulimit -u  # 查看当前用户的最大进程数
ulimit -n  # 查看当前用户的最大打开文件数
ulimit -a  # 查看当前所有资源限制
cat /proc/sys/kernel/pid_max  # 查看系统中可创建的进程数
cat /proc/sys/fs/file-max  # 查看系统中可打开的文件数

/etc/security/limits.conf  # 限制每个用户可用的最大进程数量和最多可打开的文件描述符的软限制和硬限制
/etc/security/limits.d/20-nproc.conf  # 限制每个用户可用的最大进程数量的软限制和硬限制
/etc/sysctl.conf kernel.pid_max  # 该参数限制系统中可创建的进程数
/etc/sysctl.conf fs.file-max  # 该参数限制系统中可打开的文件数

ulimit -SHn 65536  # 临时设置当前用户文件限制、重启失效
ulimit -SHu 65536  # 临时设置当前用户进程限制、重启失效
su - user1 -c 'ulimit -SHn 65536'  # 临时设置用户user1文件限制、重启失效
su - user1 -c 'ulimit -SHu 65536'  # 临时设置用户user1进程限制、重启失效

# 设置的硬限制如果超出了系统的最大限制,那么以系统的最大限制为准
# 软限制是用户可以自行调整的当前限制,软限制可以增加到硬限制的值
# 硬限制是软限制的上限值,只有root用户可以增加硬限制,任何用户都可以降低硬限制

4、系统日志报错 kernel: NFS: nfs4_reclaim_open_state: Lock reclaim failed!

原因:NFS客户端在重新连接到NFS服务器后,无法恢复之前的文件锁。这可能是因为NFS服务器的范围(scope)发生了变化,导致客户端无法识别之前的文件句柄或对象。
要解决这个问题,您可以尝试以下几种方法:
在启动rpc.nfsd时,使用-s选项来设置NFS服务器的范围。
在执行rpc.nfsd之前,使用unshare --uts + hostname命令来修改NFS服务器的主机名。
在pacemaker资源代理nfsserver中,生成一个覆盖文件来执行上述操作。
升级到最新的内核版本,以修复一些与NFSv4委托相关的问题。

NFS服务器的范围(scope)是一个用于标识NFS服务器的字符串,它可以是主机名、域名或其他任意值。
它的作用是让NFS客户端在重新连接到NFS服务器后,能够判断服务器是否发生了变化,从而决定是否尝试恢复之前的文件锁 。
如果NFS服务器的范围(scope)发生了变化,那么NFS客户端会认为服务器是一个新的实例,而不是之前连接过的那个。
这样,客户端就不会尝试恢复文件锁,而是将文件锁视为被废弃或撤销了。
因此,为了避免这种情况,建议在启动NFS服务器时,使用-s选项来指定一个固定的范围(scope),并且在服务器重启或迁移时,保持范围(scope)不变。

要在启动NFS服务器时使用-s指定范围(scope),可以在启动rpc.nfsd服务时,加上-s选项和范围(scope)的值。例如,如果想将范围(scope)设置为myserver,可以使用以下命令:

rpc.nfsd -s myserver

这样,就可以保持NFS服务器的范围(scope)不变,避免客户端出现文件锁恢复失败的问题。

5、VMware嵌套虚拟化实验环境下网络不通

VMware 混杂模式是一种网络模式,它允许虚拟机和物理机之间的网络流量相互通信。在混杂模式下,虚拟机可以接收和发送物理网络上的所有数据包,而不仅仅是发送给它们的数据包。这个模式通常用于测试和开发环境,因为它允许虚拟机与物理机之间进行更灵活的网络交互。但是需要注意的是,混杂模式可能会导致网络安全问题,因为虚拟机可以接收和发送网络上的所有数据包,包括不属于它们的数据包。因此,建议在生产环境中避免使用混杂模式。

6、动态扫描主机scsi LUN

# 有多少个控制器就循环几次
for i in {0..11} ;do echo '- - -' > /sys/class/scsi_host/host$i/scan; done

7、TCP连接状态统计

# 显示所有TCP连接的状态和端口号
netstat -ant

# 显示每种状态的连接数
netstat -an | awk '/^tcp/ {++S [$NF]} END {for (a in S) print a, S [a]}'

# 按照端口进行分组统计
netstat -ant |grep 80 |awk ' {++S [$NF]} END {for (a in S) print a, S [a]}'

8、MySQL数据库初始更改特权用户密码及开启远程连接

systemctl enable mysqld.service --now
grep "password" /var/log/mysqld.log

> SELECT `USER`,AUTHENTICATION_STRING,`HOST` FROM MYSQL.USER;
> ALTER USER 'ROOT'@'LOCALHOST' IDENTIFIED BY '123456';
> GRANT ALL PRIVILEGES ON *.* TO 'ROOT'@'%' IDENTIFIED BY '123456';
> FLUSH PRIVILEGES;
> CREATE DATABASE SAMPLEDB;

9、清理Linux操作系统缓存和缓冲

ansible all -m shell -a "sync && echo 1 > /proc/sys/vm/drop_caches"
ansible all -m shell -a "sync && echo 2 > /proc/sys/vm/drop_caches"
ansible all -m shell -a "sync && echo 3 > /proc/sys/vm/drop_caches"

10、将空格分隔的文件转换为制表符分隔的文件

awk -v OFS='\t' '{$1=$1; print}' /filepath  # 方式1
awk 'OFS="\t" {$1=$1}1' /filepath  # 与方式1等价

OFS="\t" # set output separator as a tab
{$1=$1}  # remove extra spaces and set OFS as tab
1        # with awk, true, so print the current line

11、文件权限修复

# 递归找到当前文件夹下的所有文件,将权限改为644
find . -type f -exec chmod 644 {} +

# 递归找到当前文件夹下的所有目录,将权限改为755
find . -type d -exec chmod 755 {} +

# 递归找到当前文件夹下的所有文件,如果文件以.sh结尾或文件第一行为#!/bin/开头,就将权限改为755
# find . -type f -name "*.sh" -exec chmod 755 {} +
# find . -type f -exec sh -c 'head -n1 "$1" | grep -q "#!/bin/bash" && chmod 755 "$1"' sh {} \;
# 上面两条整合为一条命令:
find . -type f \( -name "*.sh" -o -exec sh -c 'head -n1 "$1" | grep -q "^#!/bin/"' sh {} \; \) -exec chmod 755 {} +

# 递归找到当前文件夹下的所有文件,如果文件是二进制文件,将权限改为755
find . -type f -exec sh -c 'file "$1" | grep -q "executable"' sh {} \; -exec chmod 755 {} +
posted @ 2023-05-19 19:13  wanghongwei-dev  阅读(163)  评论(0编辑  收藏  举报