共享不同的两个目录,分别赋予读和写权限
准备三台虚拟服务器(backup(备份服务器)、NFS(共享服务器服务端)web01(web服务器))
nfs服务器172.16.1.31 共享下面两个目录
/test/w 要求的权限可读写,同步数据,所有的用户都压缩为匿名用户
/test/r 要求的权限为只读,同步数据,所有的用户都压缩为匿名用户
backup服务器 把nfs服务器的/test/r 挂载到/test/r
web服务器 把nfs服务器的/test/w 挂载到/test/w
第一步:编写配置文件
第二步:创建新增共享目录,创建共享目录用户组(所有人即为nfsnobody)

因共享目录为所有用户所有为nfsnobody
第三步:平滑重启nfs服务

/etc/init.d/nfs reload (平滑重启不影响用户体验)

把共享文件目录/test/r挂载到backup服务器的/test/r

把共享文件目录/test/w挂载到wen01服务器的/test/w
如果挂载点已经挂载,卸载重新挂载
强制卸载 umount -lf /mnt 是挂载点

因backup服务器再共享目录里面设置了只读所以不能创建文件目录

因web01服务器再共享目录里面设置可读写,所以可以创建文件目录
注意:nfs配置文件中,配置的共享目录,不要有父目录与子目录的继承关系
存储服务器部署后--客户端访问服务端原理
rw 对共享目录有读写权限
ro 对共享目录有只读权限
sync 实时同步数据,写入磁盘
优点:数据安全不会丢
缺点:性能比不启用该参数要差
async 异步同步数据,写入内存,磁盘IO消耗不高时,再讲内存数据写入磁盘
no_root_squash root用户不进行映射压缩
root_squash root用户进行映射压缩
all_squash 所有用户进行映射压缩
no_all_squash 所有用户都不进行映射压缩,原有什么用户身份到达nfs服务端还是什么身份
anonuid 修改默认匿名用户信息为指定UID用户(默认匿名用户时nfsnobody)
anongid 修改默认匿名用户信息为指定GID用户(默认匿名用户时nfsnobody)
- 例:root_squash,no_all_squash参数说明
服务端修改配置文件
[root@nfs01 ~]# vim /etc/exports
/mnt 172.16.1.0/24(rw,sync,root_squash,no_all_squash)
[root@nfs01 ~]# /etc/init.d/nfs reload
客户端root用户在/mnt下创建文件
[root@backup mnt]# touch 666.txt
服务端
[root@nfs01 ~]# ll /data/
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 0 Nov 30 12:35 666.txt
客户端test用户在/mnt下创建文件
[root@backup mnt]# su - test
[test@backup ~]$ cd /mnt/
[test@backup mnt]$ touch 555.txt
touch: cannot touch `555.txt': Permission denied 没有权限
实践操作配置;修改NFS默认映射用户(nfsnobody---www)
第一步:创建映射用户(服务端与客户端都创建,并且gid和uid保持一致)
客户端和服务端创建用户www
[root@nfs ~]# useradd -u 666 www
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)
[root@web01 ~]# useradd -u 666 www
[root@web01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)
第二步:服务端进行nfs文件配置
[root@nfs01 ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666)
vim /etc/exports
重启 /etc/init.d/nfs reload
第四步:/data目录更改权限 www www
[root@nfs01 ~]# chown -R www.www /data
[root@nfs01 ~]# ll -d /data/
drwxr-xr-x 2 www www 4096 Dec 1 09:34 /data/
客户端重新挂载 umount卸载
第五步:客户端进行测试
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# touch /data/oldboy.txt
[root@web01 ~]# ll /data/
total 0
-rw-r--r-- 1 www www 0 Dec 1 09:50 oldboy.txt
NFS客户端权限与三个因素有关
1、NFS服务器/etc/exports设置需要开放可写入的权限,即服务器端的共享权限。
2、NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务器端本地目录的安全权限。
3、每台机器对应存在和NFS默认配置UID的相同UID 65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖NFS的默认用户配置)
挂载mount命令总结
mount [-fnrsvw] [-t vfstype] [-o options] device dir
命令 参数 文件类型 有关权限参数 设备 挂载点
-l lazy umount 懒惰卸载,不退出卸载目录可直接卸载
-t force mount 强制卸载
将挂载命令放入到/etc/rc.local中
echo 'mount -t nfs 172.16.1.31:/data /mnt' >> /etc/rc.local
编写配置/etc/fstab文件
[root@web01 ~]# vim /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
172.16.1.31:/data /data/w nfs defaults 0 0
挂载的设备 挂载点 类型 挂载参数 是否备份 是否检查
客户端挂载可能会遇到的问题
- errno 113 (No route to host)
[root@nfs-client1 ~]# showmount -e 10.0.0.7 <- 这里遇到了故障
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
问题说明:
nfs服务端防火墙没有关闭,防火墙策略阻止掉了
- clnt_create: RPC: Program not registered
[root@nfs-client1 ~]# showmount -e 10.0.0.7
clnt_create: RPC: Program not registered
问题说明:
nfs服务没有启动,只启动了rpcbind服务
- errno 111 (Connection refused)
[root@nfs01 data]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
[FAILED]
Starting NFS mountd: [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
[FAILED]
问题说明:
nfs与rpcbind服务启动顺序不正确,rpcbind服务没有启动,先启动了nfs服务
- 客户端挂载报错“No such file or directory”
[root@nfs-client ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: mounting 172.16.1.31:/data failed, reason given by server: No such file or directory
解答:原因是NFS服务器端没有共享目录/data,创建即可。命令如下:
[root@nfs-server ~]# mkdir /data
[root@nfs-client mnt]# umount /mnt
umount.nfs: /mnt: device is busy
umount.nfs: /mnt: device is busy
问题解决:
umount -lf /mnt
示例5:CentOS 6.6客户端NFS挂载时遇到问题。
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount:wrong fs type,bad option,bad option,bad superblock on 10.0.0.7:/data,
missing codepage or helper program,or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program )
In some cases useful info is found in syslog - try
meg | tail or so
问题说明:
客户端没有安装nfs-utils软件包,无法识别nfs文件系统类型
mount -t nfs 172.16.1.31:/data /mnt
cd /mnt
time touch test.txt
原因分析:
�8�5 NFS服务端重启之后。立刻进行挂载会出现此问题,因为NFS自身重启的时候,拥有无敌的时间,默认是90秒;在无敌时间内,是不能对共享目录进行更改的操作;
�8�5 在系统配置中/etc/sysconfig/nfs中指定了无敌时间的配置参数
NFSD_V4_GRACE=90
NFSD_V4_LEASE=90
NLM_GRACE_PERI0D=90
mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: Stale file handle
问题原因:
挂载点目录已经在挂载中,一定要卸载后,才能进行重新挂载
来自于:ke.ke 感谢大家支持······