自动化安装NFS+autofs服务器

1 概述

通过NFS搭建共享盘,方便共享资料

本次使用,服务器ip的地址是192.168.32.11。需要共享的目录是/sharedisk

2 服务器端

2.1 安装软件

服务器端安装软件包,有两个包

yum -y install nfs-utils rpcbind

2.2. 开启服务

service nfs start

service rpcbind start

注意: 后续要重启服务的话,重启顺序建议是

service rpcbind restart

service nfs restart

如果 [root@localhost /]#showmount -e 192.168.32.11

出现报错  clnt_create: RPC: Program not registered    这个报错是由于重启顺序导致的

按照以下顺序重启

/etc/init.d/rpcbind stop

/etc/init.d/nfs stop

/etc/init.d/rpcbind start

/etc/init.d/nfs start

测试  showmount -e 192.168.32.113

配置vim /etc/exports,服务器端的配置这个文件默认是空文件,写入以下的语句

/sharedisk 192.168.32.0/24(rw,no_root_squash,insecure,sync)

注意这里的192.168.32.0/24指定是允许哪些机器来挂载,这里如果没有指定对应的ip,客户端挂载的时候,会出现服务器端拒绝的报错

2.3  配置生效

exportfs -r

2.4 检查

输入命令

showmount  -e

结果如下,看到允许挂载的机器列表

Export list for localhost.localdomain:

/sharedisk 172.16.0.0/16,192.168.32.0/24

2.5 共享文件夹的权限设置

建议操作,把共享盘的权限设置为777.让其他机器可以自由访问该盘。当然,这个要根据实际情况分配权限

chmod 777 /sharedisk

2.6 查看所用到的端口

rpcinfo -p

添加允许端口到iptables或关闭iptables

如果这台服务器不暴露在公网时或只能通过内网IP访问时这样做,否则不建议这样做。根据实际情况而定

iptables -A INPUT -p tcp --dport 111 -j ACCEPT

iptables -A INPUT -p udp --dport 111 -j ACCEPT

2.7 服务器端设置开机启动nfs盘

echo " /dev/sdb1/            /sharedisk              ext4      defaults      0 0">>/etc/fstab

3 客户端

3.1 安装软件

客户端要安装nfs-utils

yum install nfs-utils

如果没有安装,挂载的时候会出现如下的报错

[root@localhost sharedisk]# mount -amount: wrong fs type, bad option, bad superblock on 192.168.32.11:/sharedisk,      missing codepage or helper program, or other error      (for several filesystems (e.g. nfs, cifs) you might      need a /sbin/mount.helper program)

In some cases useful info is found in syslog - try dmesg | tail or so.

3.2 检查服务端共享情况

showmount -e 192.168.32.11

如果这里没有出现共享盘,要根据报错进行排查

3.3 挂载共享盘

3.3.1 挂载测试

客户端临时挂载的语句如下

mount -t nfs 192.168.32.11:/sharedisk/sharepoint/ /sharedisk/sharepoint

注意,这里如果挂载不上,出现服务器端拒绝的报错,可能是/etc/exports这个文件没有把要挂载的机器写入

这里并不建议用长期挂载的形式,因为nfs服务长期挂载,当服务器关机或者停止nfs进程的时候,会导致客户端没有正常卸载,这样一来,客户端关机关不了,只能通过断电才能关机。

一下是写入/etc/fstab文件的语句,开机挂载,但是建议不要这么做,了解一下就好。

echo " 192.168.32.11:/sharedisk /sharedisk            nfs        defaults  0 0">>/etc/fstab

3.3.2 autofs挂载

这里建议的解决办法是通过autofs进行挂载。

客户端安装软件autofs

yum install autofs

配置autofs

vim /etc/auto.master

/nfsfile /etc/auto.nfs

找一个目录,指定给autofs用

vim  /etc/auto.nfs

share  -rw,bg,soft,rsize=32768,wsize=32768 192.168.32.61:/sharedisk

注意,auto.nfs这个文件写入的share这个是要挂载的目录,不能存在,完整目录是/nfsfile/share,进入 该目录/nfsfile就会自动生成,不要自己创建。后面是指定挂载的属性,最后是指定挂载的服务的盘。

autofs会自动检测挂载点是否有使用,间隔5分钟没有使用,就会自动卸载/nfsfile/share这个盘。

这里需要特别注意,如果autofs还没卸载,而且客户端正常访问/nfsfile/share这个挂载点,此时,服务器端停止nfs服务,或者服务器断网,或者是服务器挂机,其实/nfsfile/share相当于是一个不存在的目录,如果在/nfsfile下访问share,或者直接在share下访问,是有问题的,终端将会被卡在,解决办法是换个终端,等了20分钟后,该终端有可以使用,但是不建议这个时候在挂载点操作,最好是先进入到其他目录下工作,nfs服务器恢复正常后,再重新进入/nfsfile/share访问资源。

但是如果nfs服务器还没恢复正常,还有终端在访问/nfsfile/share,即被卡在了/nfsfile/share路径下,此时如果关机,centOS7的nfs将不能正常关机,需要断电才能关机。

启动服务

启动服务后,cd /nfsfile/share就可以访问到nfs共享盘的资源了

service autofs restart

4 自动化脚本

4.1 NFS 脚本

#!/bin/bash

#

#******************************************************************************

#Author:               Sunny

#Date:                 2017-09-07

#FileName:             install_nfs.sh

#version:              1.0

#Your change info:

#Description:          For auto install nfs

#Copyright(C):         2017  All rihts reserved

#*****************************************************************************

read -p  "Please input your choice,server or client: " choice

read -p "if it is server,input full path dir as serverfile (eg:/sharedisk2): " serverfile

read -p "if it is server,input path you want to  mount  serverfile(eg:/dev/sdb1: ): " mpoint

case $choice in

server)

[ -e $serverfile ] && echo $serverfile is exist || mkdir $serverfile

rpm -q nfs-utils &>/dev/null || yum -y install nfs-utils &>/dev/null;

rpm -q rpcbind &>/dev/null || yum -y install rpcbind &>/dev/null;

{ service rpcbind restart;rpcinfo -p |grep portmapper; }&>/dev/null || echo rpcbind does not start

{ service nfs restart;rpcinfo -p |grep nfs; }&>/dev/null || echo nfs does not start

echo "$serverfile 192.168.32.0/24(rw,no_root_squash,sync)">>/etc/exports

echo "$serverfile 172.18.0.0/16(rw,no_root_squash,sync)">>/etc/exports

exportfs -r

if  $(grep "$serverfile"  /etc/fstab&>/dev/null) ;then

echo "$serverfile already in /etc/fstab,please if you really want to mount $serverfile on $mpoint"

elif  $(grep "$mpoint"  /etc/fstab&>/dev/null) ;then

echo "$mpoint already in /etc/fstab,please if you really want to mount $serverfile on $mpoint"

else

echo " $mpoint            $serverfile              ext4      defaults      0 0">>/etc/fstab

mount -a

fi

showmount  -e &>/dev/null && echo "nfs server start ok,you can check in client"|| echo "nfs start fail,please check"

;;

client)

rpm -q nfs-utils &>/dev/null || yum -y install nfs-utils &>/dev/null;

showmount -e 192.168.32.61

;;

esac

unset choice

unset serverfile

unset mpoint

exit

4.2 autofs脚本

#!/bin/bash

#

#***********************************************************************

#Author:              Sunny

#Date:                2017-09-08

#FileName:            install_autofs.sh

#version:              1.0

#Your change info:

#Description:          For install autofs by auto

#Copyright(C):        2017  All rihts reserved

#***********************************************************************

read -p "Please input a full path  dir you want to auto mount(default:/nfsfile): " autodir

read -p "Please creat a file in /etc you want to assign for autofs(default:auto.nfs): " autofile

read -p "Please input remote source file ip and file (default:192.168.32.61:/sharedisk): " remotesrc

if [ -z ${autodir:-} ];then

autodir=/nfsfile

fi

if [ -z ${autofile:-} ];then

autofile=auto.nfs

fi

if [ -z ${remotesrc:-} ];then

remotesrc=192.168.32.61:/sharedisk

fi

[ -e "$autodir" ]&>/dev/null && echo "$autodir already exist"|| mkdir "$autodir"

rpm -q autofs &>/dev/null || yum -y install autofs&>/dev/null;

#to assign a dir(in the eg is share ) which you want to access to the source dir

#attention,share is a dir,but is should not exist,the dir will exist when you access to it

if [ -e /etc/$autofile ];then

echo "$autofile is exist,please check"

exit  6;

else

cat >>/etc/$autofile<

share  -rw,bg,soft,rsize=32768,wsize=32768 $remotesrc

eof

sed -r -i.bak "/^\/misc/ a $autodir  \/etc\/$autofile" /etc/auto.master

fi

service autofs restart &>/dev/null || echo "something unexpect happened,please check autofs service"

[ -e /root/bakfile ] || mkdir /root/bakfile

mv /etc/*.bak /root/bakfile

unset autodir

unset autofile

unset remotesrc

exit

5 注意事项

1 需要注意的是,如果通过写入配置文件的方式挂载,由于 NFS 使用的这个 RPC 服务,当客户端连上服务器时,那么你的服务器想要关机, 那可就会成为『不可能的任务』!如果你的服务器上面还有客户端在联机,那么你要关机, 可能得要等到数个钟头才能够正常的关机成功!

建议你的 NFS Server 想要关机之前,能先『关掉 rpcbind 与 nfs 』这两个东西!如果无法正确的将这两个 daemons 关掉,那么先以 netstat -utlp 找出 PID ,然后以 kill将它关掉先!这样才有办法正常的关机成功。

也可以利用 showmount -a localhost 来查出来那个客户端还在联机,或者是查阅 /var/lib/nfs/rmtab 或 xtab 等档案来检查亦可。找到这些客户端后,先关掉这些客户端的连接,即停掉客户端的nfs服务,确认没问题后在依次关机

这个注意事项是摘自鸟哥私房菜的13章 nfs的介绍,但是这里并没有测试到和介绍一样的情况,以上都查询不到信息。

2  如果不是通过autofs挂载,而是直接写入配置文件/etc/fstab,当客户端没有全部卸载nfs盘,centos7客户端的机器上就不能正常关机,关机会卡在

3 如果服务器网络断了,那么挂载nfs的客户端使用就会有问题,如果客户端所在的目录有挂载盘,或者是对本地挂载盘做了链接,那么通过ls 或者cd到对应的挂载盘,终端就会卡死,需要重新开一个终端,建议用autofs进行挂载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容