Linux

EC2 - 想要在服務開始之前掛載

  • March 24, 2013

我正在使用 AWS EC2,並且添加了一個額外的 EBS 卷。它目前作為新設備安裝。

MySQL 和 Redis DB 將它們的數據儲存在新的 EBS 卷上,並在chkconfig. 因此,我需要在chkconfig服務啟動之前安裝卷。

但我不想將其添加到我的 中/etc/fstab,如下面的論壇所述。 https://forums.aws.amazon.com/message.jspa?messageID=304528#304528

所以我添加mount /dev/xvdf /data了我的/etc/rc.d/rc.local,我重新啟動了我的系統。

但顯然chkconfig服務在 BEFORE 啟動/etc/rc.d/rc.local,因此 MySQL &Redis 啟動失敗。

我想知道在哪裡可以編寫一個名為 BEFOREchkconfig服務啟動的初始化腳本。

提前致謝。

您可能已經註意到 rc.local 通常是在引導過程中執行的最後一個腳本。這在腳本的註釋中有所說明。

從您的問題中提到的內容來看,chkconfig我猜您正在執行 CentOS、亞馬遜基於 RHEL 的 Linux 或其他 Red Hat(或 Fedora)衍生產品。如果是這種情況,那麼您可以簡單地忽略 Cindy@AWS 在該執行緒中所說的內容。

在 RHEL 中掛載本地文件系統由 /etc/rc.sysinit 腳本完成,該腳本掛載所有非 NFS、CIFS (SMB) 或其他基於網路的文件系統的文件系統。這是通過在腳本中執行以下行來完成的:

   action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev

此行執行 mount 並指示它嘗試掛載所有不匹配任何 nfs、nfs4、smbfs、ncpfs、cifs、gfs 或 gfs2 作為其文件系統類型的設備。除此之外,它還會忽略 fstab 中選項中帶有 _netdev 的所有設備。

當 mount 嘗試掛載任何不存在的文件系統時,它不會阻塞,但會失敗並顯示以下錯誤消息:

# mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev`
mount: special device /dev/fhsd does not exist

在我的例子中 /dev/fhsd 是 fstab 中的一行,如下所示:

/dev/fhsd /mnt ext4 預設 0 0

正如你所看到的,這個失敗並沒有阻塞掛載過程,作業系統也不會阻塞等待設備,它只會失敗。

還有另一個腳本負責在 /etc/init.d/netfs 中掛載基於網路的文件系統,並且所有選項中包含 _netdev 的文件系統都由它處理。

Ubuntu 中缺少設備存在問題,您需要添加nobootwait(另請參閱有關Unix.SE上的 nobootwait 和 nofail 的問題)以指定如果設備失去,作業系統啟動過程不應失敗,但在 Ubuntu 下,掛載是由 mountall(1) 執行。

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