澳门正规赌博十大网站-澳门游戏网站
做最好的网站

nfs网络文件系统服务介绍与实战第一部,NFS共享

NFS Server端(172.16.31.72)配置

vi /etc/exports

输入以下配置

/data/cache3/accesslog 172.16.31.75(rw,async,no_root_squash)

/data/cache3/accesslog 是服务端用于共享的目录,172.16.31.75是客户端的IP地址

配置好后启动NFS

service nfs start

1、NFS原理描述

网络文件系统NFS,网络文件系统

图片 1

Client端配置(172.16.31.75)

执行以下命令挂载

mount 172.16.31.72:/data/cache3/accesslog /data/cache1/accesslog

其中172.16.31.72:/data/cache3/accesslog为服务端的IP与共享目录路径,/data/cache1/accesslog为映射到客户端的路径。

nfs网络文件系统服务介绍与实战第一部,NFS共享磁盘目录。挂载成功后,对客户端/data/cache1/accesslog路径下文件或目录的操作会作用到服务端/data/cache3/accesslog目录。

什么是NFS?NFS是Network File System的缩写,它的主要功能是通过网络让不同的机器之间可以彼此共享文件或目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂在到本地的NFS客户端中。在本地NFS客户端的机器看来,NFS服务器端共享的目录就好像是自己的磁盘分区或者目录一样。

NFS介绍

      NFS一般用来存储共享视频、图片等静态数据,是当前互联网系统架构中最常用的服务之一。

什么是NFS?

NFS是Network File System的缩写,即网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从NFS客户端的机器本地看,NFS服务端共享的目录就好像是客户自己的磁盘分区或者目录一样,而实际上确是远端的NFS服务端的目录。

NFS网络文件系统类似windows系统的网络共享、安全功能、网络驱动器映射,这也和linux系统里的samba服务类似。应用于互联网中小型集群架构后端作为数据共享,如果是大型网站,那么有可能还会用到更复杂的分布式文件系统,例如Moosefs(mfs)、glusterfs、FastDFS。

2、NFS挂载结构图

NFS在企业中的应用场景

在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件。一般是把网站用户上传的文件都放在NFS共享里,例如,BBS产品的图片、附件、头像,注意网站BBS程序不要放在NFS共享里,然后前端所有的节点访问存储服务之一,特别是中小网站公司应用频率更高。

图片 2

NFS流程图

图片 3

NFS原理图

图片 4

NFS的RPC服务,在CentOS5.x下名称为portmap,在CentOS6.x下名称为rpcbind。

图片 5

NFS服务端部署环境准备

图解:NFS对外共享了video这个目录,下面有两台NFS客户端,客户端可以把服务端的video目录挂载到本地的一个目录下;相当于把本地的目录跟服务端的目录做一个绑定或者说是做一个映射,这个时候访问本地的/data/video就相当于访问NFS Server的/video目录一样,本地的共享目录可以是自己取的名字,当然最好是要做到见名知意了。

NFS服务部署服务器准备

服务器系统

角色

ip

CentOS 6.6 x86_64

NFS服务端(nfs-server)

自定义

CentOS 6.6 x86_64

NFS客户端(nfs-client1)

自定义

CentOS 6.6 x86_64

NFS客户端(nfs-client2)

自定义

3、NFS挂载原理详细介绍

NFS SERVER端设置

如上图,当我们在NFS服务器端设置好一个共享存储目录/video以后,其他的有权限访问NFS服务器端的NFS客户端可以将这个/video共享目录,挂载到NFS客户端本地系统上的某个挂载点(其实就是一个目录,这个目录可以随意指定,最好还是做到见名知意,便于后期维护),上图客户端本地的挂载点分别为/data/video和/data/video。

NFS软件列表

部署NFS服务,需要安装下面的软件包:

nfs-utils:这个NFS服务主程序包括rpc.nfsd、rpc.mountd两个daemons和相关文档说明及执行命令文件等。

rpcbind:CentOS 6.x下面RPC的主程序(CentOS 5.x下面的portmap)

NFS可以被视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口映射工作,这个映射工作就是由rpcbind服务来完成的。因此,必须先启动rpcbind服务。

CentOS 6.6默认没有安装NFS软件包(CentOS 5默认已经安装)。

nfs网络文件系统服务介绍与实战第一部,NFS共享磁盘目录。出现两个软件包,表示NFS服务端软件安装完毕。

当正确挂载完毕后,进入到NFS客户端的/data/video或/data/video目录就可以看到NFS服务器端/video目录下的所有数据。看起来NFS服务器端的/video目录就相当于NFS客户端本地的磁盘分区或者目录一样,根据NFS服务端授予的NFS共享权限,在NFS客户端操作/data/video或/data/video挂载的目录,就可以将数据轻松存取到NFS Server的/video目录中。

nfs网络文件系统服务介绍与实战第一部,NFS共享磁盘目录。启动NFS相关服务

工作中推荐使用/etc/rc.local进行服务的启动,不推荐使用chkconfig,目的是为了方便管理。

挂载后,NFS客户端本地显示如下面所示:

配置NFS服务端

NFS服务的默认配置文件路径为:/etc/exports,并且默认是空的。

如上所示:挂载信息看起来,和本地的分区一般不二,只是开头是ip地址的形式。

exports配置文件格式

/etc/exports文件配置格式

NFS 共享目录    NFS客户端地址1(参数1,参数2,参数3…) 客户端地址1(参数1,参数2,参数3…)

nfs网络文件系统服务介绍与实战第一部,NFS共享磁盘目录。NFS 共享目录    NFS客户端地址(参数1,参数2…)

 

 

 

经过上面的介绍,我们知道NFS是通过网络来进行数据传输的(所以叫网络文件系统嘛!,哈哈!),因此,NFS会使用一些端口来传输,那么,NFS到底使用哪些端口来进行传输呢?这个问题比较难于回答。因为NFS在传输数据时使用的端口是随机选择的。可能有朋友会纳闷,既然这样,NFS客户端是怎么知道NFS服务端使用的是哪个端口呢?答案:就是通过远程过程调用(Remote Procedure Call简称RPC)协议/服务来实现的,接下来,我们就谈谈什么是RPC协议/服务。

客户端配置

启动rpcbind

 

 

在服务端删除/data中的文件/oldboy.txt,然后在客户端进行查看,文件已经不存在。

无法写入是因为权限的问题,解决办法如下。

 

 

客户端设置开机自动挂载

同样配置另外一台客户端。

4、什么是RPC(Remote Procedure Call)

故障排查

nfs网络文件系统服务介绍与实战第一部,NFS共享磁盘目录。1、首先确认NFS服务端配置和服务是否正常。

最好服务端自己挂载自己看看是否成功。

这一步主要是检查服务端的NFS服务是不是正常的。

2、确认NFS客户端showmount是否正常。

如果有问题进行下面排查。

1)ping NFS服务端IP检查

2)telnet NFS服务端IP端口检查

如果出现No route to host很有可能是服务端防火墙引起。

此外,还需要注意服务端RPC服务启动顺序问题。

/etc/init.d/rpcbind start

rpcinfo -p localhost

/etc/init.d/nfs start

rpcinfo -p localhost


NFS配置参数权限

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口才无法固定,而是随机采用一些未被用的小于1024的端口来作为传输之用。但如此一来就会造成客户端与服务端联机的困扰,因为客户端必须要知道服务器端的数据传输端口才能进行联机交互数据。

NFS配置文件权限参数说明

NFS服务器端的权限设置,即/etc/exports文件配置格式中小括号的参数。

参数名称

参数用途

rw

read-write,表示可读写权限*

ro

read-only,表示只读权限

sync

请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。数据安全不会丢,缺点,性能下降。

async

请求或写入数据是,先返回请求,再将数据写入到内存缓存和硬盘中,即异步写入数据。此参数可以提升NFS性能,但是会降低数据的安全。因此,一般情况下建议不用,如果NFS处于瓶颈状态,并且运行数据丢失的话可以打开此参数提升NFS性能。写入时数据会先写到内存缓冲区,等硬盘有空档再写入磁盘,这样可以提升写入效率,风险若服务器宕机或不正常关机,会损失缓冲区中未写入磁盘的数据(解决办法:服务器主板电池或加UPS不间断电源)。(电商秒杀是异步)

no_root_squash

访问NFS Server共享目录的用户如果是root的话,它对该共享目录具有root权限。这个配置原本为无盘客户端准备的。用户应避免使用。

root_squash

对于访问NFS Server共享目录的用户如果是root的话,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份

all_squash

不管访问NFS Server共享目录的用户身份如何,它的权限都被压缩成匿名用户,同时它的UID和GID都会变成nfsnobody账号身份。在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用。*

anonuid

参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。*

anongid

同anonuid,区别是把uid(用户id)换成gid(组id)。

推荐使用配置。

图片 6

要解决上面的问题,我们就需要远程过程调用(RPC)服务了,RPC最主要的功能就是制定每个NFS功能所对应的端口号,并且将该信息传递给NFS客户端,让客户端可以连接到争取的端口上去。那么RPC又是如何知道每个NFS的端口呢?这是因为当NFS服务启动时会随机取用数个端口,并主动向NFS服务注册取用的相关端口信息,这样,RPC服务就可以知道每个端口对应的NFS功能了,然后RPD服务使用固定的Port 111 来监听NFS客户端的请求,并将正确的NFS端口应到给NFS客户端,这样一来,就可以让NFS的客户端与服务端进行数据传输了。

NFS服务总结

提示:在启动NFSServer之前,首先要启动RPC服务(即portmap服务,下同,否则NFS Server就无法想RPC服务注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据将会丢失,因此,此时RPC服务管理的NFS程序也需要重新启动以重新向RPC注册。

使得NFS Client端可写的服务端配置条件

当多个NFS客户端以NFS方式写入修改服务器端的文件系统时,需要具有以下权限:

1、NFS服务器/etc/exports设置需要开放可写入的权限,即服务端的共享权限。

2、NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限。

3、每台机器都对应存在和nfs默认配置UID的相同UID65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖NFS的默认配置)。

当满足三个条件,多个NFS客户端才能具有互相写入,互相修改其他主机写入文件的权限。

特别注意:一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行/etc/init.d/nfs reload或exportfs -rv即可,可使/etc/exports生效。

NFS服务重要文件说明

/etc/exports

NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容为空,以行为单位。

/usr/sbin/exportfs

NFS服务的管理命令。例如,可以加载NFS配置生效,还可以直接配置NFS共享目录,即无需配置/etc/exports实现共享。

exportfs不但可以加载配置生效,也可以通过命令直接共享目录。越过/etc/exports,但重启失效。

/usr/sbin/showmount

常用在客户端,查看NFS配置及挂载结果的命令。配置nfsserver,分别在服务端以及客户端查看挂载情况。

/var/lib/nfs/etab

NFS配置文件的完整参数设定的文件(有很多没有配置但是默认就有的NFS参数)。

/proc/mounts

客户端挂载参数


NFS客户端mount挂载命令    

NFS客户端挂载的命令

挂载命令

挂载的格式类型

NFS服务器提供的共享目录

NFS客户端要挂载的目录

mount

-t nfs

192.168.31.129:/data

/mnt(必须存在)

完整挂载命令为:mount -t nfs 192.168.31.129:/data /mnt

执行挂载的过程

5、描述整个启动过程如下图

NFS客户端mount挂载深入

**图片 7

NFS客户端mount挂载参数说明

在NFS服务端可以通过cat /var/lib/nfs/etab查看NFS服务端配置的参数细节。

在NFS客户端可以通过cat /proc/mounts查看mount的挂载参数细节。

NFS Client mount挂载参数列表

参数

参数功能

默认参数

fg

bg

当在客户端执行挂载时,可选择是前台fg还是在后台bg执行。若在前台执行,则mount会持续尝试挂载,直到成功或挂载时间超时为止,若在后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的其它程序操作。如果网络联机不稳定,或是服务器常常需要开关机,建议使用bg比较好。

fg

soft

hard

当NFS Client以soft挂载Server后,若网络或Server出现问题,造成Client和Server无法传输资料时,Client会一直尝试到timeout后显示错误并且停止尝试。若使用soft mount的话,可能会在timeout出现时造成资料丢失,一般不建议使用。

若用hard模式挂载硬盘时,刚好和soft相反,此时Client会一直尝试连线到Server,若Server有回应就继续刚才的操作,若没有回应NFS Client会一直尝试,此时无法umount或kill,所以常常会配合intr使用。

hard

intr

当使用hard挂载的资源timeout后,若有指定intr参数,可以在timeout后把它中断掉,这避免出问题时系统整个被NFS锁死。

rsize

wsize

读出(rsize)与写入(wrize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量,一般来说,如果在局域网内(LAN),并且客户端与服务端都具有足够的内存,这个值可以设置大一点(65535bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不能太大,最好是实现网络能够传输的最大值为限。

CentOS 5:默认1024

CentOS 6:默认131072

proto=udp

使用UDP协议来传输资料,在LAN中会有比较好的性能。若要跨越Internet的话,使用proto=tcp多传输的数据会有比较好的纠错能力

proto=tcp

man nfs查看上述信息。

优化:

下面是mount -o参数对应的选项列表

参数

参数意义

默认值

suid

nosuid

当挂载的文件系统上有任何SUID的程序时,只要使用nosuid就能够取消设置SUID的功能。

suid

rw

ro

可以指定文件系统是只读ro或可写rw

rw

dev

nodev

是否可以保留装置文件的特殊功能,一般来说只有/dev才有特殊的装置,因此可以选择nodev

dev

exec

noexec

是否具有执行文件的权限,如果想要挂载的仅仅是普通资源数据区(例如图片、附件),可以选择noexec

exec

user

nouser

是否允许用户进行文件的挂载与卸载功能,如果要保护文件系统,最好不要提供用户选择挂载与卸载

nouser

auto

noauto

这个auto指的是"mount -a"时会不会被挂载的项目,如果不需要这个分区随时被挂载,可设置为noauto

auto

如上图所示,当程序通过NFS客户端向NFS服务端存取文件时,其请求数据流程大致如以下几点:

NFS客户端mount挂载优化

在企业工作场景,一般来说,NFS服务器共享的只是普通静态数据(图片、附件、视频),不需要执行suid、exec等权限,挂载的这类文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性。例如,很多木马篡改站点文件都是由上传入口上传的程序到存储目录,然后执行的。

因此在挂载的时候用下面的命令很有必要。

mount安全挂载参数

mount -t nfs -o nosuid,noexec,nodev,rw 192.168.31.129:/data /mnt

通过mount -o指定挂载参数和在/etc/fstab里指定挂载参数效果是一样的。

mount挂载性能优化参数选项

1、禁止更新目录及文件时间戳挂载

mount -t nfs -o noatime,nodiratime 192.168.31.129:/data /mnt

2、安全加优化的挂载方式

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 192.168.31.129:/data /mnt

3、默认的挂载方式(推荐)

mount -t nfs 192.168.31.129:/data /mnt

如果是本地文件系统

mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0

NFS服务内核优化

优化选项说明:

1、/proc/sys/net/core/rmem_default

该文件指定了接收套接字缓冲区大小的缺失值(以字节为单位),缺省设置:124928。

2、/proc/sys/net/core/rmem_max

该文件指定了接收套接字缓冲区大小的最大值(以字节为单位),缺省设置:124928。

3、/proc/sys/net/core/wmem_default

该文件指定了发送套接字缓冲区大小的缺失值(以字节为单位),缺省设置:124928。

4、/proc/sys/net/core/wmem_max

该文件指定了发送套接字缓冲区大小的最大值(以字节为单位),缺省设置:124928。

上述文件对应的具体内核优化命令:

企业场景NFS共享存储优化小结

1、硬件:sas、ssd硬盘,买多块,raid0、raid10。网卡吞吐量要大,至少千兆

2、NFS服务器端配置:/data

192.168.31.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)

3、NFS客户端挂载:rsize、wsize、noatime、nodirtime、nosuid、noexec、soft(hard、intr)

mount -t nfs -o nosuid,noexec,nodev,noatime,rsize=131072,wsize=131072 192.168.31.129:/data /mnt

mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072 192.168.31.129:/data /mnt

mount -t nfs -o noatime,nodiratime 192.168.31.129:/data /mnt

4、有关NFS服务的所有服务器内核优化

5、如果卸载的时候提示:umount:/mnt:device is busy,需要退出挂载目录后进行卸载,或是NFS Server宕机了,需要强制卸载mount -lf /mnt。

6、大型网站NFS网络文件系统替代软件,分布式文件系统Moosefs(mfs)、glusterfs、FastDFS。

1、首先用户访问应用程序,由应用程序在NFS客户端发出NFS文件存取功能的询问请求,这时NFS客户端(即执行程序的服务器)RPC服务(即Portmap服务就会通过网络向NFS服务器段的portmap的111端口发出FNS文件存取功能的询问请求。

NFS系统应用优缺点说明

作用:

NFS服务可以让不同的客户端挂载使用同一目录,作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果windows linux可以用samba。

优点:

1、简单,容易上手,容易掌握。

2、NFS文件系统内数据是在文件系统之上的,即数据能看见。

3、方便,部署快速,维护简单,可控且满足需求。

4、可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的

5、稳定。

局限:

1、局限性是存在单点故障,如果nfs server宕机了所有客户端都不能访问共享目录

可以通过负载均衡及高可用方案弥补。

2、在大数据高并发的场合,NFS效率、性能有限(一般几千万pv的网站不是瓶颈,除非网站架构太差,2千万pv/日)。

3、客户端认证是基于ip和主机名的,权限是根据ID识别,安全性一般(用于内外则问题不大)。

4、NFS数据是明文的,NFS本身对数据完整性不作验证。

5、多台客户机器挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其NFS服务出现问题后,所有NFS客户端都挂掉状态(测试环境可以使用autofs自动挂载解决)。

6、大中小型网站(2千万PV以下)线上应用,都有用武之地。

2、NFS服务器端的portmap服务找到对应的已注册的NFS daemon端口后,通知NFS客户端的portmap服务。

showmount命令说明

短格式

长格式

用途及实例结果

-e

--exports

显示NFS服务器输出的目录列表

[[email protected] ~]# showmount -e 192.168.31.129

Export list for 192.168.31.129:

/data 192.168.31.0/24

-d

--directories

显示NFS服务器中提供共享的目录

-a

--all

以ip:/die格式显示NFS服务器的ip和可被挂载的目录

NFS介绍 什么是NFS? NFS是Network File System的缩写,即网络文件系统。它的主要功能是通过网络(一般是局域网...

3、此时NFS客户端就可以获取到了正确的断藕,然后就直接与NFS daemon联机存取数据了。

4、NFS客户端把数据存取成功后,返回给前端访问程序,告知用户存取结果。

由于NFS的各项功能都要向portmap服务注册,所以portmap服务才能获取到NFS服务的各项功能对应的端口号(port number、PID、NFS在主机所监听的ip等,而NFS客户端才能够通过向portmap服务询问从而找到正确的端口。也就是说,NFS需要有portmap服务的协助才能成功提供服务。由上面的描述,我们不难推断,无论是NFS客户端还是NFS服务器端,当需要使用NFS时,都需要首先启动portmap服务。

5、实验测试

同时打开三台虚拟机,并修改好主机名称,以及标签

图片 8

本文由澳门正规赌博十大网站发布于澳门游戏网站,转载请注明出处:nfs网络文件系统服务介绍与实战第一部,NFS共享