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):代表权限。这里可以接受很多参数,我们对需要的几个参数介绍一下:
  1. rw:代表nfs服务器对这个目录有读写权限。
  2. sync:资料同步写入到内存与硬盘中,其实这是为了让nfs存储数据可靠一些。
  3. 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权限是非常危险的。


小结

为了巩固学习效果,本节的部分内容后面还会介绍。