nfs部署和优化

回复 收藏
nfs == network file system

1.nfs安装
服务端安装:
[root@kry132 ~]# yum -y install rpcbind nfs-utils
rpcbind:用于通信
nfs-utils:nfs程序
客户端安装:
[root@Kry135 ~]# yum -y install nfs-utils



2.创建一个共享目录(服务端)
[root@kry132 ~]# mkdir  /data/nfsdata
[root@kry132 ~]# chmod 777 /data/nfsdata/

创建一个测试文件:
[root@kry132 ~]# touch /data/nfsdata/nfstest


3.共享目录配置(服务端)
编辑配置文件:
[root@kry132 ~]# vim /etc/exports

添加以下内容:
/data/nfsdata 192.168.0.135(rw,sync)
/data/nfsdata:共享目录

192.168.0.135:共享给那个,可以写成网段192.168.0.0/24

参数值
内容说明
rw
ro
该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。
sync
async
sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
no_root_squash
root_squash
客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
all_squash
不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦!
anonuid
anongid
anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。


4.启动相关服务(服务端)
[root@kry132 ~]# /etc/init.d/rpcbind start
[root@kry132 ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                     [  OK  ]
Starting NFS daemon:                                     [  OK  ]
Starting RPC idmapd:


5.查看共享目录,共享给谁(客户端)
[root@Kry135 ~]# showmount -e 192.168.0.132
Export list for 192.168.0.132:
/data/nfsdata 192.168.0.135


如果报错:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
请关闭防火墙,或者配置防火墙规则。




6.挂载(客户端)
[root@Kry135 ~]# mount -t nfs 192.168.0.132:/data/nfsdata /data


7.查看磁盘(客户端)
是同df -h查看
[root@Kry135 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              20G  2.4G   16G  13% /
tmpfs                 495M     0  495M   0% /dev/shm
/dev/sda1             190M   27M  153M  15% /boot
192.168.0.132:/data/nfsdata
                      9.5G  583M  8.5G   7% /data


使用mount -l 查看挂载情况
[root@Kry135 ~]# mount -l|grep /data
192.168.0.132:/data/nfsdata on /data type nfs (rw,vers=4,addr=192.168.0.132,clientaddr=192.168.0.135)


8.测试
[root@Kry135 ~]# echo 123 >> /data/nfs2

[root@kry132 ~]# cat /data/nfsdata/nfs2
123




情景:由于nfs默认的用户跟群组是"nfsnobody",如果nfs server 共享目录不具有777权限,客户端通过一般用户写入数据,那么就出出现无权限。但是我们又不可能开放服务端共享目录777,这样不安全,就需要修改用户跟群组。
9.修改nfs默认用户群主(服务端)
[root@kry132 ~]# vim /etc/exports
添加红色部分内容:
/data/nfsdata 192.168.0.135(rw,sync,all_squash,anonuid=48,anongid=48)




all_squash:表示禁用左右登录者

anonuid:指定客户端存在用户UID
anongid:指定客户端存在的群组GID


重启:
[root@kry132 ~]# service nfs restart

也可使用:
[root@kry132 ~]# exportfs -arv



10.重新挂载(客户端)

[root@Kry135 ~]# umount /data

[root@Kry135 ~]# mount -t nfs 192.168.0.132:/data/nfsdata /data

如果在客户端写入东西太慢,那么在挂载的时候就降低nfs版本
mount -t nfs -onolock,nfsvers=3 192.168.0.132:/data/nfsdata /data

nfsvers=3:指定版本为3




11.测试(客户端)
[root@Kry135 ~]# cd /data/
[root@Kry135 data]# touch 22.txt   #创建一个文件查看所属主,跟所属群组
[root@Kry135 data]# ll
total 8
-rw-r--r--. 1 apache    apache    0 Jun 28 14:12 22.txt      #所属主跟所属群组都是apache
-rw-r--r--. 1 nfsnobody nfsnobody 4 Jun 28 10:53 nfs2
-rw-r--r--. 1 nfsnobody nfsnobody 2 Jun 28 10:52 nfstest

对比用户
[root@Kry135 data]# cat /etc/passwd |grep 48
apache:x:48:48:Apache:/var/www:/sbin/nologin



补充内容:
不限制root用户
[root@kry132 ~]# vim /etc/exports
添加红色部分内容:
/data/nfsdata 192.168.0.135(rw,sync,no_root_squash)





2016-06-28 14:31 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: