NFS服务

1. nfs介绍

1.1nfs:网络文件系统(NFS)协议是由Sun MicroSystem在20世纪80年代为了提供对共享文件的远程访问而设计和实现的。该协议采用Client/Server模型, 通过使用Sun开发的远程过程调用协议(RPC Protocol)来实现运行在一台计算机上的程序来调用在另一台远程机器上运行的子程序.

1.2 NFS包含3个版本:NFSv2、NFSv3、NFSv4

CentOS6是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接,而老版本的NFS可以在TCP协议或者是UDP协议上运行。

1.3 工作原理:

1)客户端首先会向nfs服务器的RPC(端口111)发出NFS文件存取的询问请求

2)服务器找到对应的已经注册的NFS守护进程的端口后会回报给客户端

3)客户端收到正确的端口之后,直接与NFS守护进程来联机通信

所以,根据工作原理可知,NFS服务器依赖RPC机制,所以,在启动nfs服务的时候需要先启动rpcbind服务,然后NFS在启动的时候会向RPC注册自己的端口号。同时,客户端连接NFS服务器的时候也用的是NFS服务,所以也需要启动rpcbind服务

2.安装及配置NFS服务器

2.1了解NFS网络文件的系统结构

/etc/exports   这是NFS的主配置文件,不过系统没有默认值,需要自己创建

/usr/sbin/exportfs  这是维护NFS共享的命令,当修改了NFS的配置文件之后,用此命令可以不重启nfs服务即可刷新

/usr/sbin/showmount  主要用于客户端,用来查看NFS服务器共享的目录

/var/lib/nfs/*tab  存放NFS服务器的登录文件。其中:etab主要记录了NFS共享出来的目录的完整权限设定值;xtab 记录曾经连接到此的NFS主机的相关客户端数据

2.2安装nfs服务

1)Nfs由nfs-utils软件包提供,但是在安装nfs-utils时候,需要同时安装rpcbind

[[email protected]~]# yum install nfs-utils rpcbind -y

2)配置/etc/exports文件

格式:共享目录  允许连接的客户机(选项)

例如:

[[email protected]~]# cat /etc/exports

/share192.168.254.0/24(rw,no_root_squash)

注意

共享的目录的路径必须是绝对路径,不能使用符号链接

设置客户端访问的时需要遵循下面格式

客户端指定方式 示例
使用IP地址指定单一主机 10.20.30.40
使用IP地址指定范围主机 172.16.0.0/16
使用IP地址指定范围主机 192.168.1.*
使用域名指定单一主机 Test.ice.apple
使用域名指定范围主机 *.ice.apple
使用通配符指定所有主机 *

设置“选项”中一些常见的选项

参数 说明
ro 设置共享权限为只读
rw 设置共享权限为读写
root_squash 当使用NFS服务器共享目录的使用者是root时,将被映射为匿名账号。即:NFS 主机使用共享目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份
no_root_squash 当使用NFS服务器共享目录的使用者是root时,将不被映射为匿名账号。即:NFS 主机使用共享目录的使用者,如果是 root 的话,那么对于这个共享的目录来说,他就具有 root 的权限!这个项目极不安全,不建议使用!
all_squash 将所有使用NFS服务器共享目录的使用者都映射为匿名账号
anonuid 设置匿名账号的UID
anongid 设置匿名账号的GID
sync 保持数据同步,也就是将数据同步写入内存和硬盘。这可能导致效率降低
async 数据会先暂存内存中,而不直接写入硬盘

3)以上面为例,设置好之后,启动NFS服务

[[email protected] ~]# servicerpcbind start

Starting rpcbind:                                         [  OK  ]

[[email protected] ~]# servicenfs start

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [ OK  ]

注意必须是先启动rpcbind再启动nfs。否则会报错,nfs无法启动过

[[email protected] ~]# service rpcbindstop

Stopping rpcbind:                                         [  OK  ]

[[email protected] ~]# service nfs restart

Shutting down NFS daemon:                                  [  OK  ]

Shutting down NFS mountd:                                  [  OK  ]

Shutting down NFS quotas:                                  [  OK  ]

Shutting down NFS services:                                [ OK  ]

Starting NFS services:                                     [  OK  ]

Starting NFS quotas: Cannot registerservice: 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 fdto kernel failed: errno 111 (Connection refused)

rpc.nfsd: unable to set any sockets for nfsd

[FAILED]

4)在客户机上只需要安装nfs-utils即可,否则无法查看和挂载

[[email protected] ~]# yum install nfs-utils–y

[[email protected] ~]# showmount -e192.168.254.20

Export list for 192.168.254.20:

/share 192.168.254.0/24

[[email protected] ~]# mount -t nfs192.168.254.20:/share /fuzj/

此时,客户端已经能正常使用挂载过来的共享目录,其中的权限问题可以根据实际要求进行设置。

但是,本次的挂载重启之后就失效了,需要设置开机自动挂载:

[[email protected] ~]# echo"192.168.254.20:/share /fuzj nfs defaults 0 0" >> /etc/fstab

[[email protected] ~]# tail -1 /etc/fstab

192.168.254.20:/share /fuzj nfs defaults 00

或者写入开机启动脚本中

[[email protected] ~]# echo "mount -tnfs 192.168.254.20:/share /fuzj/" >> /etc/rc.local

[[email protected] ~]# tail -1 /etc/rc.local

mount -t nfs 192.168.254.20:/share /fuzj/

5)Exportfs的用法:

exportfs命令:用于维护当前主机中NFS服务器的输出目录列表

exportfs –rv使NFS服务器重新读取exports文件的设置,而不需重启NFS服务器

exportfs –auv 用于停止当前主机中NFS服务器的所有目录输出

exportfs –av 用于输出NFS服务器的所有共享目录

exportfs –v 显示输出列表同时,显示导出的设定参数

6) Mount挂载的用法:

命令格式:mount [-t vfstype][-o options] device dir

-t  vfstype指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
  光盘或光盘镜像:iso9660
  DOS fat16文件系统:msdos
  Windows 9x fat32文件系统:vfat
  Windows NT ntfs文件系统:ntfs
  Mount Windows文件网络共享:smbfs
  UNIX(LINUX) 文件网络共享:nfs

-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集

device 要挂接(mount)的设备。

dir设备在系统上的挂接点(mount point)。

6)NFS服务的端口

NFS 用到的服务有 portmapper,nfs,rquotad,nlockmgr,mountd 通过命令 rpcinfo -p 可查看nfs使用的端口:

[[email protected] ~]# 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

100011    1   udp   875  rquotad

100011    2   udp   875  rquotad

100011    1   tcp   875  rquotad

100011    2   tcp   875  rquotad

100005    1   udp 56539  mountd

100005    1   tcp 53349  mountd

100005    2   udp 53899  mountd

100005    2   tcp 59989  mountd

100005    3   udp 47966  mountd

100005    3   tcp 55849  mountd

100003    2   tcp  2049  nfs

100003    3   tcp  2049  nfs

100003    4   tcp  2049  nfs

100227    2   tcp   2049 nfs_acl

100227    3   tcp  2049  nfs_acl

100003    2   udp  2049  nfs

100003    3   udp  2049  nfs

100003    4   udp  2049  nfs

100227    2   udp  2049  nfs_acl

100227    3   udp  2049  nfs_acl

100021    1   udp 47039  nlockmgr

100021    3   udp 47039  nlockmgr

100021    4   udp 47039  nlockmgr

100021    1   tcp 35091  nlockmgr

100021    3   tcp 35091  nlockmgr

100021    4  tcp  35091  nlockmgr

其中 portmapper,nfs 服务端口是固定的分别是 111和2049;

另外 rquotad,nlockmgr,mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置

这时需要配置/etc/sysconfig/nfs 使 rquotad,nlockmgr,mountd的端口固定。

RQUOTAD_PORT=800

LOCKD_TCPPORT=30000

LOCKD_UDPPORT=30001

MOUNTD_PORT=900

注意填写的端口不要和系统其他的服务端口冲突

改完之后,重启nfs服务,继续查看,发现端口已经改变,而且已经固定。

[[email protected] ~]# 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

100011    1   udp   800  rquotad

100011    2   udp   800  rquotad

100011    1   tcp   800  rquotad

100011    2   tcp   800  rquotad

100005    1   udp   900  mountd

100005    1   tcp   900  mountd

100005    2   udp   900  mountd

100005    2   tcp   900  mountd

100005    3   udp   900  mountd

100005    3   tcp   900  mountd

100003    2   tcp  2049  nfs

100003    3   tcp  2049  nfs

100003    4   tcp  2049  nfs

100227    2   tcp  2049  nfs_acl

100227    3   tcp  2049  nfs_acl

100003    2   udp  2049  nfs

100003    3   udp  2049  nfs

100003    4   udp  2049  nfs

100227    2   udp  2049  nfs_acl

100227   3   udp   2049 nfs_acl

100021    1   udp 30001  nlockmgr

100021    3   udp 30001  nlockmgr

100021    4   udp 30001  nlockmgr

100021    1   tcp 30000  nlockmgr

100021    3   tcp 30000  nlockmgr

100021    4  tcp  30000  nlockmgr

输入一下防火墙规则,允许nfs通过防火墙

iptables -I INPUT -p tcp --dport 111 -jACCEPT

iptables -I INPUT -p udp --dport 111 -jACCEPT

iptables -I INPUT -p tcp --dport 2049 -jACCEPT

iptables -I INPUT -p udp --dport 2049 -jACCEPT

iptables -I INPUT -p tcp --dport 900 -jACCEPT

iptables -I INPUT -p udp --dport 900 -jACCEPT

iptables -I INPUT -p tcp --dport 800 -jACCEPT

iptables -I INPUT -p udp --dport 800 -jACCEPT

iptables -I INPUT -p tcp --dport 30000 -jACCEPT

iptables -I INPUT -p udp --dport 30001 -jACCEPT

iptables -I INPUT -p tcp --dport 662 -jACCEPT

iptables -I INPUT -p udp --dport 662 -jACCEPT

NFS服务器必须开启的2个服务:nfs、rpcbind

NFS客户端要实现开机自动挂载,必须开启netfs服务

如果要实现开机自动启动,建议别把防火墙启动添加到/etc/rc.local中,否则在启动的时候由于防火墙的限制,依然会卡在守护进程那里,导致无法进入系统。切记。解决方法我在进一步研究中!

NFS关于selinux的设置

Setsebool–P allow_gssd_read_tmp 1

Setsebool–P allow_nfsd_anon_write 1

Setsebool–P nfs_export_all_ro  1

Setsebool–P nfs_export_all_rw  1

Setsebool–P use_nfs_home_dirs  1

时间: 2024-12-23 02:31:45

NFS服务的相关文章

linux nfs服务安装

nfs为网络文件系统也可理解为文件共享,方式为服务器上安装nfs服务,客户端通过挂在的方式把服务器上的目录挂载到本地,实现文件共享 1.查看有没有安装nfs rpm -qa |grep nfs 2.安装nfs yum -y install nfs-utils 3.开启服务 /etc/init.d/nfs start /etc/init.d/rpcbind start 4.配置exports vi/etc/exports /home/zuzhao 192.168.1.0  255.255.254.

Ubuntu下配置tftp服务和NFS服务

Ubuntu下配置tftp服务和NFS服务 配置tftp 方法一:(推荐方法)Ubuntu10.04 测试通过 1.安装TFTP软件 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是客户端,tftpd-hpa是服务器端 2.建立tftpboot目录,作为服务器的目录sudo mkdir ~/tftpboot释放权限:(服务器目录,需要设置权限为777,chomd 777)sudo chmod 777 ~/tftpboot 3.配置TFTP服务器

nfs服务简单配置手记

nfs服务在实际工作中配置十分频繁,这里简要记录下配置过程.默认情况下nfs服务相关软件包已经安装好,只是nfs服务不是开机自启动.只需要配置nfs服务器开机自启动即可.其它portmap等服务都是开机自启的. 1. 服务端简单要配置过程如下 (1) 启动nfs服务 # chkconfig nfs on   # service nfs start (2) 配置共享输出目录 # vi /etc/exports   /data      192.168.233.*(rw,no_root_squash

NFS服务与crond服务

NFS服务:用于linux系统之间,基于TCP/IP协议层,可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作. ---------------------------------------------------------------------------------------------------------------------------- Linux 服务端: 1.准备环境 iptables -F 关闭防火墙配置 systemctl stop firewalld 关闭防火

一键部署NFS服务

#!/bin/bash #By Kaile QQ:10206334 #Blog http://kaile.blog.51cto.com RPCSTART=`/etc/init.d/rpcbind start` NFSSTART=`/etc/init.d/nfs start` #NFS服务端软件是否安装 [ `rpm -qa nfs-utils rpcbind | wc -l` -eq 2 ] ||  yum -y install nfs-utils rpcbind >/dev/null 2>$

centos6.5 搭建NFS 服务

Nfs服务 挂载命令: mount 源 目标 mount ip地址 本地地址 mount –t 192.168.1.115:/video /video 1 先开启rpc服务 2 启动nfs服务 向rpc注册 3 请求nfs服务 4 返回端口 5 连接端口请求数据 两台机器 (server 和clinet) 环境:CentOS release 6.5 (Final)  2.6.32-431.el6.x86_64  LANG=EN 服务端 安装包 yum groupinstall "NFS file

NFS服务的搭建与RPC协议

NFS(Network File System)的缩写,意为网络文件系统.其功能主要是通过网络在不同的主机之间共享目录或者文件.NFS客户端通过挂载将NFS服务器端共享的数据目录挂载到本地系统.由于NFS支持的功能很多,不同的功能会启动不同的端口来传输数据,由于端口的不固定会造成NFS客户端与NFS服务器端的通信障碍,为了解决这个问题就出现了RPC(Remote Procedure Call)服务.RPC即远程调用协议 相当于NFS客户端与NFS服务器端数据传输的桥梁. 本文通过NFS服务在两台

NFS服务基础及优化

一.NFS主配置文件(默认为空):            /etc/exports        格式:            共享的目录    共享地址1(参数1,参数2,...)    共享地址2(参数1,参数2,...)        注意:            共享目录的本地权限,如果需要读写共享,一定要让本地目录被NFS客户端的用户(nfsnobody)可以读写        重要参数:            rw    读写权限            ro    只读权限     

NFS服务搭建(详解)

NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS在文件传送或信息传送过程中依赖于RPC协议.RPC,远程过程调用 (Remote Procedure Call)是能使客户端执行其他系统中程序的一种机制.NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进