Centos7

Centos 7 - fstab 不掛載某些分區,但 mount /dev/sd* 可以

  • November 7, 2018

我有一個帶有 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

引用自:https://serverfault.com/questions/937058