Linux搭建NFS服务

一、NFS服务简单介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

二、NFS权限参数说明

权限

说明

rw

表示可读写权限

ro

表示只读权限

sync

请求或写入数据时,数据同步写入到NFSServer的硬盘才返回(优点,数据安全不会丢,缺点,性能比不启用该参数要差)

async

写入时数据会先写到内存缓冲区,只到硬盘有空档才会再写入磁盘,这样可以提高写入效率!;风险为若服务器宕机或不正常关机,会损失缓冲区为写入磁盘的数据(解决办法:服务器主板加电池或加UPS不间断电源)!

no_root_squash

访问NFS Server共享的用户如果是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的,用户避免应用

root_squash

如果访问NFS Server共享目录的用户是root,则它的权限将被压缩或匿名用户,同时它的UID和GID通常会变成nfsnobody帐号身份

all_squash

不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody帐号身份。在早期多个NFS客户端同时写入NFS Server数据时,这个参数很有用

*在生产中配置NFS的重要技巧

1)、确保所有客户端服务器对NFS共享目录都具备相同的用户访问权限

       a、all_squash把所有客户端都压缩成固定的匿名用户(UID相同)

       b、就是aninuid,anongid指定的UID和GID的用户

2)、所有的客户端和服务端都需要有一个相同的UID和GID用户,即nfsnobody(UID必须相同)

anonuid

参数以anon*开头即指anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多NFS Clients时,如多台Web Server共享一个NFS目录,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可

anongid

同anonuid,区别就是把uid(用户id)换成gid(组id)

noatime

在文件系统上不更新inode访问时间

nosuid

不允许设置用户标识或设置组标识为才能生效

intr

当服务器宕机或者无法到达时,允许中断NFS请求

noexec

当服务器宕机或者无法到达时,允许中断NFS请求

rsize=8192和wsize=8192

通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度

nodiratime

不允许更新文件系统上的目录 inode 访问记录

三、搭建NFS服务

1、NFS服务搭建环境说明

系统环境:CentOS7.5  64位

NFS服务端:

•主机名:nfs-master

•IP地址:172.16.2.31

NFS客户端

•主机名:nfs-client

•IP地址:172.16.2..32

2、NFS服务端搭建步骤

第一步:安装并检查NFS和RPC服务

yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpcbind

第二步:启动RPC服务和NFS服务 (必须先启动RPC服务,然后再启动NFS服务)

systemctl start rpcbind
systemctl start nfs
ps -ef|grep rpc
ps -ef|grep nfs
lsof -i:111
rpcinfo -p localhost

第三步:设置开机自启动并检查

systemctl enable rpcbind
systemctl enable nfs
systemctl list-unit-files --type=service|grep "enabled"|egrep "rpcbind|nfs"

第四步:创建共享目录

mkdir /data 
chown -R nfsnobody.nfsnobody /data
ls -ld /data

第五步:配置共享/data目录

cat>>/etc/exports<<EOF
#NFS server share directories
/data 172.16.2.0/24(rw,sync)
EOF
cat /etc/exports

第六步:平滑重启NFS服务并检查服务

systemctl reload nfs
cat /var/lib/nfs/etab

第七步:本地查看挂载目录

showmount -e 172.16.2.31

3、NFS客户端搭建步骤

第一步:安装NFS和RPC服务并检查

yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpcbind

第二步:启动RPC服务(不需要启动NFS服务,原因是不安装NFS服务的话没有showmount这个命令)

systemctl start rpcbind 
ps -ef|grep rpc
lsof -i:111

第三步:设置开机自启动并检查

systemctl enable rpcbind
systemctl list-unit-files --type=service|grep "enabled"|grep "rpcbind"

第四步:检查服务端的NFS挂载目录是否OK

showmount -e 172.16.2.31

第五步:挂载设置开机自动挂载

mount -t nfs 172.16.2.31:/data /mnt
echo "mount -t nfs 172.16.2.31:/data /mnt">>/etc/rc.local

#提示:也可以放入/etc/fstab,如果要放入/etc/fstab,需启用netfs服务。这是因为fstab会优先于网络被Linux系统加载。网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机自动挂载。

第六步:查看是否挂载成功

[root@nfs-client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 57G 1.6G 53G 3% /
devtmpfs 225M 0 225M 0% /dev
tmpfs 236M 0 236M 0% /dev/shm
tmpfs 236M 5.6M 230M 3% /run
tmpfs 236M 0 236M 0% /sys/fs/cgroup
/dev/sda1 190M 93M 84M 53% /boot
tmpfs 48M 0 48M 0% /run/user/0
172.16.2.31:/data 57G 1.6G 53G 3% /mnt
原文地址:https://www.cnblogs.com/wutao666/p/9772229.html