Filesystems

為什麼 mount 對我來說默默地失敗了?

  • May 28, 2021

我正在嘗試安裝設備但沒有成功。奇怪的是,掛載命令成功,返回退出碼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

如果出現問題,通常 mount 不會返回 0。當我遇到類似問題時,原因是 systemd 在掛載後立即解除安裝了文件系統。

您可以嘗試strace mount /dev/xvdx /vols/data5查看系統呼叫的結果。您還可以嘗試mount /dev/xvdx /vols/data5; ls -li /vols/data5查看是否在 mount 命令之後立即掛載了某些東西。

除了接受的答案之外,它指出某些東西(可能是 systemd)正在解除安裝文件系統 - 讓我更詳細地解釋一下我的情況發生了什麼。

它確實是系統化的,如 journalctl 所示。

在我的場景中,我的 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/sdb6systemd,但並不喜歡這裡發生的事情。

在這種特殊情況下,答案只是重新啟動,因此錯誤的設備引用消失了。

我確信有 1001 種相似但不同的情況會導致這個問題,希望這裡的細節能給人們提供足夠大的線索來了解他們的具體情況。

引用自:https://unix.stackexchange.com/questions/459950