一、前期准备
网络文件系统(Network File System,NFS),一种使用于分散式文件系统的协议,由 sun 公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在Unix系统间实现磁盘文件共享的一种方法。
NFS的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享
---------------------------
主要配置文件:/etc/exports
系统并没有默认值,所以这个文件『 不一定会存在』,你能要手动建立起这个档案!
NFS 文件系统维护指令:/usr/sbin/exportfs
维护 NFS 分享资源的命令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸载或重新分享等等。
分享资源的登录档:/var/lib/nfs/*tab
在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的文件,一个是 etab ,记录NFS分享出来的目录的完整权限设定值;另一个 xtab 记录曾经登录过的客户端信息。
客户端查询服务器分享资源的指令:/usr/sbin/showmount
很重要的 NFS 命令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。用来察看 NFS 分享出来的目录资源!
==============================================================
二、安装 NFS
系统环境:CentOS release 6.4 x64,Kernel 2.6.32-358.el6.x86_64
NFS 需要 RPC 服务,因此需要安装 rpcbind 包
在 server 端和 client 端都要安装 nfs-utils 包
[root@server ~]# yum install -y nfs-utils rpcbind
==============================================================
三、配置 NFS
至于 NFS 服务器的架设实在很简单,你只要编辑好主要配置文件 /etc/exports 之后,先启动 rpcbind (若已经启动了,就不要重新启动),然后再启动 nfs ,就ok了。
[root@server ~]# vi /etc/exports
/folder 192.168.100.0/24(ro) localhost(rw) *.dl.cn(ro,sync)
[分享目录] [第一部主机(权限)] [可以用主机名] [也可以用通配符]
#每一行最前面是要分享出来的目录,然后这个目录可以依照不同的权限分享给不同的主机。
#这个例子是:要将 /folder 分别分享给三个不同的主机或网域的意思。主机后面以小括号 () 设计权限参数,若权限参数不止一个时,则以逗号 (,) 分开。且主机名与小括号是连在一起的!
#192.168.100.0网段内的机器是read-only权限,localhost是read-write权限,*.dl.cn是read-only和sync权限
---------------------------
实例一:开放匿名登录的情况
我要让 *.dl.cn 网域的主机,登入我的 NFS 主机时,可以存取 /home/linux ,但是他们存数据的时候,我希望他们的 UID 与 GID 都变成 45 这个身份的使用者,假设我 NFS 服务器上的 UID 45 与 GID 45 的用户组名为 nfsanon。
[root@server ~]# groupadd -g 45 nfsanon
[root@server ~]# useradd -u 45 -g nfsanon nfsanon
[root@server ~]# mkdir /home/linux
[root@server ~]# setfacl -m u:nfsanon:rwx /home/linux
[root@server ~]# vi /etc/exports
/tmp *(rw,no_root_squash)
/home/public 192.168.80.0/24(rw) *(ro)
/home/linux *.centos.vbird(rw,all_squash,anonuid=45,anongid=45)
# 如果要开放匿名,那么重点是 all_squash,并且要配合 anonuid !
特别注意到那个 all_squash 与 anonuid, anongid 的功能!如此一来,当 client.dl.cn 登入这部 NFS 主机,并且在 /home/linux 写入档案时,该档案的所有人与所有群组,就会变成 /etc/passwd 里面对应的 UID 为 45 的那个身份的使用者了!
==============================================================
四、启动NFS & 常用命令
4.1 启动NFS
[root@www ~]# /etc/init.d/rpcbind start
[root@www ~]# /etc/init.d/nfs start
[root@www ~]# chkconfig rpcbind on
[root@www ~]# chkconfig nfs on
---------------------------
4.2 检查 nfs 状况
在 nfs server端执行
[root@server ~]# rpcinfo -t localhost nfs #或者 rpcinfo -p
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting
[root@server ~]# cat /var/lib/nfs/etab #显示全部包括预设的参数
/nishome 192.168.80.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
[root@server ~]# exportfs -v
/nishome 192.168.80.0/24(rw,wdelay,root_squash,no_subtree_check)
在client端执行
[nisuser1@client ~]$ showmount -e 192.168.80.129 #查看 server 端都开了哪些挂载点
Export list for 192.168.80.129:
/nishome 192.168.80.0/24
---------------------------
4.3 修改exports文件不需要重启 nfs 和 rpcbind,执行以下命令即可。
[root@server ~]# exportfs [-aruv]
选项与参数:
-a :全部挂载(或卸除) /etc/exports 档案内的设定
-r :重新挂载 /etc/exports 里面的设定,此外,亦同步更新 /etc/exports及 /var/lib/nfs/xtab 的内容!
-u :卸除某一目录
-v :在 export 的时候,将分享的目录显示到屏幕上!
# 1. 将已经分享的 NFS 目录资源,通通都卸除。
#client端已经挂载好的目录仍然可以看到,但是却不能进入,提示bash: cd: /nishome: Stale file handle
[root@server ~]# exportfs -auv
# 这时如果你再使用 showmount -e localhost 就会看不到任何资源了!
# 2. 重新挂载一次 /etc/exports 的设定。client端已经挂载好的目录可以直接进入,无需重新挂载
[root@server nfs]# exportfs -arv
exporting 192.168.80.0/24:/tmp
exporting 192.168.80.0/24:/nishome
============值得注意的一些点==================================================
1) 使用all_squash参数时,加入anonuid和anongid,如anonuid=550,anongid=550(NFS服务器上需要有这个用户),1)在client上如果没有这个UID和用户,则挂载nfs以后,读写文件的用户会变成nobody;2)client上有这个UID,但是用户名和NFS服务器上的不一样,读写文件的用户也会变成nobody;3)client和NFS上的UID及用户名都一样,读写文件的用户会变成UID为550的指定用户。
阅读(1055) | 评论(0) | 转发(0) |