本文介绍在CentOS 7上配置NFSv3和NFSv4的具体步骤,唯一的条件是你应该安装CentOS 7服务器和数据目录以通过NFS导出到其它服务器,安装请参考在VMware中安装CentOS操作系统教程。
第1步:安装NFS服务器 使用以下命令在CentOS 7上安装nfs-utils软件包: # yum -y install nfs-utils
第2步:配置用于NFS的域(可选) # vim /etc/idmapd.conf Domain = computingforgeeks.com
第3步:配置NFS导出 NFS导出在文件/etc/exports下配置,/etc/exports文件控制将哪些文件系统导出到远程主机并指定选项,它遵循以下规则: 注释以井号(#)开头。 默认情况下会忽略空行。 每个主机的选项必须直接放在主机标识符后面的括号中,而主机和第一个括号之间没有任何空格。 每个导出的文件系统都应该在各自的行上。 授权主机列表需要用空格字符分隔。 长行可以用反斜杠(\)包装。 导出的文件系统的条目具有以下结构: export host(options) 使用的变量是: export - >正在导出的目录 host - >共享导出的主机或网络 options - >用于主机的选项 对于具有不同选项的多个主机,语法为: export host1(options1) host2(options2) host3(options3) NFS导出默认选项是: ro:导出的文件系统是只读的,远程主机不能对文件系统上共享的文件进行任何更改,要允许主机同时进行读取和写入,请指定rw选项。 sync:对于此选项,NFS服务器不会在先前请求所做的更改写入磁盘之前回复请求,要改为启用异步写入,请指定选项async。 root_squash:这可以防止远程连接的root用户拥有root权限,相反,NFS服务器将为它们分配用户ID nfsnobody,这有效地“压缩”远程root用户对最低本地用户的能力,防止在远程服务器上可能的未授权写入,要禁用root压缩,请指定no_root_squash。 要压缩每个远程用户(包括root用户),请使用all_squash,要指定NFS服务器应从特定主机分配给远程用户的用户和组ID,请分别使用anonuid和anongid选项,如下所示: export host(anonuid=uid,anongid=gid) uid和gid分别是用户ID号和组ID号。 wdelay:如果它怀疑另一个写请求即将发生,则通过延迟写入磁盘来减少磁盘写入开销,启用默认同步时,可以使用no_wdelay禁用此功能。 subtree_check:此选项启用子树检查,可以使用no_subtree_check禁用它。 配置行的示例如下: /mnt/data 192.168.1.0/24(rw,no_root_squash) 其中/mnt/data是导出的目录,192.168.1.0/24是允许以读/写权限访问它的网络,并且没有root压缩,指定的网络可以替换为单个IP地址,也可以使用*进行全局访问。 请注意,你必须显式覆盖每个导出的文件系统的每个默认值,例如,如果未指定rw选项,则导出的文件系统将以只读方式共享。 有关导出选项的更多信息,请参阅man exportfs。
第4步:为NFS配置防火墙 下一步是在防火墙上打开NFS服务所需的端口。 对于NFSv4,请使用以下命令: # firewall-cmd --add-service=nfs --permanent # firewall-cmd --reload 参考:CentOS 7下使用FirewallD构建动态防火墙。 对于NFSv3,需要通过定义xml文件来添加额外的端口,这需要放在/etc/firewalld/services/目录下: 运行:cat /etc/firewalld/services/nfs.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>NFS <description>NFS service <port protocol="tcp" port="111"/> <port protocol="udp" port="111"/> <port protocol="tcp" port="662"/> <port protocol="udp" port="662"/> <port protocol="tcp" port="892"/> <port protocol="udp" port="892"/> <port protocol="tcp" port="2049"/> <port protocol="udp" port="2049"/> <port protocol="tcp" port="32803"/> <port protocol="udp" port="32803"/> <port protocol="tcp" port="38467"/> <port protocol="udp" port="38467"/> <port protocol="tcp" port="32769"/> <port protocol="udp" port="32769"/> </service> 然后在防火墙上添加服务: # firewall-cmd --add-service=nfs --permanent # firewall-cmd --reload
第5步:启动并启用NFS服务 现在一切都已配置好,你应该已准备好启动该服务: # for i in rpcbind nfs-server; do systemctl start $i systemctl enable $i done 当你启动nfs服务时,/usr/sbin/exportfs命令启动并读取此文件,将控制权传递给实际安装过程的rpc.mountd(如果是NFSv3),然后传递给rpc.nfsd,然后文件系统可用于远程用户,它将导出的文件系统写入/var/lib/nfs/etab,可以使用以下命令查看: # cat /var/lib/nfs/etab
第6步:发现NFS导出 有两种方法可以发现NFS服务器导出的文件系统,首先,在任何支持NFSv3的服务器上,使用showmount命令(showmount命令_Linux showmount命令使用详解:显示NFS服务器加载的信息): $ showmount -e server 例如: $ showmount -e localhost Export list for localhost: /mnt/test * /mnt/data 192.168.1.0/24 对于仅支持NFSv4的服务器,请mount /并检查内容: # mount serverip:/ /mnt/ # cd /mnt/ # ls
第7步:在客户端上挂载导出的文件系统 客户端可以是支持NFSv3或NFSv4的任何操作系统,对于Debian/Ubuntu,请安装以下打包的: $ sudo apt-get install rpcbind nfs-common 对于CentOS 7,安装nfs-utils: $ sudo yum -y install nfs-utils $ sudo systemctl start rpcbind $ sudo systemctl enable rpcbind 要执行非持久性安装,可以使用mount命令(mount命令_Linux mount命令使用详解:用于加载文件系统到指定的加载点): mount -t 192.168.1.10:/mnt/data /data 要指定NFS版本,请使用-o选项 # mount -t nfs -o vers=4 192.168.1.10:/mnt/data /data 或者: # mount -t nfs -o vers=3 192.168.1.10:/mnt/data /data 要使此持久化,需要修改/etc/fstab文件,NFSv3的安装如下所示在/etc/fstab上: 192.168.1.10:/mnt/data /data nfs defaults,vers=3 0 0 你可以看到vers=3选项用于指定我们要挂载NFSv3,也可以指定其他支持的选项,如下所示: 192.168.1.10:/mnt/data /data nfs vers=3,proto=tcp,hard,intr,rsize=32768,wsize=32768,noatime 0 0 创建一个挂载点并挂载它: # mkdir /data # mount -a # df -hT | grep /data 192.168.1.10:/data nfs 200G 175G 26G 88% /data
相关主题 |