lvcreate 命令报错:mlock failed: Cannot allocate memory

问题

尝试创建 LV 时发生以下错误。

# lvcreate -L 5G -n apps vgOS
  7fa1c7825000-7fa1c7826000 r-xp 003be000 fd:00 8455021 /usr/lib64/libc-2.17. so: mlock failed: Cannot allocate memory 《 ---- mlock 失败:无法分配内存
  7fa1c7a2e000-7fa1c7a2f000 r-xp 00208000 fd:00 8455092 /usr/lib64/librt-2.17 .so: mlock failed: Cannot allocate memory
  Logical volume "apps" created.
欢迎 on it road

解决方案

该问题是由 LVM 配置文件 /etc/lvm/lvm.conf 中的 use_mlockall 参数引起的。
如下所示,/etc/lvm/lvm.conf 文件有以下条目:

# cat /etc/lvm/lvm.conf
use_mlockall = 0

配置选项 activation/use_mlockall

在 2.02.62 版本之前,LVM 在激活设备时使用 mlockall() 来固定整个进程的内存,但是,更高版本的 LVM,例如在上面的示例中不使用此功能。
要实施该解决方案,请执行以下步骤:

  1. 以root用户登录服务器。

  2. 编辑 /etc/lvm/lvm.conf 配置文件并更改以下值:

# vi /etc/lvm/lvm.conf
use_mlockall = 0

修改为:

# vi /etc/lvm/lvm.conf
use_mlockall = 1

说明

“use_mlockall = 0”理论上意味着lvm及其库使用的内存可以被换出,但这只会在低内存情况下影响你。
因此,在大多数情况下,“mlock 失败:无法分配内存”只是信息性消息,除非可用 内存 确实很低。

日期:2020-09-17 00:14:06 来源:oir作者:oir