/etc/exports参数解释

来源:互联网 发布:阿里云连接管理终端 编辑:程序博客网 时间:2024/06/05 08:30

上周做私有云的扩容,有一台设备中有5T的日志存储数据,需要把日志数据备份到其他的设备中,考虑到一个方案,准备用NFS

先简单介绍一下NFS服务器是什么?

  NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端的NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。

RPC(Remote Procedure Call)

  NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

  因为我用的是Ubuntu16.04,所以下面的操作都是在这个系统上的。

服务器端(192.168.94.54)

1.1安装NFS服务:

执行以下命令安装NFS服务器,

apt会自动安装nfs-common、rpcbind等13个软件包

sudo apt install nfs-kernel-server

1.2编写配置文件:

编辑/etc/exports 文件:

sudo vi /etc/exports/etc/exports文件的内容如下:/tmp *(rw,sync,no_subtree_check,no_root_squash)/data *(rw,sync,no_subtree_check,no_root_squash)/logs *(rw,sync,no_subtree_check,no_root_squash)

Exports文件中可以设定的参数主要有以下这些:

  参数 说明

(1) Ro 该主机对该共享目录有只读权限

(2) Rw 该主机对该共享目录有读写权限

(3) Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

(4) No_root_squash 客户机用root访问该共享文件夹时,不映射root用户

(5) All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

(6) Anonuid 将客户机上的用户映射成指定的本地用户ID的用户

(7) Anongid 将客户机上的用户映射成属于指定的本地用户组ID

(8) Sync 资料同步写入到内存与硬盘中

(9) Async 资料会先暂存于内存中,而非直接写入硬盘

(10) Insecure 允许从这台机器过来的非授权访问
 
(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

(12) no_subtree_check 和上面相对,不检查父目录权限

(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)

(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

(15) hide 在NFS共享目录中不共享其子目录

(16) no_hide 共享NFS目录的子目录

(17) secure NFS通过1024以下的安全TCP/IP端口发送

(18) insecure NFS通过1024以上的端口发送

/ user01(rw) user02(rw,no_root_squash) 表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录

  /root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

  /home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目录,.test.com域中所有的主机都可以访问该目录,且有读写权限

  /home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户

1.3创建共享目录

在服务器端创建/tmp /data和/logs共享目录

sudo mkdir -p /tmpsudo mkdir -p /datasudo mkdir -p /logs

1.4重启nfs服务:

sudo service nfs-kernel-server restart

1.5常用命令工具:

在安装NFS服务器时,已包含常用的命令行工具,无需额外安装。

显示已经mount到本机nfs目录的客户端机器。

sudo showmount -e localhost

将配置文件中的目录全部重新export一次!无需重启服务。

sudo exportfs -rv

查看NFS的运行状态

sudo nfsstat

查看rpc执行信息,可以用于检测rpc运行情况

sudo rpcinfo

查看网络端口,NFS默认是使用111端口。

sudo netstat -tu -4

客户端(192.168.94.76)

2.1安装客户端工具:

在需要连接到NFS服务器的客户端机器上,

需要执行以下命令,安装nfs-common软件包。

apt会自动安装nfs-common、rpcbind等12个软件包

sudo apt install nfs-common

2.2查看NFS服务器上的共享目录

显示指定的(192.168.94.54)NFS服务器上export出来的目录

sudo showmount -e 192.168.94.54

2.3创建本地挂载目录

sudo mkdir -p /mnt/datasudo mkdir -p /mnt/logs

2.4挂载共享目录

将NFS服务器192.168.94.54上的目录,挂载到本地的/mnt/目录下

sudo mount -t nfs 192.168.94.54:/data /mnt/datasudo mount -t nfs 192.168.94.54:/logs /mnt/logs

注:在没有安装nfs-common或者nfs-kernel-server软件包的机器上,

直接执行showmount、exportfs、nfsstat、rpcinfo等命令时,

系统会给出友好的提示,

比如直接showmount会提示需要执行sudo apt install nfs-common命令,

比如直接rpcinfo会提示需要执行sudo apt install rpcbind命令。