為什麼 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
如果出現問題,通常 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/sdb6
systemd,但並不喜歡這裡發生的事情。在這種特殊情況下,答案只是重新啟動,因此錯誤的設備引用消失了。
我確信有 1001 種相似但不同的情況會導致這個問題,希望這裡的細節能給人們提供足夠大的線索來了解他們的具體情況。