nfs文件系统的安装
好了,现在首先来安装nfs系统吧,这是熟悉nfs的最重要方法。
安装nfs分为在服务器上安装和在客户端上安装,在服务器端安装,就相当于安装服务器端。
不过我们一般用一个命令,同时安装服务器端和客服端程序。不用纠结为什么要在客户端安装服务器端程序,这是因为简单,同时,客户端,不启动服务器的进程,有不占用资源。
nfs安装环境
本文将介绍在centos上安装nfs服务器
安装nfs服务器
下面是安装nfs服务器的shell脚本,安装服务器后,我们将/root/nfs目录作为nfs服务器的文件系统目录,所有文件存储在这个目录,如果你想更改这个目录,全局替换/root/nfs 到你自己的目录就可以了。
#!/bin/bash # 注意nfs的目录是/root/nfs , install_nfs(){ echo 'nfs开始成功-------' yum install -y nfs-utils mkdir -p /root/nfs chown nfsnobody:nfsnobody -R /root/nfs/ cat > /etc/exports <<EOF /root/nfs *(rw,sync,no_root_squash) EOF exportfs -rv # 先启动rpcbind,再启动nfs systemctl start rpcbind systemctl start nfs # 查看状态 service rpcbind status service nfs status # 查看状态的其他语句 netstat -anptu | grep rpcbind rpm -ql nfs-utils | grep show echo 'nfs安装成功-------' } install_nfs
把上面的代码,传到你的服务器,并执行,如果没有报错,那么就代表安装成功了。
或者执行下面的代码,先从远程获取代码,在执行也可以了。
wget https://raw.githubusercontent.com/hewebgl3/nfs-install/master/nfs-install.sh sh nfs-install.sh
下面对上面的安装脚本,我们做一些简单介绍。
安装注意
nfs客户端和服务端都安装nfs-utils包,同时自动安装rpcbind。所以上面的安装代码,只执行了脚本就可以了:
yum install -y nfs-utils
建立一个需要被其他服务器访问的文件
通过mkdir创建一个文件夹,作为nfs的目录,注意这个目录必须放在一个硬盘空间比较大的硬盘上,否则空间可能不够哦。
mkdir -p /root/nfs
设置nfs用户权限
将/root/nfs设置nfsnobody权限,这样更安全。
chown nfsnobody:nfsnobody -R /root/nfs/
编辑nfs配置文件
nfs服务器需要知道哪个目录可以作为nfs的目录,我们只需要编辑 /etc/exports这个文件就可以了,本例在这个文件中录入了下面的代码:
/root/nfs *(rw,sync,no_root_squash)
- /root/nfs : 表示需要挂载的目录
-
- :表示任何一个ip的客户端都可以连接nfs服务器,一般在生产环境中,我们只需要内网可以访问nfs就可以了,这时候,只需要把内网的网段用来代替*号就可以了。
- (rw,sync,no_root_squash):代表权限。这里可以接受很多参数,我们对需要的几个参数介绍一下:
- rw:代表nfs服务器对这个目录有读写权限。
- sync:资料同步写入到内存与硬盘中,其实这是为了让nfs存储数据可靠一些。
- no_root_squash:翻译我中文为,不要压制root的权限。表示客户机用root账号访问该共享文件夹时,具有被访问目录的root权限。这个参数非常不安全,不建议使用,这里只是做个例子。
除了上面的参数,还有其他一些参数可以使用,我们这里了解一下: 1. root_squash: 登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个root权限会被变为一个普通的权限。这样相对来说,比较安全。 2. async 资料会先暂存于内存当中,而非直接写入硬盘 ,这样在断电或其他程序错误的情况下,可能会丢失部分数据。 3. secure NFS通过1024以下的安全TCP/IP端口发送 4. insecure NFS通过1024以上的端口发送
导出目录
设置好目录后,需要导出目录,让nfs知道,哪个目录可以共享出现,使用下面这个命令:
exportfs -rv
启动nfs服务
可以使用下面的命令启动nfs服务器的端口监听和nfs的服务。
systemctl start rpcbind systemctl start nfs
查询nfs服务器的状态
service rpcbind status service nfs status
nfsnobody用户
安装后会创建nfsnobody用户和组,uid和gid都是65534,查看用户的命令如下:
cat /etc/passwd | grep nfsnobody nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
这个用户是nfs的默认用户,当参数被设置为root_squash时,客户端就算是root用户登录nfs服务器,那么也被强制变为nfsnobody用户,这样就能保证nfs目录的安全。我们知道在服务器中具有root权限是非常危险的。
小结
为了巩固学习效果,本节的部分内容后面还会介绍。