部署背景:
因公司的UPS老化,斷電後只能支撐20min,各種原因無法保障服務器不斷電,只能將所有服務器power manager mode都設置爲 自動來電喚醒,此時 掛載nfs的應用服務器 總是比 nfs存儲服務器 重啓速度快,就是因爲這個時間差,雖然可以實現開機掛載nfs磁盤,但是應用服務器往往無法成功掛載nfs磁盤。
解決方案:
①開機延遲時間重新掛載
起初,使用開機腳本/etc/rc.local
sleep 300
mount -a
基本滿足斷電重啓的需求。
②非實時守護進程進行多次掛載
第二階段,因爲時間段300秒這個延遲問題,依舊無法實現nfs存儲中斷或重啓這樣的小概率事件,於是寫了一個類似守護進程腳本,只要磁盤中無法檢索nfs磁盤,不停的執行mount -a命令,直至nfs存儲服務器的應用完全開啓。
腳本如下
mount -t nfs 192.168.3.207:/home/www /mnt/ceshi_nfs
每小時4次進行檢驗
01,16,31,46 * * * * if [-d /mnt/ceshi_nfs/ceshidir] || mount -a
③成熟工具autofs解決服務中斷問題
鑑於上述守護進程過於模式原因,找到工具autofs解決
部署並開啓autofs後測試結果如下:
測試用例:
將192.168.3.207服務器的/home/www目錄掛載在192.168.3.205服務器/mnt/ceshi_nfs目錄
205-virtual-machine:/mnt# apt-get install autofs -y //配置autofs掛載nfs磁盤 205-virtual-machine:/mnt# cat /etc/auto.master /mnt/ceshi_nfs /etc/auto.nfs 205-virtual-machine:/mnt# cat /etc/auto.nfs nfs 192.168.3.207:/home/www
①umount掉nfs磁盤,開啓autofs測試是否會成功開啓;
# umount /mnt/ceshi_nfs # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 19092180 11952848 6146464 67% / udev 487036 4 487032 1% /dev tmpfs 100372 904 99468 1% /run none 5120 0 5120 0% /run/lock none 501852 144 501708 1% /run/shm /dev/sda1 439012 99706 312119 25% /boot # service autofs restart //使用restart讀取配置文件後 # df | grep 207 192.168.30.207:/home/www 19092224 9122560 8976768 51% /mnt/ceshi_nfs
③NFS存儲服務器服務重啓,測試應用服務器是否能夠在NFS重新啓動後,掛載NFS磁盤;
③NFS服務重啓,測試應用服務器是否能夠在NFS重新啓動後,掛載NFS磁盤
207:/home/www# /etc/init.d/portmap stop 207:/home/www# /etc/init.d/nfs-kernel-server stop //此時執行df命令會卡頓,無法得到結果,無法進行讀取掛載nfs目錄的磁盤操作,時間過長甚至終端無法操作 205-virtual-machine:/mnt# df ^C 205-virtual-machine:/mnt# ls ^C //等待60s時間過後即可進行自動掛載 205-virtual-machine:/mnt# df | grep 207 192.168.30.207:/home/www 19092224 9122560 8976768 51% /mnt/ceshi_nfs
③兩服務器同時重啓,測試應用服務器是否能夠掛載NFS磁盤;
207:/home/www# reboot 205-virtual-machine:/mnt# reboot 205-virtual-machine:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 19092180 11952912 6146400 67% / udev 487036 4 487032 1% /dev tmpfs 100372 904 99468 1% /run none 5120 0 5120 0% /run/lock none 501852 144 501708 1% /run/shm /dev/sda1 439012 99706 312119 25% /boot
③測試結果:
無法解決開機上述即後無掛載問題
後續,更改配置文件,設置automount週期,問題不定期存在,配置如下:
205-virtual-machine:/mnt# cat /etc/auto.master /mnt/ceshi_nfs /etc/auto.nfs --timeout 30
最後建議:
針對autofs這個bug解決方案無非是兩種:
① 現有架構依舊實行每小時4次的非實時守護腳本,輔助autofs實時守護;
② 源碼編譯最新版的autofs(後續如有結果我會補充)。