标签: unmounting

卸载 rbind 挂载而不影响原始挂载

serverfault 上被问到但没有得到足够的关注,所以在这里重新发布,希望这里的一些人知道答案。

还有另一个问题在讨论卸载 rbind 挂载,但该解决方案有不良影响。考虑以下目录布局:

.
??? A_dir
?   ??? mount_b
??? B_dir
?   ??? mount_c
??? C_dir
Run Code Online (Sandbox Code Playgroud)

现在我绑定C_dirB_dir/mount_c和 rbindB_dirA_dir/mount_b

[hidden]$ sudo mount --bind C_dir B_dir/mount_c
[hidden]$ sudo mount --rbind B_dir A_dir/mount_b
[hidden]$ mount | grep _dir | wc -l
3
Run Code Online (Sandbox Code Playgroud)

现在umount A_dir/mount_b会失败,这并不奇怪。根据网络上随处可见的答案,我们需要umount A_dir/mount_b/mount_c先然后umount A_dir/mount_b。但是,umount A_dir/mount_b/mount_c也会 unmount B_dir/mount_c,这是不需要的:

[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc …
Run Code Online (Sandbox Code Playgroud)

linux mount unmounting linux-kernel bind-mount

12
推荐指数
1
解决办法
3977
查看次数

是否有必要显式刷新 HDD 磁盘写入缓存?

抽象的

有时,Linux 内核不知道外部 USB 存储设备的驱动器写入缓存。在这种情况下是否有必要在分离这些设备之前显式刷新这些缓存?

例子

我使用 WD Elements 外置 USB 硬盘,上面hdparm -I写着

...
Commands/features:
    Enabled Supported:
       ...
       *    Write cache
...
Run Code Online (Sandbox Code Playgroud)

hdparm -W

...
 write-caching =  1 (on)
Run Code Online (Sandbox Code Playgroud)

另一方面,当我插入驱动器时,我收到以下内核消息:

... No Caching mode page found
... Assuming drive cache: write through
Run Code Online (Sandbox Code Playgroud)

根据Kyle Jones 的这个回答,这些内核消息表明内核假设它的写操作将直接进入盘片。

Linux 内核文档中的文件Documentation/block/queue-sysfs.txt 的“write_cache (RW)”部分描述了内核假设通过缓存写入模式的含义(感谢Wayne Conrad):

...“直写”,...还将消除内核发出的缓存刷新。

问题

到目前为止,我从 Linux 系统分离外部 USB 存储设备的标准方法是卸载它上所有已安装的分区,等到驱动器的 LED 停止闪烁,物理拔下 USB 连接器,如果这不会关闭电源设备(有些具有单独的电源),以明确关闭电源。

这种方法是否安全,或者它是否意味着在驱动器写入缓存中丢失未刷新数据的风险,特别是如果内核不知道该缓存?

在后一种情况下,似乎建议在卸载后通过发送 SCSI 同步命令显式刷新驱动器上的写入缓存。例如sg_sync,可以使用 sg3-utils 附带的 which来完成: …

linux command-line cache usb unmounting

12
推荐指数
1
解决办法
2334
查看次数

当设备读取为忙(但已被确认)时,如何 fsck 分区?

我正在尝试运行fsck -p /dev/sda5以修复 ext4 分区上的错误,但是命令输出

fsck from util-linux-ng 2.17.2
fsck.ext4: Device or resource busy while trying to open /dev/sda5
Filesystem mounted or opened exclusively by another program?
Run Code Online (Sandbox Code Playgroud)

我已经确认使用/etc/mtab并且lsof没有使用该分区并且它没有安装。我也曾经fuser -k /dev/sda5使用该文件强行关闭任何东西,并umount试图卸载它无济于事。

fsck尽管分区读起来很忙,但我如何强制至少检查并希望修复它?假设我有足够的信心它既没有安装也没有使用,并且数据损坏的可能性不是问题。

所有命令都以 root 身份从 Ubuntu 10.04 32 位 liveCD 执行。该分区是 Ubuntu 10.04 32 位安装的系统(非家庭)部分。

ubuntu ext4 unmounting fsck

11
推荐指数
2
解决办法
7万
查看次数

什么在使用看似空的分区上的所有空间?

操作系统:RHEL8 文件系统:xfs

我猜测某个僵尸进程正在占用该空间,但我找不到它。

问题在于/var/lib/pgsql/14,它df表示正在使用 1.1TB 的空间:

$ sudo df -T -xtmpfs -xdevtmpfs -h --sync  
Filesystem                                 Type  Size  Used Avail Use% Mounted on
/dev/sda2                                  xfs   126G   14G  113G  11% /
/dev/sda1                                  xfs   2.0G  658M  1.4G  33% /boot
/dev/mapper/pgsql14vg-pgsql141v            xfs   5.4T  1.1T  4.4T  20% /var/lib/pgsql/14
/dev/mapper/pglogvg-pglog1v                xfs    15G  292M   15G   2% /var/log/postgresql
FISPFILNAS01.xxxxxxxxxxxx:/DB_backups_TAPb nfs4   15T  2.3T   13T  16% /var/lib/pgsql/14/backups
Run Code Online (Sandbox Code Playgroud)

然而,du说它只有 12GB 的文件:

$ du -x -d2 -h /var/lib/pgsql/14 | sort -k2
12G     /var/lib/pgsql/14
12G     /var/lib/pgsql/14/data
42M …
Run Code Online (Sandbox Code Playgroud)

filesystems unmounting xfs

11
推荐指数
2
解决办法
2409
查看次数

ecryptfs:自动卸载不起作用

我已经为用户 piranha3 设置了一个加密的主目录:

root@raspberrypi:~# ecryptfs-verify -u piranha3 -h
INFO: [/home/piranha3/.ecryptfs] exists
INFO: [/home/piranha3/.ecryptfs/Private.sig] exists
INFO: [/home/piranha3/.ecryptfs/Private.sig] contains [2] signatures
INFO: [/home/piranha3/.ecryptfs/Private.mnt] exists
INFO: [/home/piranha3] is a directory
INFO: [/home/piranha3/.ecryptfs/auto-mount] Automount is set
INFO: Mount point [/home/piranha3] is the user's home
INFO: Ownership [piranha3] of mount point [/home/piranha3] is correct
INFO: Configuration valid
Run Code Online (Sandbox Code Playgroud)

但是在 piranha3 logouts 目录没有被卸载后:

root@raspberrypi:~# mount | grep ecryptfs
/home/.ecryptfs/piranha3/.Private on /home/piranha3 type ecryptfs (rw,nosuid,nodev,relatime,ecryptfs_fnek_sig=729061d7fa17b3a4,ecryptfs_sig=eb5ec4d9c13e2d74,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
Run Code Online (Sandbox Code Playgroud)

lsof 输出:

lsof: WARNING: can't stat() cifs file system /media/cifs
      Output information may …
Run Code Online (Sandbox Code Playgroud)

unmounting ecryptfs

10
推荐指数
1
解决办法
4034
查看次数

为什么我在关机期间收到错误“卸载 /var 失败”?

我全新安装了 Debian 9.0.0。它有一个单独的 1 GB 分区,用于格式化为 ext4 的 /var。当我从终端关闭时,使用shutdown -h now,会出现一条亮红色的错误消息,指出“卸载 /var 失败”。

此错误的修复方法是什么?

shutdown partition debian unmounting var

10
推荐指数
1
解决办法
2万
查看次数

挂载错误:挂载失败:文件存在

我无法安装我的 USB:

$ mount /dev/sdb1 /mnt
mount: mount /dev/sdb1 on /mnt failed: File exists
Run Code Online (Sandbox Code Playgroud)

此错误的根源是什么,如何安装 USB?

分区/dev/sdb1不在/etc/fstab

automounting mount unmounting fstab

9
推荐指数
1
解决办法
1万
查看次数

启动后卸载/boot

对于我即将实施的一些高度安全的堡垒虚拟机,我正在考虑/boot在启动后卸载 - 当然还有其他措施。仅用于更新内核时安装。

  • 测试了一下,似乎没有出现问题;它有我遗漏的副作用吗?
  • 该系统可能基于 Debian Linux(其他情况下,基于 Redhat)。两者都是系统化的。/boot重新启动后在 systemd 系统上卸载的正确方法是什么?为了测试我只是sudo umount /boot
  • 我正在犹豫是否要使用 BIOS 还是 UEFI。由于它们将是虚拟机,因此这是一个选择问题。UEFI 似乎是一个更明智、更现代的选择。但我不确定安全方面的好处(如果有的话)。相反,因为它更复杂,可能出现漏洞的可能性更大。
  • 如果是UEFI,那么efi分区呢?它/boot默认安装在内部,尽管我认为/efi可以使用(我还没有尝试过)来将它们分开并在管理员方面更透明地处理。启动后可以卸载/boot/efi/efi?没有副作用吗?

boot bios unmounting systemd uefi

9
推荐指数
5
解决办法
7590
查看次数

使用单个命令卸载所有连接的 USB 磁盘

是否有一种(安全的)方法可以使用单个命令行命令卸载所有连接的 USB 设备(usb-hdds、usb-sticks)上的所有分区,包括几个加密的 luks 分区?

只应卸载 USB 设备上的分区,仅此而已!

linux mount unmounting luks

8
推荐指数
1
解决办法
1万
查看次数

mount.nfs:陈旧的文件句柄错误 - 无法卸载

每次我尝试挂载 NFS 共享时,我都会得到以下信息:

>> mount -t nfs gitlab-replica-storage.blah.com:/export/registry-gitlab-prod-data-vol /mnt/test
mount.nfs: Stale file handle
Run Code Online (Sandbox Code Playgroud)

问题是我无法卸载,正如它所说:

>> umount -f -l /mnt/test
umount: /mnt/test: not mounted
Run Code Online (Sandbox Code Playgroud)

我尝试检查是否有任何进程正在使用挂载点,但事实并非如此。

解决此问题的任何其他替代方法?

作为澄清:

  • 我可以将它安装在另一台机器上。
  • 我无法将它安装在受影响机器上的另一个安装点。

nfs mount unmounting

8
推荐指数
2
解决办法
8万
查看次数