与nfs相关的计算机服务设置,十一、NFS服务器配置和管理

11.1、NFS简介

NFS是Network File System的缩写,中文名为网络文件系统,它是一种能使安装了不同操作系统的计算机之间通过网络进行共享的网络协议。由于NFS可以快速地进行文件共享,有效地提供资源的利用率,节省本地磁盘空间,方便集中管理,所以应用广泛。

NFS采用C/S工作模式,NFS服务器设置好共享文件目录后,其他的NFS客户端就可以把这个由远端服务器共享出来的目录到本地系统上的某个自行定义的挂载点,并进行使用。

8b087baee7eb0693b1a2db55df585914.png

NFS支持的功能很多,而不同的功能由不同的程序来实现,每启动一个功能就需要打开一些端口进行数据传输。所以与其他大部分的C/S结构不同,NFS并不是监听一些固定端口,而是随机采用一些未被使用的小于1024的端口作为数据传输。但是客户端需要连接服务器时首先必须知道服务端程序提供服务的端口,而NFS端口的随机性为客户端连接带来了麻烦,为此NFS使用了远程过程调用RPC(Remote Procedure Call)来解决。

当NFS启动时,它会随机地使用服务器上未被使用的小于1024的端口来为服务端口,然后会把端口号、进程ID和监听IP等信息在RPC服务中注册。这样一来,RPC服务就知道各个NFS功能对应的服务端口,当客户端通过固定端口111连接上RPC服务后,RPC就会把NFS各个功能所对应的端口号返回给客户端。至此,客户端就可以通过这些端口直接与NFS进行通信。

d5eb7b46c67aae19fbc74487513b930e.png

11.2、NFS服务器安装与配置

NFS服务器主要设计的软件有rpcbind和nfs-utils,它们分别是RPC和NFS主程序,关于这两个软件包,其作用分别为:rpcbind:监听端口111/tcp, 111/udp,最主要的功能就是在指定每个NFS功能所对应的端口号,并且汇报给客户端,让客户端可以连结到正确的端口上去。

nfs-utils:NFS的主程序,监听端口2049/tcp, 2049/udp,包括提供NFS服务所需要的rpc.nfsd和rpc.mountd两个守护进程和其他相关配置文件。[root@localhost home]# yum install -y rpcbind nfs-utils   #yum安装软件包

[root@localhost home]# rpm -ql rpcbind      #查看文件的具体安装路径

/etc/rc.d/init.d/rpcbind                    #rpcbind自动启动脚本

/sbin/rpcbind                               #主程序

/usr/sbin/rpcinfo

/usr/share/doc/rpcbind-0.2.0                #文档

/usr/share/doc/rpcbind-0.2.0/AUTHORS

/usr/share/doc/rpcbind-0.2.0/ChangeLog

/usr/share/doc/rpcbind-0.2.0/README

/usr/share/man/man8/rpcbind.8.gz           #帮助文件

/usr/share/man/man8/rpcinfo.8.gz

/var/cache/rpcbind

#启动NFS服务时,先启动rpcbind,后启动nfs服务

[root@localhost home]# service rpcbind start   #启动rpcbind

Starting rpcbind: [  OK  ]

[root@localhost home]# service nfs start       #启动nfs

Starting NFS services:  [  OK  ]

Starting NFS mountd: [  OK  ]

Starting NFS daemon: [  OK  ]

Starting RPC idmapd: [  OK  ]

#关闭NFS服务时,先关闭nfs服务,后关闭rpcbind服务

[root@localhost home]# service nfs stop

Shutting down NFS daemon: [  OK  ]

Shutting down NFS mountd: [  OK  ]

Shutting down RPC idmapd: [  OK  ]

[root@localhost home]# service rpcbind stop

Stopping rpcbind: [  OK  ]

NFS服务端的配置文件通过/etc/exports配置文件来实现,更改配置文件后需要通过exports命令使更改后的配置生效。exports配置文件

/etc/exports文件是NFS主要的配置文件,该文件用于设置服务器的共享目录,以及目录允许访问的主机、访问权限等信息。NFS安装后会在/etc目录下创建一个空白的exports文件,即没有任何的共享目录,用户需要进行手工编辑。文件每一行定义了一个共享目录,其格式为:共享目录 [客户端1(选项1,选项2 ...)]   [客户端2(选项1,选项2 ...)] ...

共享目录与各客户端之间以空格进行分隔,除了共享目录以外,其他内容可选。

共享目录:提供NFS客户端使用的目录

客户端:可以访问共享目录的计算机,可以通过IP地址和主机名进行指定,也可以使用子网掩码指定网段或者使用通配符'*'或'?'进行模糊指定。

选项:指定该共享目录的访问权限,如果不指定,则NFS使用默认选项。

客户端示例:客户端说明

Demoserver主机名为Demoserver的计算机

10.0.0.71IP地址为10.0.0.71的计算机

192.168.2.0/24子网192.168.2.0中的所有计算机

host?.example.com?表示任意字符

*.example.com.example.com域中的所有计算机

*所有计算机

客户端常用选项:客户端选项说明

ro客户端只能以只读方式访问共享目录中的文件,不能写入

rw对共享目录可读写

sync将数据同步写入内存与硬盘中

async异步IO方式,数据会先暂存在内存中,待需要时再写入硬盘

secure限制NFS服务只能使用小于1024端口号进行数据传输

insecure使用大于1024端口

wdelay如果多个客户端要对同一目录进行读写,则将这些操作集中执行

no_wdelay有写操作则立即写入,当设置了async选项时,该选项无效

hide共享目录时,不共享目录中的子目录

no_hide共享子目录

subtree_check强制NFS检查共享目录父目录的权限

no_subtree_check不检查父目录权限

all_squash不管登录NFS的使用者是什么身份,都把他的UID和GID映射为匿名用户和用户组

no_all_squash保留用户原来的UID和GID,不进行映射

anonuid指定NFS服务器使用/etc/passwd文件中UID为该值的用户作为匿名用户,应该尽量保持客户端和服务器端用户UID的一致性

anongid指定NFS服务器使用/etc/group文件中GID为该值的用户作为匿名用户组

root_squash如果登录NFS服务器使用共享目录的使用者是root,则把这个使用者的权限映射为匿名用户

no_root_squash如果登录NFS服务器使用共享目录的使用者是root,保留它的root权限,这可能会导致严重的安全问题exportfs命令:输出共享目录

NFS服务启动时,会读取/etc/exports配置文件的内容,把文件中设置的共享目录输出,供客户端使用。在NFS服务启动后,如果要对/etc/exports进行更改,需要通过exportfs对共享目录进行输出,其命令格式为:/usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]

/usr/sbin/exportfs -r [-v]

/usr/sbin/exportfs [-av] -u [client:/path ..]

/usr/sbin/exportfs [-v]

/usr/sbin/exportfs -f

常用选项:-a:全部输出或取消输出所有的共享目录

-i:忽略/etc/exports配置文件,而使用默认或命令行中指定的选项

-o:指定输出的客户端选项

-r:重新读取/etc/exports中的配置,并同步/var/lib/nfs/xtab与/etc/exports的内容

-u:取消一个或多个共享目录的输出

-v:如果不跟其他选项一起使用,则显示当前共享的所有目录及他们的选项设置,如果输出或取消输出共享目录,则显示进行了那些操作

11.3、NFS客户端配置

要在NFS客户端上使用服务器的共享目录,需要在本地主机上启动rpcbind服务,然后使用showmount命令查看NFS服务器共享的目录有哪些,使用mkdir命令在本地建立共享目录的挂载点,最后使用mount命令挂载共享目录到本地。

showmount命令格式为:showmount  [选项]  [主机IP或名称]

常用选项:-a:一般在NFS服务器上使用,用于显示已经挂载服务器共享目录的客户端及他们使用的共享目录

-d:与-a类似,但只显示目录,不显示具体客户端

-e:显示指定NFS服务器输出的共享目录列表

-h:显示帮助信息

-v:显示版本信息

--no-headers:不输出标题信息

挂载点可以由用户自行指定,创建挂载点后,就可以挂载共享目录,挂载共享目录使用的命令与挂载本地文件系统的命令一样,使用mount命令,其格式为:mount  [选项]  NFS服务器IP或主机名:共享目录  挂载点

常用选项:选项说明

-t nfs指定要挂载的文件系统类型为NFS

-o ro只读挂载的文件系统为只读

-o rw可读写

-o rsize=n指定NFS服务器上读文件时NFS使用的块大小,单位字节

-o wsize=n指定NFS服务器上写文件时NFS使用的块大小,单位字节

-o timeo=n指定超时后重新发送请求的延时时间,单位十分之一秒

-o retrans=n指定放弃挂载前尝试的次数

-o acregmin=n指定文件在缓冲中存放的最小时间,单位秒

-o acregmax=n指定文件在缓冲中存放的最大时间,单位秒

-o acdirmin=n指定目录在缓冲中存放的最小时间,单位秒

-o acdirmax=n指定目录在缓冲中存放的最大时间,单位秒

-o actime=n该选项值代替acregmin,acregmax,acdirmin,acdirmax,把这四个值设为一样

-o retry=n指定放弃挂载前尝试的时间,单位分钟

-o port=n指定连接NFS服务器使用的端口号

-o proto=n指定挂载NFS文件系统时使用的网络协议

-o fg使用前台方式完成挂载工作

-o bg使用后台方式完成挂载工作

-o hard如果超时,则在控制台显示server not responding的错误信息并重复尝试连接,直到恢复为止

-o soft如果连接超时,则返回I/O错误给请求的程序

-o intr如果NFS文件操作超时,而使用了hard方式挂载,允许中断文件操作

-o noac禁止缓存,强制进行同步写

-o fsc启动本地磁盘缓存

11.4、使用autofs按需挂载共享目录

传统NFS共享目录使用方式中,客户端要挂载共享目录一般是通过手工执行mount命令或在fstab文件中配置开机自动挂在这两种方式完成。但是,NFS客户端与服务器之间不是永久连接,而NFS一个缺点是当客户端和服务器连接后,任何一方离线都可能导致另一方不断等待超时。同时,可能很多用户挂载了共享目录,但实际没有使用,导致NFS服务器资源的消耗,为了解决这些问题,一般做法是使用autofs服务,仅在访问时动态挂载共享目录。

autofs是一个按需挂载文件系统的程序,可以直接使用yum安装。[root@localhost ~]# yum install -y autofs

[root@localhost ~]# service autofs start

Loading autofs4: [  OK  ]

Starting automount: [  OK  ]

/etc/auto.master是autofs的主配置文件,配置格式为:挂载点顶层目录  映射文件挂载点顶层目录: 例如要把共享目录挂在到/nfs/public目录下,那么这里的值就设置为/nfs, 而/nfs/public不需要手工创建

映射文件:该文件是由用户自行指定并创建,在该文件中设置的NFS系统应该如何挂载

映射文件格式:挂载点  [-挂载选项]  NFS服务器名或IP:共享目录

其中,挂载点是基于auto.master文件中所设置的'挂载点顶层目录'的相对路径。配置文件更改后需要重启autofs服务式配置生效,也可以使用reload重载。

配置实例

假设NFS服务器nfsserver所输出的共享目录有4个,/tmp,/sharefiles/public, /sharefiles/private,/media/cdrom,exports文件具体内容为:[root@localhost ~]# cat /etc/exports

/tmp                     192.168.191.*(rw,no_root_squash)

/sharefiles/public       192.168.191.*(rw,all_squash,anonuid=40,anongid=40)

/sharefiles/private      192.168.191.*(rw)

/media/cdrom             192.168.191.*(ro)

要通过autofs服务把这些目录都挂载到本地/nfs/tmp

/nfs/public

/nfs/private

/nfs/cdrom

创建挂载点顶层目录[root@localhost ~]# mkdir /nfs

编辑/etc/automaster文件,添加如下内容:/nfs    /etc/auto.nfs

编辑/etc/auto.nfs映射文件:[root@localhost ~]# cat /etc/auto.nfs

tmp        -  192.168.191.128:/tmp

public     -  192.168.191.128:/sharefiles/public

private    -  192.168.191.128:/sharefiles/private

cdrom      -  192.168.191.128:/media/cdrom

重启autofs服务:[root@localhost nfs]# service autofs reload

Reloading maps

[root@localhost home]# cd /nfs/           #进入nfs目录,目录为空

[root@localhost nfs]# ls

[root@localhost nfs]# ls /nfs/cdrom       #访问各挂载的目录

cdrom.txt

[root@localhost nfs]# ls /nfs/private

private

[root@localhost nfs]# ls /nfs/public

public

[root@localhost nfs]# ls /nfs/tmp

yum.log

[root@localhost nfs]# ls                  #当访问时,挂载的目录才出现

cdrom  private  public  tmp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答这个问题。 首先,您需要在CentOS7上安装nfs-utils软件包,以便配置NFS服务器。您可以使用以下命令进行安装: ```bash sudo yum install nfs-utils ``` 接下来,您需要创建一个共享目录。您可以使用以下命令创建一个名为“nfs_share”的目录: ```bash sudo mkdir /nfs_share ``` 然后,您需要编辑NFS服务器配置文件“/etc/exports”,并在其中添加共享目录的条目。例如,如果您要将“/nfs_share”目录共享给所有主机,则可以将以下行添加到“/etc/exports”文件中: ```bash /nfs_share *(rw,sync,no_root_squash) ``` 这将允许所有主机读写该共享目录,并且是同步的。其中,* 表示允许所有主机访问,rw 表示读写访问权限,sync 表示同步访问,no_root_squash 表示普通用户和 root 用户访问该共享目录时具有相同的权限。 保存并退出文件,然后重新加载NFS服务器配置: ```bash sudo exportfs -a ``` 接下来,您需要在Windows上打开文件资源管理器,并单击“计算机”选项卡上的“映射网络驱动器”按钮。然后,您需要选择要映射的驱动器号,并将驱动器路径设置NFS服务器IP地址和共享目录的名称,例如: ```bash \\192.168.1.100\nfs_share ``` 请确保选择“连接时使用其他凭据”选项,并输入NFS服务器的用户名和密码。 最后,单击“完成”按钮,您应该能够在Windows上访问NFS服务器的共享目录了。 希望这能够帮助您配置NFS服务器和Windows共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值