NFS服务端和客户端搭建

服务端

安装

yum install -y nfs-utils
systemctl enable nfs-server
systemctl enable rpcbind
systemctl start nfs-server
systemctl start rpcbind

修改配置文件

常用共享权限参数说明:

ro 只读

rw 读写

root_squash 当nfs客户端以root管理员访问时,映射为NFS服务器的匿名用户

no_root_squash 当nfs客户端以root管理员访问时,映射为NFS服务器的root管理员

all_squash 无论nfs客户端使用什么账户访问,均映射为nfs服务器的匿名用户

sync 同时将数据写入到内存与硬盘中,保证数据不丢失

async 优先将数据保存到内存中,然后再写入硬盘,这样效率更高,但可能会丢失数据

# 配置文件一:
	vim /etc/exports
	# 追加如下参数:一行为一个分享目录,格式为“共享目录的路径 允许访问的NFS客户端(共享权限参数)”
		/nfsshare1 192.168.1.*(rw,sync,all_squash)
		/nfsshare2 192.168.2.2(ro,sync,root_sqush)
	# 或者使用如下命令
		echo "/nfsfile 192.168.1.*(rw,sync,all_squash)" >>/etc/exports
		echo "/nfsshare 192.168.2.2(ro,sync,root_sqush)" >>/etc/exports
# (此项非必须)配置文件二:
	vim /etc/sysconfig/nfs
	# 追加如下参数:修改默认端口,为之后添加防火墙规则做准备(如果关闭防火墙,此步可以不做)
		RQUOTAD_PORT=30001
		LOCKD_TCPPORT=30002
		LOCKD_UDPPORT=30002
		MOUNT_PORT=30003
		STATD_PORT=3004
	# 或者使用如下命令
		echo "RQUOTAD_PORT=30001" >>/etc/sysconfig/nfs
		echo "LOCKD_TCPPORT=30002" >>/etc/sysconfig/nfs
		echo "LOCKD_UDPPORT=30002" >>/etc/sysconfig/nfs
		echo "MOUNT_PORT=30003" >>/etc/sysconfig/nfs
		echo "STATD_PORT=3004" >>/etc/sysconfig/nfs

防火墙配置

# 添加服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
# (此项非必须)nfsd
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --permanent --add-port=30001/tcp
firewall-cmd --permanent --add-port=30001/udp
firewall-cmd --permanent --add-port=30002/tcp
firewall-cmd --permanent --add-port=30002/udp
firewall-cmd --permanent --add-port=30003/tcp
firewall-cmd --permanent --add-port=30003/udp
firewall-cmd --permanent --add-port=30004/tcp
firewall-cmd --permanent --add-port=30004/udp
firewall-cmd --permanent --add-port=30005/tcp
firewall-cmd --permanent --add-port=30005/udp
# (此项非必须)rpcbind
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udp
# 重新加载防火墙规则
firewall-cmd --reload

客户端

开机自动挂载/etc/fstab配置参数详解

格式:

“分区名” “挂载点” “文件系统类型" "挂载参数” “dump备份配置” “开机磁盘检查顺序”

例如:/dev/sdb1 /mount xfs defaults 0 0

分区名:

如果多个磁盘,每个磁盘被标记为/dev/sda、/dev/sdb等等,每个磁盘的分区则为/dev/sdb1、/dev/sdb2等。

此处除了使用设备接口,还可以使用唯一标识符(UUID),磁盘插拔之后设备接口可能变化,但是唯一标识符是不变的,例如:UUID=62837155-f2ec-45a9-88b8-5b7443fdfca5,查看UUID的命令为blkid。

当然还可以使用设备卷标签(Lable,不常用,需要使用LVM),例如 Label=root

挂载点:

挂载点必须为当前已经存在的目录,如果挂载点的路径中包含空格,需要使用“/040”代替,当然也可以将挂载路径放到引号内

文件系统类型:

常见的有ext2、ext3、ext4、xfs、iso9660(光盘)、ntfs(需要提前yum -y install ntfs-3g)等,此字段必须与分区格式化时的格式相同

也可以使用auto这个特殊的参数,让系统自动侦测目标分区类型,常常用于挂载移动设备

挂载参数:

async / sync:设置磁盘是否以异步方式运行,默认async

auto / noauto:当使用mount -a时,此文件系统是否被挂载,默认auto

rw / ro:该分区是可读写还是只读的形式挂载,如果分享的存储系统是只读,那么这里rw失效,默认rw

exec / noexec:是否在此文件系统中可以“执行”操作,如果是单纯存储数据,则使用noexec比较安全,默认exec

user / users / nouser / owner:是否允许用户使用mount命令来挂载,为了安全,不希望一般用户使用mount。user允许任意用户挂载文件系统,users允许所有users组中的用户挂载文件系统,nouser只能被root用户挂载,owner只允许设备所有者进行挂载,默认为nouser

suid / nosuid:表示该文件系统是否允许suid的存在,如果不是执行文件(二进制可执行文件)存放目录,可以设置为nosuid,默认suid

uquota / gquota:启动文件系统支持用户/用户组磁盘配额模式

noatime / nodiratime / relatime:noatime不更新文件系统上inode访问记录,可以提升性能;nodiratime不更新文件系统上的目录inode访问记录,可以提升性能;实时更新inode access记录,只有记录中的访问时间早于当前访问才会被跟新,可以提升性能。

flush:更频繁的刷新数据,复制对话框或进度条在全部数据写入后才消失。

dev / nodev:是否解析文件系统上的块特殊设备,默认dev

defaults:同时具有以下参数的功能,rw、dev、suid、exec、auto、nouser、async等

dump备份配置:

0代表不备份,1代表要每天进行dump备份,2代表不定期的dump备份操作

开机磁盘检查顺序:

0代表 不检查,1代表最早检查(一般只有根目录才设为1),2也会被检查,但晚于1,其他分区一般设为从2开始或者0

showmount参数解释

-e 显示NFS服务器的共享列表

-a 显示本机挂载的文件资源的情况

-v 显示版本号

yum install -y nfs-utils
# 查看nfs共享目录
showmount -e 6.6.6.103
# 将nfs添加到开机挂载
echo "6.6.6.103:/Data_out/IN /Share/IN/103 nfs defaults 0 0" >>/etc/fstab
mount -a

使用autofs挂载

最优选,防止开机出问题,建议网络挂载均使用autofs

yum -y install autofs
# 主配置文件格式:主挂载目录 子配置文件
echo "/Share/IN /etc/auto.master.d/IN.misc" >> /etc/auto.master
echo "/Share/OUT /etc/auto.master.d/OUT.misc" >> /etc/auto.master
# 子配置文件格式:子挂在目录 挂载文件类型及权限 :设备名称
# 挂载目录:主配置文件中的主挂载目录/子配置文件中的子挂载目录
vim /etc/auto.master.d/IN.misc
    103 -fstype=nfs,rw 6.6.6.103:/Data_out/IN
    104 -fstype=nfs,rw 6.6.6.104:/Data_out/IN
    105 -fstype=nfs,rw 6.6.6.105:/Data_out/IN
    106 -fstype=nfs,rw 6.6.6.106:/Data_out/IN
    107 -fstype=nfs,rw 6.6.6.107:/Data_out/IN
vim /etc/auto.master.d/OUT.misc
    103 -fstype=nfs,rw 6.6.6.103:/Data_out/OUT
    104 -fstype=nfs,rw 6.6.6.104:/Data_out/OUT
    105 -fstype=nfs,rw 6.6.6.105:/Data_out/OUT
    106 -fstype=nfs,rw 6.6.6.106:/Data_out/OUT
    107 -fstype=nfs,rw 6.6.6.107:/Data_out/OUT
systemctl restart autofs