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