NFS服务部署及使用详述

服务部署

服务端操作(nfs server部署及配置)

[root@Q1 ~]# yum -y install rpcbind nfs-utils

[root@Q1 ~]# systemctl start rpcbind.service

[root@Q1 ~]# systemctl start nfs.service

[root@Q1 ~]# rpcinfo -p localhost

[root@Q1 ~]# id nfsnobody

uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)

# yum安装服务后会自动生成对应的用户及组

[root@Q1 ~]# systemctl enable rpcbind.service

[root@Q1 ~]# systemctl enable nfs-server.service

[root@Q1 ~]# systemctl list-unit-files |egrep "rpc|nfs"

[root@Q1 ~]# mkdir -pv /data

[root@Q1 ~]# chown -R nfsnobody.nfsnobody /data

[root@Q1 ~]# cat /etc/exports

#share /data by kazihuo for tom at 20170925

/data 192.168.11.0/24(rw,sync)

[root@Q1 ~]# systemctl reload nfs.service

[root@Q1 ~]# showmount -e 192.168.11.11 # 查询共享目录

export list for 192.168.11.11:

/data 192.168.11.0/24

 

客户端操作(nfs client部署及挂载使用)

[root@Q2 ~]# yum -y install rpcbind nfs-utils

[root@Q2 ~]# systemctl start rpcbind.service

[root@Q2 ~]# systemctl enable rpcbind.service

[root@Q2 ~]# mkdir /kazihuo

[root@Q2 ~]# mount -t nfs 192.168.11.11:/data /kazihuo

[root@Q2 ~]# df -h #查看

客户端开机自启挂载情况优选

法一

将挂载命令写入/etc/rc.local;

#偶尔开机挂载失败;

 

法二

将挂载命令写入/etc/fstab;

# fstab会优于网络被系统加载,网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机挂载,所以一般不用此方式;

 

使用法三将完美解决问题(不会因为nfs服务器无法与客户端建立连接而导致客户端服务器无法启动)!亲测!

法三

autofs服务实现自动挂载

/etc/auto.master #文件定义本地挂载点

/etc/auto.misc #设置需要挂载的文件系统类型及选项

 

# 以下是Q2服务器开机自动挂载Q1共享的nfs磁盘,实现基于以上部署及配置环境!

 

客户端操作

[root@Q2 ~]# yum -y install autofs

[root@Q2 ~]# cat /etc/auto.master

# For details of the format look at auto.master(5).

#

/misc    /etc/auto.misc

/tmp/kazihuo /etc/auto.nfs

#前段是要将服务器端共享的存储挂载在本机的指定目录下,后段是挂载时配置设置,可自定义

#

# NOTE: mounts done from a hosts map will be mounted with the

[root@Q2 ~]# cat /etc/auto.nfs

nfs -fstype=nfs 192.168.10.11:/data

#将服务器端的data目录挂载到本机/tmp/kazihuo/nfs目录

[root@Q2 ~]# systemctl start autofs.service

[root@Q2 ~]# systemctl enable autofs.service

# 重启后查看挂载情况

[root@Q2 ~]# mount |grep kazihuo

/etc/auto.nfs on /tmp/kazihuo type autofs (rw,relatime,fd=12,pgrp=1554,timeout=300,minproto=5,maxproto=5,indirect)

 

注:以上操作将服务器端共享的存储挂载到本地/tmp/kazihuo/nfs目录下,需要cd /tmp/kazihuo/nfs进去,触发才能自动挂载,同时nfs目录不能提前自动创建,自动挂载时系统自动创建nfs目录。

 

进一步探讨:

当服务端和客户端失去联系时,客户端能正常启动系统,而后又与服务端建立了连接,此刻,nfs是否能自动挂载上,情况带跟进!!!

挂载配置说明

公司挂载实例

[root@master(35.100) ~]# cat /etc/exports

/r2 192.168.52.0/8(insecure,rw,no_root_squash)

指定NFS客户端地址的配置说明

客户端地址

具体地址

说明

授权指定地址

192.168.10.10

生产环境不常用

授权整个网段

192.168.10.0/24

生产环境常见配置

授权整个网段

192.168.10.*

不推荐使用

授权指定域名客户端

nfs.kazihuo.com

生产环境不常用

授权整个域名客户端

*.kazihuo.com

生产环境不常用

 

NFS配置权限常用参数说明

参数

说明

rw

read-write 可读写

ro

read-only 只读

sync

将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async

将数据先保存在内存缓冲区中,必要时才写入磁盘

no_root_squash

来访的root用户保持root帐号权限;

root_squash(默认)

将来访的root用户映射为匿名用户或用户组;

all_squash

无论访问共享目录的用户身份如何,其权限将被镇压为匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份

no_all_squash(默认)

访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;

anonuid

匿名用户UID设置值,可自行设置,但必须在/etc/passwd中存在;在多台客户端共享一个nfs目录时,可通过此参数使得不同的客户端写入的数据保持相同的用户权限

anongid

匿名用户组

secure(默认)

限制客户端只能从小于1024的tcp/ip端口连接服务器;

insecure

允许客户端从大于1024的tcp/ip端口连接服务器;

wdelay(默认)

检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;

no_wdelay

若有写操作则立即执行,应与sync配合使用;

subtree_check(默认)

若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;

no_subtree_check

即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

 

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

确保所有客户端对共享目录具有相同的用户访问权限;

all_squash把所有客户端都镇压为固定的匿名用户(UID相同);

就是anonuid、anongid指定的UID和GID用户;

所有的客户端和服务端都需要有一个相同的UID和GID用户

 

企业生产场景配置实例

格式

共享目录 客户端地址(参1,参2···)

说明

样例一

/data 192.168.10.0/24(rw,sync)

允许客户端读写,且数据同步写到服务端的磁盘

原文地址:https://www.cnblogs.com/kazihuo/p/13130120.html