部署背景:

  

  因公司的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测试是否会成功开启;

wKioL1jPd7WQSTzRAAAV2VitOio382.png-wh_50

   

# 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磁盘

wKiom1jPd0yQNpT0AAAUUwud3cw611.png-wh_50

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磁盘;

wKioL1jPd4GiWFulAAAV_kbtiBs151.png-wh_50

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(后续如有结果我会补充)。