NFS网络文件系统搭建
1. 简介 NFS, 就是network file system的简称。 可以通过NFS, 来共享不同主机的文件、目录。 2010年,NFS已经发展到v4.1版本。 2. 应用场景 在中小型企业中,NFS使用很广泛。 用来存储共享视频、图片等资源。 大型企业常常使用MFS, CTFS, TFS等等分布式文件系统。 在中小企业的应用场景: 在集群中的使用。 3. NFS基本架构 NFS服务器,任意多个客户端 4. 企业集群中,为什么要使用“数据共享" 如果不使用数据共享,数据就存储在不同的服务器中。 NFS在中小企业中,可以很方便的实现数据共享。 5. NFS和RPC NFS服务中,包含多个子功能。 每个子功能,就是一个进程。 而每个进程,就要使用1个“端口号” 补充:为什么要使用端口号? 端口号“相当与”总机的分机号 NFS服务,要使用多个端口号 而且,这些端口号是动态分配的。 而客户端连接服务器,必须知道对应的端口号! 如何解决这个问题? 使用RPC服务 RPC服务 RPC, 是1个“中介” 补充: 查看当前主机名 # hostname 搭建NFS服务 1. 安装NFS服务 1) nfs服务需要安装什么软件? (1)nfs-utils NFS服务主程序 (2) 对于CentOS5.x版本(或Redhat5.x版本),就需要安装 portmap 对于centOS6.x版本 (后Redhat6.x版本),就需要安装 rpcbind 补充:查看CentOS的版本号, cat /etc/redhat-release 补充:在NFS服务器中,安装NFS服务,以及RPC服务 在客户端,只需要安装RPC服务 2) 查看是否已经安装了这些软件 # rpm -aq nfs-utils portmap rpcbind 检查当前系统是否已经安装所指定的软件 如果已经安装,就会显示已经安装的包,比如: nfs-utils-1.2.3-39.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 3)如果没有安装,就安装 方法1: # yum install nfs-utils rpcbind -y 补充: -y表示在安装过程中,就不许要在输入确认。 方法2: 使用"组包“安装 yum groupinstall "NFS file server" -y 安装后,检查是否已经安装成功。 rpm -aq nfs-utils portmap rpcbind 2. 启动RPC服务 可以先检查RPC服务是否已经启动。 /etc/init.d/rpcbind status 补充:建议把终端设置为英文。 # LANG=en 没有没有启动,就启动: /etc/init.d/rpcbind start 启动后,检查是否已经启动成功 /etc/init.d/rpcbind status 补充:需要在服务器和客户端都启动RPC服务。 补充:RPC服务启动后,就可以查看已经注册了哪些端口 # rpcinfo -p localhost 注意,111端口是rpc服务自己使用的端口 3. 启动NFS服务 1)检查NFS服务是否已经启动 # /etc/init.d/nfs status 2) 启动NFS服务 # /etc/init.d/nfs start 3)再检查NFS服务是否已经启动 /etc/init.d/nfs start 补充:可以检查nfs的端口号是否已经注册 # rpcinfo -p localhost | grep nfs 4. 设置NFS和RPC服务为“开机自动启动” # chkconfig nfs on # chkconfig rpcbind on 5. 配置NFS服务 就是配置服务器的哪个目录可以共享 以及谁可以共享 共享的权限 修改/etc/exports (NFS的主配置文件) 例如: /data 192.168.0.0/24(rw,sync) 第1列,是服务器共享的目录 第2列 表示哪些客户端可以使用这个NFS服务,以及权限。 IP地址的最后1位为0,就表示指定的网段都可以使用该NFS服务 /24表示子网掩码是最前面的24位(即255.255.255.0) rw, 表示可读可写 sync,同步,服务器把数据写入磁盘完成之后,客户端的操作才结束。 async,异步,服务器把数据写入缓存之后,客户端的操作就结束。 6. 重启NFS服务(以使配置生效) /etc/init.d/nfs reload 注意:使用reload,“平滑重启” 重启服务后,检查配置是否生效 1)先在服务器端检查 # showmount -e localhost 该命令就是检查nfs服务的输出清单。 如果检查失败,那就说明服务器端的配置失败了,需要检查配置文件。 2)在客户端检查服务器端的配置 # showmount -e 192.168.0. 如果检查失败,就 1)首先用ping检查网络是否连通 2) 然后检查防火墙 7. 挂载 在客户端,使用mount命令。 例如: mount -t nfs 192.168.0.143:/data /mnt 说明: 192.168.0.143表示服务器的ip地址 /data表示服务器的nfs配置的共享目录 /mnt表示把指定的服务器的共享目录”挂”到/mnt目录下! 8. 开机自动挂载 /etc/rc.local 该文件在系统启动后将自动运行。 # echo "mount -t nfs 192.168.0.143:/root/Desktop/note /note" >> /etc/rc.local 9. 卸载 umount 挂载点 比如: umount /note 10. NFS服务的功能组件 NFS服务,包含很多子功能, 每个子功能,由1个进程实现。 可如下方式查看: # ps -ef | grep -E "rpc|nfs" ps -ef表示查看当前系统运行的所有进程。 | 是管道,表示把前面一条命令的输出作为后面命令的输入。 grep -E 按照“正则表达式”来查找。 "rpc|nfs"表示查找 rpc或者nfs rpcbind 就是rpc服务 rpc.rquotad : 用于磁盘配额 nfsd nfs服务的主进程。 rpc.mountd 权限管理进程。 1) 先检查客服端对该共享目录的权限(由/etc/exports指定) 2)再检查服务器的这个共享目录在本地的权限。 rpc.statd 用来检查文件的一致性 11. NFS的配置文件、常用命令 1) /etc/exports 2) /usr/sbin/exportfs NFS服务的管理命令 exportfs -rv 等效于: /etc/init.d/nfs reload 3) showmount 该命令就是检查nfs服务的输出清单。 4) NFS的默认配置 /var/lib/nfs/etab 5) NFS配置文件中的参数 rw 可读写 ro 只读 sync 同步 async 异步 客户端访问 NFS共享目录时的权限: 1. root_squash, 把root用户映射为匿名用户(anonymous) 2. no_root_squash , root用户连接进来时,仍具有root权限 一般用在无盘工作站 3. all_squash 把所有用户都映射为匿名用户 一般用于共用目录。 4. anonuid=xxx anongid=xxx 指定NFS服务器的/etc/passwd晚间中匿名用户的uid 5. no_all_squash 不映射,保留共享目录的uid和gid