首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >systemd:包含autofs的autofs不卸载。

systemd:包含autofs的autofs不卸载。
EN

Unix & Linux用户
提问于 2017-02-21 10:04:49
回答 1查看 1.8K关注 0票数 2

我正在尝试设置两个目录,每个目录都是自动的:

  • /mnt/dir
  • /mnt/dir/subdir

就我而言,这些是:

  • /mnt/btrfs-vol/rootfs (只读)
  • /mnt/btrfs-vol/rootfs/btrbk-snap (用于使用btrbk拍摄快照的RW)

我的/etc/fstab包含:

代码语言:javascript
复制
LABEL=rootfs    /mnt/btrfs-vol/rootfs               btrfs   ro,subvol=/,lazytime,compress=lzo,ssd,discard,noauto,x-systemd.automount,x-systemd.idle-timeout=2
LABEL=rootfs    /mnt/btrfs-vol/rootfs/btrbk-snap    btrfs   rw,subvol=/btrbk-snap,lazytime,compress=lzo,ssd,discard,noauto,x-systemd.automount,x-systemd.idle-timeout=2,x-systemd.requires-mounts-for=/mnt/btrfs-vol/rootfs

我知道:

代码语言:javascript
复制
svelte ~# systemctl daemon-reload && systemctl restart local-fs.target
svelte ~# mount | grep btrfs-vol/rootfs
systemd-1 on /mnt/btrfs-vol/rootfs type autofs (rw,relatime,fd=32,pgrp=1,timeout=2,minproto=5,maxproto=5,direct)

奇怪的是,/mnt/btrfs-vol/rootfs已经安装好了。

如果卸载/mnt/btrfs-vol/rootfs,则立即重新装入:

代码语言:javascript
复制
svelte ~# umount /mnt/btrfs-vol/rootfs
svelte ~# mount | grep btrfs-vol/rootfs
systemd-1 on /mnt/btrfs-vol/rootfs type autofs (rw,relatime,fd=32,pgrp=1,timeout=2,minproto=5,maxproto=5,direct)

现在,如果我打开子目录,它会自动运行:

代码语言:javascript
复制
svelte ~# (cd /mnt/btrfs-vol/rootfs/btrbk-snap/ && mount | grep btrfs-vol/rootfs)
systemd-1 on /mnt/btrfs-vol/rootfs type autofs (rw,relatime,fd=32,pgrp=1,timeout=2,minproto=5,maxproto=5,direct)
/dev/mapper/vg_svelte-rootfs on /mnt/btrfs-vol/rootfs type btrfs (ro,relatime,lazytime,compress=lzo,ssd,discard,space_cache,subvolid=5,subvol=/)

注意,fstype of /dev/mapper/vg_svelte-rootfs已经从autofs更改为btrfs

几秒钟后(我有用于测试的timeout=2 ):

代码语言:javascript
复制
svelte ~# mount | grep btrfs-vol/rootfssystemd-1 on /mnt/btrfs-vol/rootfs type autofs (rw,relatime,fd=32,pgrp=1,timeout=2,minproto=5,maxproto=5,direct)

子目录已被卸载,fstype of /dev/mapper/vg_svelte-rootfs恢复为autofs,但仍保持挂载。

如何使它自动卸载?

可能有用的信息:

journal输出:

代码语言:javascript
复制
Feb 21 17:16:07 svelte systemd[1]: Reloading.
Feb 21 17:16:23 svelte systemd[1]: Mounting /mnt/btrfs-vol/rootfs...
Feb 21 17:16:23 svelte systemd[1]: Set up automount mnt-btrfs\x2dvol-home-btrbk\x2dsnap.automount.
Feb 21 17:16:23 svelte systemd[1]: Mounted /mnt/btrfs-vol/rootfs.
Feb 21 17:16:23 svelte systemd[1]: mnt-btrfs\x2dvol-rootfs-btrbk\x2dsnap.automount: Directory /mnt/btrfs-vol/rootfs/btrbk-snap to mount over is not empty, mounting anyway.
Feb 21 17:16:23 svelte systemd[1]: Set up automount mnt-btrfs\x2dvol-rootfs-btrbk\x2dsnap.automount.
Feb 21 17:16:23 svelte systemd[1]: Reached target Local File Systems.
Feb 21 17:16:25 svelte systemd[1]: Stopped target Local File Systems.
Feb 21 17:16:25 svelte systemd[1]: Unset automount mnt-btrfs\x2dvol-rootfs-btrbk\x2dsnap.automount.
Feb 21 17:16:25 svelte systemd[1]: Unmounting /mnt/btrfs-vol/rootfs...
Feb 21 17:16:25 svelte systemd[1]: Unmounted /mnt/btrfs-vol/rootfs.
Feb 21 17:17:44 svelte systemd[1]: Unset automount mnt-btrfs\x2dvol-home-btrbk\x2dsnap.automount.

检查没有打开目录:

代码语言:javascript
复制
svelte ~# lsof /mnt/btrfs-vol/rootfs
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
svelte ~[2]# ls -l /run/user/1000 | grep gvfs
ls: cannot access '/run/user/1000/gvfs': Permission denied
d????????? ? ?    ?      ?            ? gvfs

我从来没有见过?,我以前希望rwx占位符会出现在那里。

EN

回答 1

Unix & Linux用户

发布于 2018-08-08 05:06:55

看一看fstab systemd选项x-systemd.requires-mounts-for=

配置创建的挂载单元和其他挂载单元之间的RequiresMountsFor=依赖项。这个论点必须是一个绝对的途径。可以不止一次指定此选项。有关详细信息,请参阅RequiresMountsFor= in systemd.unit(5)

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/346534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档