无法卸载 /tmp。fuser 和 lsof 均未显示任何锁定该 LV 的信息

无法卸载 /tmp。fuser 和 lsof 均未显示任何锁定该 LV 的信息

我需要减少我的 /tmp LV,因此我输入此命令:

$ sudo lvreduce -r -L -2G /dev/myVG/tmp
Do you want to unmount "/tmp" ? [Y|n] y
umount: /tmp: target is busy.
fsadm: Cannot proceed with mounted filesystem "/tmp".
  /sbin/fsadm failed: 1
  Filesystem resize failed.

因此我进行了调查fuserlsof但他们什么也没显示:

$ sudo fuser -vm /tmp
                     USER        PID ACCESS COMMAND
/tmp:                root     kernel mount /tmp
$ sudo lsof /tmp
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1001/doc
      Output information may be incomplete.
$ sudo lsof +f -- /tmp
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1001/doc
      Output information may be incomplete.
$ 

EDIT0:在安装 Ubuntu 20.04 之前,我手动创建了 /tmp(以及其他分区):

$ mount | grep -w /tmp
/dev/mapper/myVG-tmp on /tmp type ext4 (rw,relatime)

EDIT1:我也在 Ubuntu 恢复模式下尝试了相同的命令,但都无法fuserlsof我显示哪个进程正在锁定 /tmp 文件系统。

lsof 手册很难理解。有谁知道是否有其他 lsof 选项可以向我显示更多最终将锁定文件系统的进程?

答案1

您唯一的选择是关闭系统并启动到备用环境或 LiveUSB。没有lsoffuser命令会列出 SystemD 系统用于/tmp存储的内容。

SystemD 以及其他东西(关键系统进程等)都写入/tmp- 这通常是你不创建 LV 或任何东西/tmp并让它存在于易失性内存中的原因,这是快得多而不是将临时文件写入磁盘。

恢复环境也使用/tmp内核等以及写入其中的关键 systemd 资源。在这里,您需要从另一个启动盘进入系统,激活 LVM 环境,然后在出现问题时从那里调整 LV 的大小在您的特殊 LV 中写入或使用的数据/tmp

我还建议,除非您的 RAM 非常紧张,否则请删除 LV /tmp,并将其替换为tmpfs驻留在 RAM 中且在重启时被删除的 LV。这就是为什么/tmp它通常不在磁盘上但tmpfs在大多数安装中。

相关内容