Linux出现lvm调用时文件描述符泄漏报错的原因及解决方法
报错触发原因
- 该提示是LVM自带的安全校验告警,不属于致命故障,不会影响系统存储或业务的正常运行
- 触发逻辑为:调用LVM命令的上层父进程(你报错信息中为PID 15230的sh进程)创建子进程执行LVM指令时,没有主动关闭自身已打开的socket、磁盘设备等文件描述符,子进程继承了这些非LVM所需的文件描述符后,被LVM的自检逻辑识别,抛出该提示。
清除报错的操作方法
分两类场景处理:
可修改上层调用LVM的脚本/程序
- 执行LVM命令时手动关闭告警中提到的泄漏文件描述符,示例:
把原调用命令改为lvm [你的实际lvm子命令] 4>&- 7>&- 8>&- 12>&- 13>&- 14>&- 15>&- - 更通用的方案是在执行LVM命令的脚本开头添加环境变量配置
export LVM_SUPPRESS_FD_WARNINGS=1,即可完全关闭LVM的文件描述符泄漏告警校验,无需逐个关闭文件描述符。
无法修改上层调用代码,仅需屏蔽日志告警
- 全局生效配置:在
/etc/profile或/etc/bashrc文件末尾追加export LVM_SUPPRESS_FD_WARNINGS=1,执行source /etc/profile或重新登录系统后生效,所有LVM调用都不会再抛出该告警。 - 若该逻辑由systemd管理的服务触发,可在对应service文件的[Service]段添加配置
Environment="LVM_SUPPRESS_FD_WARNINGS=1",执行systemctl daemon-reload后重启对应服务即可生效。
内容的提问来源于stack exchange,提问作者Yamamoto Harata
相关产品推荐
相关产品推荐

