Centos 7 - fstab 不掛載某些分區,但 mount /dev/sd* 可以
我有一個帶有 Centos 7 的虛擬機,我想在其上安裝一些 ext4 分區。物理磁碟實際上是 vSphere 提供的硬碟。所有磁碟都位於同一個 NAS - 因此三個工作磁碟 (a,c,d) 與有問題的磁碟 (e,f,g) 幾乎相同
fstab的內容:
UUID=b6ebbca4-71d0-4d2e-bc1a-e465e5190698 /boot ext4 defaults 1 2 UUID=2c3ab9f5-60a6-4a79-ada3-84737eef7748 / ext4 defaults 1 1 UUID=e130758c-5108-44de-bbd8-7e003c9072bc swap swap defaults 0 0 UUID=decbbdb6-8362-41ef-aa72-83066c172913 /home ext4 defaults 1 2 UUID=5717b613-a9f4-43c9-95d2-cfbbb891bd19 /apps_home ext4 defaults 1 2 UUID=e24df090-2dda-404c-8944-a28bd37d6c5e /apps/var/progress ext4 defaults 1 2 UUID=5f254c77-a91d-4255-8315-9325ddb7a9d8 /apps/var/standard ext4 defaults 1 2 UUID=746c70c1-002a-4249-a06f-df393a99252c /apps/var/custom ext4 defaults 1 2
lsblk -o '+UUID,FSTYPE'
輸出:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT UUID FSTYPE sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot b6ebbca4-71d0-4d2e-bc1a-e465e5190698 ext4 └─sda2 8:2 0 49G 0 part / 2c3ab9f5-60a6-4a79-ada3-84737eef7748 ext4 sdb 8:16 0 40G 0 disk └─sdb1 8:17 0 40G 0 part [SWAP] e130758c-5108-44de-bbd8-7e003c9072bc swap sdc 8:32 0 50G 0 disk └─sdc1 8:33 0 50G 0 part /home decbbdb6-8362-41ef-aa72-83066c172913 ext4 sdd 8:48 0 600G 0 disk └─sdd1 8:49 0 600G 0 part /apps_home 5717b613-a9f4-43c9-95d2-cfbbb891bd19 ext4 sde 8:64 0 250G 0 disk └─sde1 8:65 0 250G 0 part /apps/var/progress e24df090-2dda-404c-8944-a28bd37d6c5e ext4 sdf 8:80 0 1T 0 disk └─sdf1 8:81 0 1024G 0 part /apps/var/standard 5f254c77-a91d-4255-8315-9325ddb7a9d8 ext4 sdg 8:96 0 2T 0 disk └─sdg1 8:97 0 2T 0 part /apps/var/custom 746c70c1-002a-4249-a06f-df393a99252c ext4 sr0 11:0 1 1024M 0 rom
問題是 fstab 在重新啟動後沒有一致地安裝最後三個分區(應該分別安裝在
/apps/var/progress
/apps/var/standard
和下/apps/var/custom
)。它確實會不時安裝其中一個(如果安裝了這三個中的任何一個,則完全隨機,並且始終只有一個或沒有安裝)。其他分區一直在安裝,沒有任何問題。mount -a 選項沒有做任何事情,但是 $ mount /dev/sde1 (or dev/sdf1 or dev/sdg1) work like a charm. Similarly, mounting by using the command $ mount /apps/var/progress 也沒有任何問題。
現在我只是在每次重新啟動後使用 cron 來掛載這三個分區,但從長遠來看,我想知道這種奇怪行為的根本原因。
我嘗試用 /dev/sd* 名稱替換 UUID,我嘗試加引號。
mount 始終顯示分區已安裝在正確的目錄上,但是 umount 報告該分區目前未安裝。
我注意到三個有問題的分區以前有 ext3 文件系統,並且不知何故被轉換為 ext4。此外,對於這三個分區,blkid 顯示除了 UUID 之外的 PARTUUID(我認為它們以前與 centos 6 一起使用)
總結評論中的討論:
您的問題本質上是您在掛載點路徑中使用了符號連結,並且在引導時系統無法正確遵循這些符號連結以將結果辨識為“嵌套掛載”。因此 systemd 沒有按正確的順序安裝您的文件系統來處理這種依賴關係。
- 你有一個掛載點
/apps_home
- 你有一個符號連結
/apps --> /apps_home/apps
- 而且您還嘗試在
/apps/var/progress
/apps/var/custom
和/apps/var/custom
問題是掛載點在掛載
/apps/var/[custom|progress|standard]
之前不存在/apps_home
。解決方案:
保留符號連結,但將文件系統安裝在符號連結目標的實際目錄路徑上:即將 fstab 條目轉換為:
UUID=5717b613-a9f4-43c9-95d2-cfbbb891bd19 /apps_home ext4 defaults 1 2 UUID=e24df090-2dda-404c-8944-a28bd37d6c5e /apps_home/apps/var/progress ext4 defaults 1 2 UUID=5f254c77-a91d-4255-8315-9325ddb7a9d8 /apps_home/apps/var/standard ext4 defaults 1 2 UUID=746c70c1-002a-4249-a06f-df393a99252c /apps_home/apps/var/custom ext4 defaults 1 2
systemd-fstab-generato
將生成所需的掛載單元文件, systemd.mount將隱式添加正確的依賴項:如果一個掛載單元在文件系統層次結構中的另一個掛載單元之下,則會自動創建兩個單元之間的需求依賴關係和排序依賴關係。
替代方案:從 /etc/fstab 中刪除條目並創建自己的掛載單元文件並手動配置需求和排序依賴項,以確保
/apps/var/progress
/apps/var/custom
之前/apps/var/custom
不會掛載/apps_home
。