NFS网络文件系统服务(配置实战)
NFS网络文件系统服务(实战)
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。让不同的主机系统(NFS的客户端)可以透明地读写位于远端NFS服务器(NFS服务端)上的文件,就像访问本地文件一样。NFS网络文件系统很像windows系统的网络共享、安全功能、网络驱动器映射,这也和Linux系统里的samba服务类似,只不过一般情况,windows网络共享服务或者samba服务用于办公局域网共享,互联网中小型网站架构后端常用NFS作为数据共享,如果是大型网站,那么有可能还会用到更复杂的分布式文件系统(如MFS等)。
NFS的好处:
1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
、NFS在企业集群架构中的应用场景中一般被用来存储共享视频、图片、附件等静态文件
工作原理图:
1)NFS服务搭建前服务器的准备:
服务器系统 |
角色 |
IP地址 |
CentOS release 6.9 x86_64 |
NFS服务器端(nfs-server) |
192.168.1.222 |
CentOS release 6.9 x86_64 |
NFS客户端(nfs-client1) |
192.168.1.233 |
CentOS release 6.9 x86_64 |
NFS客户端(nfs-client2) |
192.168.1.244 |
2)安装所需软件
centos6.9 默认没有安装NFS软件包,此时我们可以使用install nfs-utils rpcbind -y 命令来进行安装
[root@nfs-server ~]# yum install nfs-utils rpcbind -y #三台同时安装
[root@nfs-client1 ~]# yum install nfs-utils rpcbind -y #三台同时安装
[root@nfs-client2 ~]# yum install nfs-utils rpcbind -y #三台同时安装
[root@nfs-server ~]# rpm -qa nfs-utils rpcbind #查看是否安装成功,以下结果表示已安装成功
nfs-utils-1.2.3-75.el6.x86_64
rpcbind-0.2.0-13.el6_9.1.x86_64
2)启动NFS相关服务
1、先启动rpcbind 服务
[root@nfs-server ~]# /etc/init.d/rpcbind start
正在启动 rpcbind: [确定]
[root@nfs-server ~]# netstat -lntup|grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1615/rpcbind
tcp 0 0 :::111 :::* LISTEN 1615/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1615/rpcbind
udp 0 0 0.0.0.0:942 0.0.0.0:* 1615/rpcbind
udp 0 0 :::111 :::* 1615/rpcbind
udp 0 0 :::942 :::* 1615/rpcbind
[root@nfs-server ~]# chkconfig rpcbind on #开机自启动
2、再启动nfs服务
[root@nfs-server ~]# /etc/init.d/nfs start
启动 NFS 服务: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
注意:启动的顺序是先启动rpcbind 再启动nfs
[root@nfs-server ~]# chkconfig nfs on
3)配置服务端
[root@nfs-server ~]# vim /etc/exports #exports文件默认是存在的,但没有内容,需要配置,有些Linux版本不提供exports 配置文件,就需要手动创建
添加如下内容:
/data 192.168.1.0/24(rw,sync,all_squash) #第一列是共享出去的目录,空格后面跟上客户端的ip(这里使用网段)再跟上参数,注意参数后面不要有空格,all_squash需加上才能让普通用户变成匿名用户nobody,否则普通用户不能访问,root的话可以不加
----说明
/etc/exports 文件配置格式
[共享的目录] [主机名或IP(参数,参数)]
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。当主机名或IP地址为空时,则代表共享给任意客户机提供服务。当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
来自man的例子:
# sample /etc/exports file
/ master(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub *(ro,insecure,all_squash)
/srv/www -sync,rw server @trusted @external(ro)
/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
/build buildhost[0-9].local.domain(rw)
4)创建共享目录并加载配置文件使其生效
[root@nfs-server ~]# mkdir /data
[root@nfs-server ~]# chown -R nfsnobody /data 权限
[root@nfs-server ~]# /etc/init.d/nfs reload
---测试
[root@nfs-server ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data 192.168.1.0/24 #说明本地看到共享记录
[root@nfs-server ~]# mount -t nfs 192.168.1.222:/data /opt
5)配置客户端
[root@nfs-client1 ~]# /etc/init.d/rpcbind start
[root@nfs-client2 ~]# /etc/init.d/rpcbind start
[root@nfs-client1 ~]# chkconfig rpcbind on
[root@nfs-client2 ~]# chkconfig rpcbind on
---查看是否能连上服务端
[root@nfs-client1 ~]# showmount -e 192.168.1.222
Export list for 192.168.1.222:
/data 192.168.1.0/24
[root@nfs-client2 ~]# showmount -e 192.168.1.222
Export list for 192.168.1.222:
/data 192.168.1.0/24
6)挂载客户端并测试是否正常
[root@nfs-client1 ~]# mount -t nfs 192.168.1.222:/data /opt
[root@nfs-client2 ~]# mount -t nfs 192.168.1.222:/data /opt
[root@nfs-client1 ~]# echo "mount -t nfs 192.168.1.222:/data /opt" >> /etc/rc.local
[root@nfs-client2 ~]# echo "mount -t nfs 192.168.1.222:/data /opt" >> /etc/rc.local
---以上NFS网络文件系统服务已配置完成,并能实现共享
附上:mount -o重要参数
%为性能*为安全优化重要选项
async |
所有设计到文件系统I/O的操作都是一部处理,即不会同步写到磁盘,此参数会提高性能,但一般生产情况不推荐使用除非对性能要求很好,对数据可靠性要求不高的场景 |
sync% |
该参数和async相反,即有I/O操作时,都会同步处理I/O,即把数据同步写入磁盘,此参数会提高性能但意外情况会造成数据丢失 |
atime |
在每次数据访问时,同步更新每次访问的inode时间,是默认选项,在高并发的情况下明确加上noatime来取消默认项,以提高I/O性能,优化I/O目的 |
ro |
以只读的方式挂载一个文件系统 |
rw% |
以可写的方式挂载文件系统 |
auto |
能够被自动挂载通过-a选项 |
noauto |
不会自动挂载文件系统 |
defaults |
这是fstab里的缺省值,包括rw,suid,dev,exec,auto,nouser,and asvnc. |
exec |
允许文件系统执行二进制文件,取消这个参数可以提高系统安全,但需根据实际应用场景 |
noexec* |
在挂载的文件系统中不允许字节执行任何二进制程序。 |
noatime% |
不更新文件系统上的inode访问时间,高并发环境建议使用该选项提高性能 |
nodiratime% |
不更新文件系统上的directory inode访问时间,高并发环境建议使用该选项 |
nosuid* |
不允许set-user-identifier or set-group-identifier位生效 |
suid |
允许set-user-identifier or set-group-identifier 位生效 |
nouser |
禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项 |
remount% |
让一个文件系统重新可写,救援模式时就需要。如:fstab修改错误导致系统无法启动就需要mount -o remount,rw / 然后修改/etc/fstab |
附上优化建议:
----内核优化:
vim /etc/sysctl.conf #编辑内核配置文件
net.core.wmem_default = 8388608 #发送缓冲区大小的缺省值,缺省设置:124928
net.core.rmem_default = 8388608 #接收缓冲区大小的缺省值,缺省设置:124928
net.core.rmem_max = 16777216 #接收缓冲区大小最大值,缺省设置:124928
net.core.wmem_max = 16777216 #发送缓冲区大小最大值,缺省设置:124928
sysctl -p
----服务端配置文件优化
/data 192.168.1.0/24(rw,sync,all_squash) #全部压缩
----挂载方式:
默认的挂载方式:mount -t nfs 192.168.1.222:/data /opt
本地挂载优化:mount /dev/sdb1 /opt -o defaults,async,noatime,data=writeback,barrier=0
安全的挂载:mount -t nfs -o nosuid,noexec,nodev,rw 192.168.1.222:/data /opt
----有关性能优化的挂载命令:
(1)禁止更新目录及文件时间戳挂载#mount -t nfs -o noatime,nodiratime 192.168.1.222:/data /opt
(2)安全加优化的挂载方式#mount -t nfs -o nosuid,nodev,noexec,noatime,nodiratime,intr,rsize=65536,wsize=65536 192.168.1.222:/data /opt
(3)Centos 6* nfs网络文件系统挂载优化:mount -t nfs -o noatime,nodiratime,nosuid,noexec,nodev,rw,bg,hard,inte, rsize=131072,wsize=131072 192.168.1.222:/data /opt
参考:http://oldboy.blog.51cto.com/
NFS网络文件系统服务(配置实战)的更多相关文章
- NFS网络文件系统安装配置
简介 NFS(Network File System)FS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络共享数据.客户端用mount命令把远程的NFS文件系统挂载到本地即可,操 ...
- NFS网络文件系统的配置
NFS网络文件系统的配置 NFS网络文件系统 NFS(network file system)网络文件系统.一种使用于分散式文件协定,有SUN公司开发.功能是通过网络让不同的机器.不同的操作系统能够分 ...
- NFS 网络文件系统测试笔记
NFS(Network Files System),网络文件系统是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法.它是一种文件系统协议:支持应用程序在客户端通 ...
- (61)zabbix网络发现规则配置实战/详解
开始配置.首先,我们需要定义发现规则,用于扫描.步骤如下 第一步 Configuration >>Discovery>>Create rule,编辑网络发现规则 如上配置,za ...
- Linux实战教学笔记22:企业级NFS网络文件共享服务
目录 第二十二节 企业级NFS网络文件共享服务 第一章 NFS网络文件共享服务 1.1 NFS介绍 1.2 NFS系统原理介绍 1.3 NFS服务端部署环境准备 1.4 NFS server端的设置 ...
- 【集群实战】NFS网络文件共享服务2-mount挂载(参数,优化)
1. NFS客户端挂载深入 1.1 NFS客户端挂载参数说明 在NFS服务端,可以通过cat /var/lib/nfs/etab查看NFS服务器端配置参数的细节. 在NFS客户端,可以通过cat /p ...
- (转)企业级NFS网络文件共享服务
企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...
- NFS网络储存系统
为什么用NFS网络文件存储系统? 1)实现数据信息统一一致 2)节省局域网数据同步传输的带宽 3)节省网站架构中服务器硬盘资源 NFS系统存储原理介绍 RPC服务类似一个中介服务,NFS服务端与NFS ...
- Linux 学习笔记_12_文件共享服务_3_NFS网络文件服务
NFS网络文件服务 NFS---- Network File System 用于UNIX/Linux[UNIX类操作系统]系统间通过网络进行文件共享,用户可以把网络中NFS服务器提供的共享目录挂载到本 ...
随机推荐
- 九. 常用类库、向量与哈希1.Java基础类库
Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便.快捷地开发 Java ...
- Node应用的Systemd启动(转)
作者: 阮一峰 日期: 2016年3月12日 前面的文章介绍了 Systemd 的操作命令和基本用法,今天给出一个实例,如何使用 Systemd 启动一个 Node 应用. 本文是独立的,不需要前面的 ...
- IOS调用WCF提供的服务方法,但是方法的参数是WCF那边自定义的对象,这样有办法调用么,如果可以IOS应该怎么传参呢?请问有了解的么,
最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想到其中碰到不少问题,在网上搜索很久一直没有想到 ...
- 高并发下的Node.js与负载均衡
新兴的Node.js已经吸引了很多开发人员的眼光,它提供给我们一个快速构建高性能的网络应用的平台.我也开始逐步投入node.js的怀抱,在学习和使用的过程中,遇到了一些问题,也有一些经验,我觉得有必要 ...
- 装饰者模式对HttpServletRequest进行增强
package cn.web.servlet; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpS ...
- Webdriver如何启动不同浏览器(python)
WebDriver 支持 Firefox (FirefoxDriver).IE (InternetExplorerDriver).Opera (OperaDriver) 和 Chrome (Chrom ...
- 如何设计好的RESTful API 之好的RESTful API 特征
原文地址:http://blog.csdn.net/ywk253100/article/details/25654021 导读:设计好RESTful API对于软件架构的可扩展性.可伸缩性和消费者的体 ...
- JStorm文档
Jstorm的性能测试 JStorm 大概是Apache Storm 4倍, Apache Flink 1.5 倍, Twitter Heron 2 ~ 10 倍 Jstorm是一个分布式实时计算引擎 ...
- Storm sql 简单测试
准备工作: 1.安装Kafka,启动,以及创建相应的topic 1.启动kafka bin/kafka-server-start.sh config/server.properties > /d ...
- 【HTML 元素】嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式
1.嵌入另一张HTML文档 iframe 元素允许在现有的HTML文档中嵌入另一张文档.下面代码展示了iframe元素的用法: <!DOCTYPE html> <html lang= ...