NFS网络文件共享服务部署

NFS网络文件共享服务部署
NFS原理描述
什么事NFS?NFS是Network File System的缩写,它的主要功能是通过网络让不同的机器系统之间可以彼此共享
文件或目录。NFS服务器可以运行NFS客户端将远端NFS服务器的共享目录挂载到本地的NFS客户端中。在本地NFS
客户端机器看来,NFS服务器共享的目录就好像是自己的磁盘分区或者目录一样。
NFS一般用来存储共享视频,图片等静态数据,是当前互联网系统架构中最常见的服务之一。
NFS是网络文件系统,没有固定的端口传输数据,所以他使用rpcbind协议来随机选取端口传输数据。
RPC最重要的功能是记录每个NFS功能所对应的端口号,并且将信息传递给NFS客户端,让客户端可以连接到正确的端口
上去了。RPM服务的固定端口是111端口。
在启动NFS服务之前,首先要启动rpc服务(C5:portmap,C6:rpcbind)。
特别注意:一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行/etc/init.d/nfs reload或exportfs -rv
即可以修改的/etc/exports生效。


开始部署NFS
1、查看Linux系统版本
[zxin10@model ~]$ uname -r
2.6.32-504.el6.x86_64
[zxin10@model ~]$ cat /etc/redhat-release 
CentOS release 6.6 (Final)
2、下载nfs软件包
nfs-utils:NFS主程序
rpcbind:rpcbind程序
查看系统是否安装必要的软件包
[zxin10@model ~]$ rpm -aq nfs-utils rpcbind
nfs-utils-1.2.3-54.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
如果没安装可以使用yum install nfs-utils* rpcbind* -y安装。
3、启动NFS相关服务
注:NFS服务的需要启动NFS服务和RPC服务,客户端只需要启动RPC服务即可。
启动rpcbind服务:
[root@model ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@model ~]# netstat -lntup|grep 111
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1307/rpcbind    
查看rpc服务注册了哪些信息:
[root@model ~]# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
启动nfs服务(服务端):
[root@model ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
4、配置开机自启动
[root@model ~]# chkconfig nfs on
[root@model ~]# chkconfig rpcbind on
[root@model ~]# chkconfig --list |egrep "rpcbind|nfs"|grep 3:on
nfs            0:off 1:off 2:on 3:on 4:on 5:on 6:off
rpcbind        0:off 1:off 2:on 3:on 4:on 5:on 6:off
5、nfs的配置文件/etc/exports
/etc/exports文件配置格式为:
NFS 共享目录 客户端地址1(参数1,参数2 。。。) 客户端地址2(参1,参2)
也可以使用exportfs来添加配置:
语法:       /usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]
 exportfs -o rw,sysnc 192.168.0.0/24:/ex
[root@model ~]# cat /etc/exports 
/home/nfs 192.168.0.0/24(rw,sync) #读写,同步
/home/nfsro 192.168.0.0/24(ro) #只读
/home/squash 192.168.0.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000) #压缩权限,所有人都压缩成2000用户的文件
[root@model ~]# /etc/init.d/nfs reload #重启nfs服务
6、客户端挂载共享目录方法
查看远端有哪些nfs可用:showmount -e IP
[root@model ~]# showmount -e 192.168.0.253
Export list for 192.168.0.253:
/home/squash 192.168.0.0/24
/home/nfsro  192.168.0.0/24
/home/nfs    192.168.0.0/24
客户端挂载远端目录:
[root@machine1 ~]# showmount -e 192.168.0.253
Export list for 192.168.0.253:
/home/squash 192.168.0.0/24
/home/nfsro  192.168.0.0/24
/home/nfs    192.168.0.0/24
[root@machine1 ~]# mount -t nfs 192.168.0.253:/home/nfs /mnt
[root@machine1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             5.6G  3.7G  1.7G  69% /
tmpfs                 936M     0  936M   0% /dev/shm
/dev/sda1             190M   34M  146M  19% /boot
192.168.0.253:/home/nfs
                      5.6G  3.7G  1.7G  69% /mnt
测试:(可以看到nfs挂载成功了)
服务的执行命令:
[root@model nfs]# touch nfsser.txt
[root@model nfs]# ll
total 0
-rw-r--r-- 1 root root 0 Jan 10 22:03 nfsser.txt


客户端执行查看命令:
[root@machine1 ~]# cd /mnt
[root@machine1 mnt]# ls
nfsser.txt
[root@machine1 mnt]# ll
total 0
-rw-r--r-- 1 root root 0 Jan 10 22:03 nfsser.txt


但是在客户端执行创建文件时出现错误:
[root@machine1 mnt]# touch nfscli.txt
touch: cannot touch `nfscli.txt': Permission denied
服务的已经给了rw权限啦,怎么办呢?
因为服务的本地目录的权限不够,需要给更大的授权。
[root@model nfs]# chmod 777 /home/nfs #为了测试方便给了777权限
[root@model nfs]# ll -ld /home/nfs
drwxrwxrwx 2 root root 4096 Jan 10 22:03 /home/nfs
这时在客户端执行创建文件:(可以看到文件创建成功了,但是所有者是nfsnobody)
[root@machine1 mnt]# touch nfscli.txt
[root@machine1 mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 22:11 nfscli.txt
-rw-r--r-- 1 root      root      0 Jan 10 22:03 nfsser.txt


NFS进阶讲解:
NFS配置权限设置
rw read-write,表示可读可写权限
ro read-only,表示只读权限
sysnc,同步--请求或写入数据时,数据同步写入到NFS Server的硬盘后才会返回。
asysnc,异步--请求或写入数据时,先返回请求,再将数据写入到内存缓存和硬盘中。
no_root_squash,访问NFS server共享目录的用户如果是root的话,它对该共享目录具有root权限。
root_squash,对于访问NFS server共享目录的用户如果是root的话,则他的权限将被压缩成匿名用户,同时他的UID和GID
将会变成nobody或nfsnobody
all_squash,不管访问的NFS server共享目录的用户身份如何,他的权限都会被压缩成匿名用户。
anonuid,接上文,指定被压缩的用户的UID值。
anongid,接上文,指定被压缩的用户的GUI值。


如何看到nfs所有参数:
[root@model nfs]# cat /var/lib/nfs/etab 
/home/squash 192.168.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=2000,anongid=2000)
/home/nfsro 192.168.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
/home/nfs 192.168.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
如何自动挂载nfs共享目录。
客户端执行:
[root@machine1 mnt]# echo "mount -t nfs 192.168.0.253:/home/nfs /mnt" >>/etc/rc.d/rc.local
注意:rc.local的权限应该是755。
[root@machine1 mnt]# ls /etc/rc.d/rc.local 
/etc/rc.d/rc.local


如何卸载挂载点:
1、正常卸载:
退出挂载目录,然后卸载。
[root@machine1 /]# cd 
[root@machine1 ~]# umount /mnt
[root@machine1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       5.6G  3.7G  1.7G  69% /
tmpfs           936M     0  936M   0% /dev/shm
/dev/sda1       190M   34M  146M  19% /boot
2、有时因为各种原因,比如程序占用等,会出现卸载不成功的问题。
可以强制卸载:umount -lf (挺有用的参数,lf要一起用)
[root@machine1 mnt]# umount /mnt
umount.nfs: /mnt: device is busy
umount.nfs: /mnt: device is busy
[root@machine1 mnt]# umount -lf /mnt
[root@machine1 mnt]# cd 
[root@machine1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       5.6G  3.7G  1.7G  69% /
tmpfs           936M     0  936M   0% /dev/shm

/dev/sda1       190M   34M  146M  19% /boot

NFS进阶篇:http://mp.blog.csdn.net/postedit/79038839

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值