NFS文件共享服务器

        NFS是network file sytem的缩写,他最大的特点就是可以通过网络,让不同的机器,不同的系统实现文件共享。NFS客户端可以将NFS服务器共享的目录挂载在本地的文件系统中,访问目录就如同访问自己本地目录一样。

NFS工作原理:

1. 首先NFS服务器端开启rpcbind;
2. 然后服务端开启NFS服务,这时NFS的各项功能都需要向RPC服务注册,这时rpc会通知portmap模块将可用的端口分配给statd,rquotad等;
3. 然后NFS客户端RPC服务就会通过网络向NFS服务端的RPC服务的111端口发出NFS文件存取功能的询问请求。
4. NFS服务端的RPC服务找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务。
5. 此时NFS客户端就可获取到nfs服务端各个进程的正确端口,然后通过客户端rpc就直接与NFS服务器的rpc进行存取数据了(rpc知道了nfs的具体端口,就可以实现远程调用,即传输)。

NFS安装部署:  

  • nfs服务端:192.178.2.100
  • nfs客户端:192.178.2.101

服务器和客户端都关闭防火墙,装好nfs服务组件:

配置网络源

# 安装阿里云的yum源:
cd /etc/yum.repos.d/
mkdir bak && mv *.repo bak/
wget -O  /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
yum install epel-release -y

关闭防火墙:

systemctl stop firewalld && systemctl disable firewalld

 临时关闭selinux:

setenforce 0

永久关闭selinux:

sed -i 's/=enforcing/=disabled/' /etc/selinux/config

安装nfs服务组件:

yum -y install nfs-utils

 配置服务端:

  • 编辑/etc/exports文件
[root@node01 ~]# vim /etc/exports
/data/nfs   192.178.2.0/24(rw,sync)

# 格式:
# /data/jfedu   要共享的目录,需要存在
# 192.168.75.0/24   谁能挂载使用,可以是网段,也可以指定具体ip
# (rw,sync)         挂载的一些参数,rw表示挂载为可读可写,sync表示同步

  • 创建/data/nfs文件夹
[root@node01 ~]# mkdir -p /data/nfs
  • 导出(广播)编辑的文件,并启动rpc和nfs服务
systemctl start rpcbind
systemctl start nfs
exportfs -r

配置客户端:  

可用showmount搜索网络中可用的共享文件

[root@nade02 ~]# showmount -e 192.178.2.100
Export list for 192.178.2.100:
/data/nfs 192.178.2.0/24

创建目录,用于挂载

[root@nade02 ~]# mkdir /mnt/nfs

挂载

[root@nade02 ~]# mount -t nfs 192.178.2.100:/data/nfs /mnt/nfs/
[root@nade02 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.7M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.9G   16G  11% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
192.178.2.100:/data/nfs   17G  2.0G   16G  12% /mnt/nfs

#推荐使用:
mount -t nfs -o soft,timeo=1   192.178.2.100:/data/nfs  /mnt/nfs

soft:  软挂载,遇到报错会终止挂载,并返回信息,默认是硬挂载,一直尝试挂载。
timeo:  超时时间,如果不设置,一直链接,可以设置小点

挂载完成之后,进入目录,可能会发现无法对目录中的文件进行修改。
这主要是因为客户端访问服务器时,身份被压缩成nobody,相对服务器文件系统来说,就是其他用户。
所以要想编辑,需要在服务端对文件授权或者更改exports文件,设置no_root_squash(不压缩客户端root身份)。

  •  解读exports文件:
[root@node01 ~]# exportfs -v
/data/nfs       192.178.2.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

其中:
rw:可读可写
ro:仅可读
sync:是指数据同步写入内存和磁盘
root_squash:如果客户端用root身份访问,则被压缩成nobody,权限也将受到限制。
no_root_squash:也就是不压缩,客户端使用root身份登录,全有所有权限,很危险。
all_squash:不管访问者是什么身份,包括root,全部压缩至匿名用户。
no_all_squash:保留访问用户的身份uid以及gid,一般只能查看,不能修改,权限问题,但是可以强制保存。

报错处理:

客户端挂载时报错bad superblock:

[root@node2 ~]# mount 192.178.2.100:/data/nfs /mnt
mount: wrong fs type, bad option, bad superblock on 192.178.2.100:/data/nfs,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)

解决办法:

yum  install nfs-utils -y

客户端挂载时报错access denied:

[root@node2 ~]# mount 192.178.2.100:/data/vfs /mnt
mount.nfs: access denied by server while mounting 192.178.2.100:/data/nfs
ps: 客户端IP不在/etc/exports文件中,会报此错。

 卸载时报错:

umount.nfs4: /data/nfs: device is busy
# 解决办法:
umount -l /data/nfs   强行解除挂载
或者使用
fuser -m /data/nfs 将会显示使用这个模块的pid
fuser -mk /data/nfs 将会直接kill那个pid

nfs自动挂载技术:  

        autofs服务程序与mount命令不同之处在于它是一种守护进程,只有检测到用户试图访问一个尚未挂载的文件系统时才自动的检测并挂载该文件系统。
autofs非常方便,主要有两点:

1、设置开机不一定要挂载的目录,当用的时候才实现自动挂载。
2、用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟),可以在autofs.conf

安装autofs服务:

# 在客户端执行以下命令:
yum install autofs -y

编辑/etc/auto.master:

# 添加以下行:
/mnt/nfs /etc/nfs.misc
/mnt/nfs是总的访问目录(客户端的目录) /etc/nfs.misc是对总访问目录的描述,用于子目录的编辑,用户权限分离

编辑nfs.misc:

xiaoming   -fstype=nfs,rw,sync    192.178.2.100:/data/nfs
xiaowang   -fstype=nfs,ro,sync    192.178.2.100:/data/nfs

启动auofs服务:

systemctl start autofs

验证权限:

## 登录不同目录验证权限:
[root@node4 nfs]# ls
[root@node4 nfs]# 
[root@node4 nfs]# 
[root@node4 nfs]# cd xiaoming
[root@node4 xiaoming]# df
Filesystem                 1K-blocks    Used Available Use% Mounted on
/dev/sda3                   19923968 1986528  17937440  10% /
devtmpfs                      231980       0    231980   0% /dev
tmpfs                         241808       0    241808   0% /dev/shm
tmpfs                         241808    4636    237172   2% /run
tmpfs                         241808       0    241808   0% /sys/fs/cgroup
/dev/sda1                     508580  114484    394096  23% /boot
tmpfs                          48364       0     48364   0% /run/user/0
192.178.2.100:/data/nfs   20128768 2021376  18107392  11% /mnt/nfs/xiaoming

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值