nfs网络文件服务

第1章  NFS介绍

1.1 什么是NFS

  • NFSNetwork File System的缩写,中文意思是网络文件系统,

它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录

  • 互联网中小型网站集群机构后端常用NFS进行数据共享,

如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:MoosefsmfsGlusterFSFastDFS

说明:NFS服务只能应用在linux系统上,而FTP samba服务均都支持linuxwindows

1.2 NFS服务应用

 

NFS是一个共享存储服务,为什么要有共享存储?

  1. 实现数据信息的共享
  2. 实现数据信息的一致

1.3 共享存储的方式

  • 硬件实现共享服务

IBM oracle EMC

  • 软件实现共享服务

NFS FTP samba

1.4 NFS共享系统原理

  1. NFS服务端创建共享目录
  2. 通过mount网络挂载,将NFS客户端本地目录挂载到NFS服务端共享目录下
  3. NFS客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建删除,查看操作

1.5 什么是RPC

注意:centos5rpcbind'名称为portmap

 

第2章 实践操作

2.1 服务器规划:

进行服务器的规划

2.2 NFS服务端部署过程

2.2.1 第一个里程碑-确认软件是否已经安装,安装NFS服务相关软件

rpm -qa nfs-utils rpcbind

yum install -y nfs-utils rpcbind

2.2.2 第二个里程碑-编写nfs配置文件

PS.nfs配置文件默认存在/etc/exports

#注释

/data 172.16.1.0(rw,sync)

说明:

第一部分:/data             --指定共享目录信息

第二部分:172.16.1.0/24     --指定了一个网段信息,表示允许指定的网段主机挂载到我本地的共享目录上

第三部分:(rw,sync)         --表示定义共享参数信息,

2.2.3 第三个里程碑-创建共享目录并设定权限

mkdir /data

chown -R nfsnobody.nfsnobody /data

ll -d /data

说明:nfsbody在软件安装时会自动创建,所以此用户不在创建

2.2.4 第四个里程碑-启动服务

首先启动rpc服务

/etc/init.d/rpcbind start

查看服务相关信息

ps -ef|grep rpcbind

netstat -lnupt|grep rpcbind

rpcinfo -p localhost

其次启动nfs服务

/etc/init.d/nfs start

2.2.5 查看服务相关信息

ps -ef|grep nfs ##查看nfs进程

netstat -inupt|grep nfs ##查看NFS端口

showmount -e 10.0.0.31 ##查询NFS服务器上本地所有共享目录

rpcinfo -p localhost ##查看NFS先RPC的注册信息

2.3 NFS客户端部署过程

2.3.1 第一个里程碑-确认软件是否安装

rpm -qa nfs-utils rpcbind

yum install -y nfs-utils rpcbind

注意:如果不安装nfs软件会发生如下问题:

  1. 客户端无法使用showmount命令
  2. 客户端无法识别nfs文件系统类型

2.3.2 第二个里程碑-启动服务

首先启动rpc服务

/etc/init.d/rpcbind start

查看服务相关信息

ps -ef|grep rpcbind

netstat -lnupt|grep rpcbind

rpcinfo -p localhost

其次启动nfs服务

/etc/init.d/nfs start

PS. nfs软件安装后,不需要启动nfs服务

rpcbind软件安装后,也可以不启动rpcbind服务

2.3.3 查看服务相关信息

ps -ef|grep nfs ##查看nfs进程

netstat -inupt|grep nfs ##查看NFS端口

showmount -e 10.0.0.31 ##查询NFS服务器上本地所有共享目录

rpcinfo -p localhost ##查看NFS先RPC的注册信息

2.3.4 第三个里程碑-检查nfs服务端是否有可以进行共享挂载的目录

showmount -e 172.16.1.31

2.3.5 第四个里程碑-进行nfs客户端挂载

mount -t nfs 172.16.1.31:/data /mnt

2.3.6 第五个里程碑-检查挂载信息

df -h

2.4 设置开机自启动

chkconfig rpcbind on

chkconfig nfs on 

第3章 NFSRPC相关进程说明

服务或进程名

用途说明

rpcbind

rpcbind的主进程

rpc-statd

检查数据存储的一致性

rpc.rquotad

磁盘配额进程

rpc.mountd

权限管理验证等

nfsd

NFS服务的主进程

rpc.lockd

用来锁定文件

rpc.idmapd

用户映射或用户压缩

 

PS.相应进程名可以通过man 【进程名】查询

第4章 /etc/exports的配置信息

官方配置手册

 

/etc/exports文件配置格式为:

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

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

 

4.1 NFS共享目录

NFS服务器段要共享的实际目录,要用绝对路径,如(/data)。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写

4.2 NFS客户端地址

NFS服务器段授权的可访问共享目录的NFS

客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址。还可以用*来匹配所有客户端服务器。

客户端地址

具体地址

说明

授权第一客户端访问NFS

10.0.0.30

一般情况,生产环境中此配置不多

授权整个网段可访问NFS

10.0.0.0/24

其中24等同于255.255.255.0,指定网段为生产环境中最常见的配置。配置简单,维护方便

授权整个网段可访问NFS

10.0.0.*

指定网段的另外写法(不推荐)

授权某个域名客户端访问

nfs.test.com

此方法生产环境中一般情况不常用

授权整个域名

*.test.com

nfs.test.com

 

4.3 权限参数集

  1. nfs权限:nfs配置的/etc/exports /data 172.16.1.0/21(rw)决定
  2. 本地文件系统权限决定drwxr-xr-x

4.4 生产环境常见样例

常见格式说明

要共享的目录客户端IP地址或IP

配置案例一

/data 10.0.0.0/24(rw,sync)

说明:允许客户端读写,并且数据同步写入到服务器端的磁盘里

注意:24(之间不能有空格

配置案例二

/data 10.0.0.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)

说明:允许客户端读写,并且数据同步写到服务器段的磁盘里,并且指定客户端的用户UIDGID。早期生产环境的一种配置,适合多客户端共享一个NFS服务单用户,如果所有服务器的nfsnobody账户UID都是65534,则本例没必要。早期centos5.5的系统默认情况下nfsnobodyUID不一定是65534,此时如果这些服务器共享一个NFS目录,就会出现访问权限问题

配置案例三

/home/test 10.0.0.0/24(ro)

说明:只读共享

用途:例如在生产环境中,开发人员有查看生产服务器日志的需求,但又不希望给开发生产服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端上查看某个生产服务器的日志目录(NFS共享)的权限,当然这不是唯一的方法,例如可以把程序记录的日志发送到测试服务器供开发查看或者通过收集日志等其他方式展现

第5章 NFS配置配置参数权限

  • 查询方法:man exporst

 

参数名称

参数用途

rw

Eead-write,表示可读可写权限

ro

Eead-only,表示只读权限

sync

请求或者写入数据时,数据同步写入到NFS Server的硬盘后才返回。

优点,数据安全不会丢;缺点,性能比不启用该参数要差

async

写入时数据会先写到内存缓冲区,直到硬盘有空挡才会再写入磁盘,这样可以提升写入效率。风险为若服务器宕机或不正常关机,会损失缓冲区中未写入磁盘的数据(解决办法:服务器主板电池或加UPSAB(双路电源)不间断电源)!

停电--uos--发电机

all_squash

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

l 在生产中配置NFS的重要技巧:

  1. 确保所有客户段服务器对NFS共享目录具备相同的用户访问权限
    1. all_squash把所有客户端都压缩成固定的匿名用户(UID相同)
    2. 就是anougidanongid指定的UIDGID的用户
    3. 所有的客户端和服务端都需要有一个相同的UIDGID的用户,即nfsnobodyUID必须相同)

no_root_squash

保持root用户不进行压缩

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

root_squash

如果访问NFS Server共享目录的用户是root,则它的权限将被压缩成匿名用户,同时,它的UIDGID都会变成nfsnobody账号身份

anonuid

指定的是匿名用户的uid(数字)

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

anongid

指定的是匿名用户组的gid(数字)

anonuid,区别就是吧uid(用户ID)换成gid(组id

5.1 anonuidanongid

说明:修改映射后的默认用户信息

实践操作配置:修改NFS默认映射用户(nfsbobody--www

5.1.1 第一步:创建映射用户(服务端和客户端都创建,并且giduid保持一致)

客户端创建用户www

[root@backup ~]# useradd www -u 666

[root@backup ~]# id www

uid=666(www) gid=666(www) groups=666(www)

服务端创建用户www

[root@nfs01 ~]# useradd www -u 666

[root@nfs01 ~]# id www

uid=666(www) gid=666(www) groups=666(www)

5.1.2 第二步:服务端进行nfs文件配置并重启,以及修改共享目录权限

[root@nfs01 ~]# vim /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs01 ~]# /etc/init.d/nfs reload

[root@nfs01 ~]# chown -R www.www /data

[root@nfs01 ~]# ll -d /data

drwxr-xr-x 2 www www 4096 Oct 14 13:31 /data

5.1.3 第三步:客户端重新挂载:

[root@backup ~]# umount /mnt

[root@backup ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.5G  6.9G  18% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   34M  146M  19% /boot

[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

[root@backup ~]# df -h

Filesystem         Size  Used Avail Use% Mounted on

/dev/sda3          8.8G  1.5G  6.9G  18% /

tmpfs              238M     0  238M   0% /dev/shm

/dev/sda1          190M   34M  146M  19% /boot

172.16.1.31:/data  8.8G  1.5G  6.9G  18% /mnt

5.1.4 第四步,客户端进行测试

测试root用户映射:

[root@backup ~]# touch /mnt/user_root.txt

[root@backup ~]# ll /mnt

total 0

-rw-r--r-- 1 www www 0 Oct 14  2017 user_root.txt

测试普通用户:

[www@backup ~]$ touch /mnt/user_www.txt

[www@backup ~]$ ll /mnt

total 0

-rw-r--r-- 1 www www 0 Oct 14  2017 user_root.txt

-rw-rw-r-- 1 www www 0 Oct 14  2017 user_www.txt

5.2 nfs默认配置文件

[root@nfs01 ~]# cat /var/lib/nfs/etab

/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=666,anongid=666,sec=sys,rw,root_squash,all_squash)

注意:只是查看作用,影响配置的文件是/etc/exports

第6章 实例

6.1 实例一:共享不同的两个目录,分别赋予读和写权限

服务端要求:

nfs服务器172.16.1.31,共享下面两个目录

/data/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户

/data/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户

客户端要求

backup服务器 NFS服务器的/data/r挂载到/data/r

web01服务器 NFS服务器的/data/w挂载到/data/w

6.1.1 第一步:创建目录环境

nfs服务端:

[root@nfs01 ~]# mkdir -p /data/{r,w}

[root@nfs01 ~]# ll -d /data/{r,w}

drwxr-xr-x 2 root root 4096 Oct 14 20:28 /data/r

drwxr-xr-x 2 root root 4096 Oct 14 20:28 /data/w

[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/{r,w}

[root@nfs01 ~]# ll -d /data/{r,w}

drwxr-xr-x 2 nfsnobody nfsnobody 4096 Oct 14 20:28 /data/r

drwxr-xr-x 2 nfsnobody nfsnobody 4096 Oct 14 20:28 /data/w

backup客户端:

[root@backup ~]# mkdir -p /data/r

[root@backup ~]# ll -d /data/r

drwxr-xr-x 2 root root 4096 Oct 14 20:40 /data/r

web客户端:

[root@web01 ~]# mkdir -p /data/w

[root@web01 ~]# ll -d /data/w

drwxr-xr-x 2 root root 4096 Oct 14 20:39 /data/w

6.1.2 第二步:编辑nfs服务端配置文件

[root@nfs01 ~]# vim /etc/exports

/data/w 172.16.1.0/24(rw,sync,all_squash)

/data/r 172.16.1.0/24(ro,sync,all_squash)

注意:在配置共享目录时需要考虑到子目录会继承上一级目录的权限,因此尽量让共享目录之间没有继承关系

6.1.3 第三步:重新加载nfs服务

[root@nfs01 ~]# /etc/init.d/nfs reload

6.1.4 第四不:客户端重新挂载

backup客户端:

[root@backup ~]# mount -t nfs 172.16.1.31:/data/r /data/r/

[root@backup ~]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3            8.8G  1.5G  6.9G  18% /

tmpfs                238M     0  238M   0% /dev/shm

/dev/sda1            190M   34M  146M  19% /boot

172.16.1.31:/data/r  8.8G  1.5G  6.9G  18% /data/r

web01客户端:

[root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /data/w

[root@web01 ~]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3            8.8G  1.5G  6.9G  18% /

tmpfs                238M     0  238M   0% /dev/shm

/dev/sda1            190M   34M  146M  19% /boot

172.16.1.31:/data/w  8.8G  1.5G  6.9G  18% /data/w

6.1.5 第五步测试

backup服务端:

[root@backup /]# touch /data/r/.txt

touch: cannot touch `/data/r/.txt': Read-only file system

web客户端:

[root@web01 /]# touch /data/w/.txt

[root@web01 /]# ll /data/w/

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 14 21:09 ol

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 14  2017 .txt

6.1.6 第六步-客户端开机自动挂载

方法一:把挂载命令命令写入到/etc/rc.local

##backup客户端

mount -t nfs 172.16.1.31:/data/r /data/r

##web客户端

mount -t nfs 172.16.1.31:/data/w /data/w

方法二:写入/etc/fstab(不推荐)

##backup客户端

172.16.1.31:/data/r     /data/r                 nfs     defaults        0 0

##web客户端

172.16.1.31:/data/r     /data/r                 nfs     defaults        0 0

注意:在生产环境中,对于共享的NFS目录,一般不会配置到/etc/fstab里。在客户端主机重启时因为启动顺序的原因该配置文件会在网卡配置文件之前启动,就会导致客户机无法挂载。一般是通过把mount -t nfs命令放到rc.local中来实现开机自动挂载NFS。或者使用netfs服务

/etc/init.d/netfs start

chkconfig netfs on

chkconfig --list netfs

第7章 重点梳理

当多个NFS客户端访问服务器端的读写文件时,需要具有以下几个权限

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

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

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

只有满足上述三个条件,多个NFS客户端才能具有查看、修改、删除其他任意NFS客户端上传文件的权限,这在大规模的集群环境中作为集群共享存储时尤为重要

7.1 nfs常用路径

NFS重要路径

说明

/etc/exports

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

/usr/sbin/exports

NFS服务的管理命令

/usr/sbin/showmount

常用来在客户端查看NFS配置及挂载结果的命令

/var/lib/nfs/etab

NFS服务端的配置信息查询文件

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

/proc/mounts

存放客户端挂载参数(配置读写权限时,不管服务端还是客户端,只要有一方权限为ro,则最终目录为只读权限)

/var/lib/nfs/xtab(历史)

适合centos5.x记录曾经挂载过的NFS客户端的信息,包括IP地址等,centos 6.8由此文件,但是内容为空

/var/lib/nfs/rmtab(历史)

客户端访问服务器exports的信息列表

7.2 卸载目录的方法

7.2.1 退出挂载点,进行卸载

cd ..

umount /data/r

7.2.2 不退出挂载点,强制卸载

umount -lf /data/w

第8章 NFS客户端挂载命令

8.1 NFS客户端挂载命令格式

挂载命令

挂载的格式类型

指定挂载参数

NFS服务端提供的共享目录

NFS客户端的挂载点

mount

-t nfs

-o

172.16.1.31:/data

/mnt

注意:该命令在客户端执行

8.2 客户端挂载过程:

8.2.1 第一步:测试是否有可以挂载的共享目录

showmount -e 172.16.1.31

8.2.2 第二步:进行目录挂载

mount -t nfs 172.16.1.31:/data /mnt

8.2.3 第三步:检查挂载结果

df -h

第9章 挂载时常见错误

9.1 常见错误

第一个报错:

[root@nfs-client1 ~]# showmount -e 10.0.0.7 <- 恭喜•各位,这里遇到了故障

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

说明:防火墙开启造成的

第二个报错:

[root@nfs-client1 ~]# showmount -e 10.0.0.7

clnt_create: RPC: Program not registered

说明:nfs服务没有启动;nfsrpc服务启动顺序不对

9.2 排查过程

1)从客户端ping NFS服务器端IP,目的是看物理链路是否通。

[root@nfs-client1 ~]# ping 10.0.0.7

PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.

64 bytes from 10.0.0.7: icmp_seq=1 ttl=64 time=0.256 ms

64 bytes from 10.0.0.7: icmp_seq=2 ttl=64 time=0.233 ms

2)从客户端telnet服务器端IP端口检查,用于测试NFS服务(RPC服务)是否通。

[root@nfs-client1 ~]# telnet 10.0.0.7 111

Trying 10.0.0.7...

telnet: connect to address 10.0.0.7: No route to host <- 防火请拦截了

如果不通,再通过去NFS服务器端执行如下命令看看111端口是不是开了!

3) 测试是否有可以挂载的共享目录

   showmount -e 172.16.1.31

说明:此步测试失败,表示nfs服务配置有问题

第10章 如何设置客户端自动挂载

方法一:将挂载命令放入/etc/rc.local文件中

echo 'mount -t nfs 172.16.1.31:/data /mnt' >>/etc/rc.local

方法二:编写配置/etc/fstab文件

172.16.1.31:/data/r     /data/r                 nfs     defaults        0 0

注意:在生产环境中,对于共享的NFS目录,一般不会配置到/etc/fstab里。在客户端主机重启时因为启动顺序的原因该配置文件会在网卡配置文件之前启动,就会导致客户机无法挂载。一般是通过把mount -t nfs命令放到rc.local中来实现开机自动挂载NFS。或者使用netfs服务

/etc/init.d/netfs start

chkconfig netfs on

chkconfig --list netfs

:利用/etc/fstab编写自动挂载功能时,fstab文件会在网络服务启动前进行加载

第11章 常见客户端的挂载参数

man nfs

参数

参数功能

默认参数

fg

bg

l 当在客户端执行挂载时,可选是在前台(fg)还是在后台(bg)执行

l 若在前台执行,则mount会持续尝试挂载,直到成功或挂载时间超时为止

l 若在后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的其他程序操作

l 如果网络联机不稳定,或是服务器常常需要开关机,建议使用bg比较稳妥。

fg

soft

hard

l 当NFS Clientsoft挂载server时,若网络或server出现问题,造成clientserver无法传输资料,client就会一直尝试,直到timeout后显示错误才停止。若使用soft mount的话,可能会在timeout出现时造成数据丢失,故一般不采用

l 若使用hard模式挂载硬盘时,刚好与soft相反,此时client会一直尝试连接到server,若server有回应就继续刚才的操作,若没有回应NFS client会一直尝试,此时无法umonutkill。所以常常会配合intr使用,这是默认值。

hard

intr

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

rsize

wsize

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

centos5(默认):

rsize=1024

wsize=1024

centos6(默认):

rsize=131072

wsize=131072

proto=tcp

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

proto=tcp

第12章 常见服务端挂载参数

man mount

参数

参数意义

系统默认参数

suid

nosuid

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

suid

rw

ro

l 可以制定文件系统是只读(ro)或是可写(rw

rw

dev

nodev

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

dev

exec

noexec

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

exec

user

nouser

l 是否允许普通用户拥有文件的挂载与卸载功能?如果想要保护文件系统,最好不要为普通用户提供挂载和卸载功能

nouesr

auto

noauto

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

l 备注:mount -a==/etc/init.d/netfs start

auto

第13章 mount挂载参数参考(相关参数请参照上文中表或man帮助)

13.1 禁止更新目录及文件时间戳,命令如下

测试:

mount -t nfs -o noatime.nodiratime 10.0.0.1:/data /mnt

写入/etc/fstab配置文件

10.0.0.1:/data       /mnt                    nfs     noatime,nodiratime   0 0

13.2 安全加优化的挂载方式

测试:

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

写入/etc/fstab配置文件:

10.0.0.0:/data          /mnt                    nfs     nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 0 0

13.3 NFS网络文件系统优化挂载的参数建议

测试:

mount -t nfs -o natime,nodiratime,nosuid,noexec,nodev,rsize=131072,wsize=131072 10.0.0.1:/data /mnt

写入/etc/fatab配置文件

10.0.0.1:/data          /mnt                    nfs     natime,nodiratime,nosuid,noexec,nodev,rsize=131072,wsize=131072 0 0

第14章 NFS服务的优点和缺陷

14.1 优点

  1. 简单、易上手、容易管理
  2. NFS文件系统内数据是在文件系统上的、即数据是可见的
  3. 部署快速、维护简单方便、且可控、满足需求是最好的
  4. 可靠、从软件层面上看,数据可靠性高。经久耐用。数据是在文件系统上的
  5. 服务非常稳定
  6. 存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录,这个在后期会通过负载均衡及高可用方案弥补
  7. 在大数据高并发的场合,NFS效率,性能有限(2千万/日一下PV的网站不是瓶颈,除非网站架构设计太差)
  8. 客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题不大)
  9. NFS数据是明文的,NFS本身不对数据完整性进行测试
  10. 多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高),尤其当NFS服务器端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载)
  11. 涉及了同步(实时等待)和异步(解耦)的概念,NFS服务器端和客户端相对来说就是耦合度有些高,网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变的更好

14.2 缺陷

14.3 应用建议

对于大中小网站(参考点2000/PV以下)线上应用,都有用武之地、门户网站也会有应用,生产场景应该多将数据的访问往前推,即尽量将静态存储里的资源通过CDN或缓存服务器提供服务,如果没有缓存服务或架构不好,存储服务器数量再多也是扛不住压力的,而且用户体验也很差

转载于:https://www.cnblogs.com/ExzaiTin/p/8677033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值