我正在尝试安装设备但没有成功。奇怪的是mount命令成功并返回退出代码0,但是设备没有挂载。知道为什么会发生这种情况或如何调查它吗?请看下面的例子:
[root@mymachine ~]# blkid -o list
device fs_type label mount point UUID
-----------------------------------------------------------------------------------------
/dev/xvda1 xfs / 29342a0b-e20f-4676-9ecf-dfdf02ef6683
/dev/xvdy ext4 /vols/data 72c23c30-2704-42ec-9518-533c182e2b22
/dev/xvdb swap <swap> 990ff722-158c-4ad5-963a-0bc9e1e2b17a
/dev/xvdx ext4 (not mounted) 956b5553-d8b4-4ffe-830c-253e1cb10a2f
[root@mymachine ~]# grep /dev/xvdx /etc/fstab
/dev/xvdx /vols/data5 ext4 defaults 0 0
[root@mymachine ~]# mount -a; echo $?
0
[root@mymachine ~]# blkid -o list
device fs_type label mount point UUID
-----------------------------------------------------------------------------------------
/dev/xvda1 xfs / 29342a0b-e20f-4676-9ecf-dfdf02ef6683
/dev/xvdy ext4 /vols/data 72c23c30-2704-42ec-9518-533c182e2b22
/dev/xvdb swap <swap> 990ff722-158c-4ad5-963a-0bc9e1e2b17a
/dev/xvdx ext4 (not mounted) 956b5553-d8b4-4ffe-830c-253e1cb10a2f
[root@mymachine ~]# mount /dev/xvdx /vols/data5; echo $?
0
[root@mymachine ~]# blkid -o list
device fs_type label mount point UUID
-----------------------------------------------------------------------------------------
/dev/xvda1 xfs / 29342a0b-e20f-4676-9ecf-dfdf02ef6683
/dev/xvdy ext4 /vols/data 72c23c30-2704-42ec-9518-533c182e2b22
/dev/xvdb swap <swap> 990ff722-158c-4ad5-963a-0bc9e1e2b17a
/dev/xvdx ext4 (not mounted) 956b5553-d8b4-4ffe-830c-253e1cb10a2f
[root@mymachine ~]#
完整的 fstab:
[root@mymachine ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon May 1 18:59:01 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=29342a0b-e20f-4676-9ecf-dfdf02ef6683 / xfs defaults 0 0
/dev/xvdb swap swap defaults,nofail 0 0
/dev/xvdy /vols/data ext4 defaults 0 0
/dev/xvdx /vols/data5 ext4 defaults 0 0
答案1
如果出现问题,通常 mount 不会返回 0。当我遇到类似的问题时,原因是 systemd 在挂载后立即卸载了文件系统。
您可以尝试strace mount /dev/xvdx /vols/data5
查看系统调用的结果。您还可以尝试mount /dev/xvdx /vols/data5; ls -li /vols/data5
查看在 mount 命令之后是否立即安装了某些内容。
答案2
除了已接受的答案之外,该答案指出某些东西(可能是 systemd)正在卸载文件系统 - 让我更详细地解释我的案例中发生的情况。
正如journalctl所示,它确实是systemd。
在我的场景中,我的 fstab 中有这个
/dev/sda6 /fasthome ext4 defaults 0 2
/dev/sda7 /mnt/vms ext4 defaults 0 2
(fasthome,如果您想知道是一个无需加密即可执行磁盘密集型操作的地方)。
因此,当我插入外部 USB 驱动器启动时,它变成了 sda,而我的内部驱动器变成了 sdb。显然这些挂载点不起作用,所以我更正它们如下:
/dev/disk/by-uuid/<some uuid> /fasthome ext4 defaults 0 2
/dev/disk/by-uuid/<other uuid> /mnt/vms ext4 defaults 0 2
然后我运行mount -a
并且命令完成,没有错误,但似乎它们没有安装。所以我尝试mount /dev/disk/by-uuid ...
同样的事情,最后我提出了这个问题。
是的,它是 systemd 卸载它们的,就我而言,这是因为之前 /fasthome
曾经是尝试过要安装到/dev/sda6
,systemd 完全挂在非活动设备上。因此,尽管我的 uuid 路径符号链接正确指向/dev/sdb6
systemd,但不喜欢这里发生的情况。
在这种特殊情况下,答案很简单,就是重新启动,这样错误的设备引用就消失了。
我确信有 1001 种相似但不同的情况可能会导致这个问题,希望这里的细节能为人们提供足够多的线索来了解他们的具体情况。
答案3
它有助于运行systemctl daemon-reload
或重新启动。
Systemd 认为缺少依赖项并立即卸载该卷。
我发现这个在https://github.com/systemd/systemd/issues/1741这是在之前的回答中提到的。
答案4
当我忘记删除旧条目时,同样的情况也发生在我身上/etc/fstab
这是非常不合理的行为,因为 fstab 条目指定了错误的 FS 类型,而 cli 命令是正确的。 mount 命令忽略了两者。