Linux之我有你也有-共享平台NFS服务器搭建
Linux之我有你也有-共享平台NFS服务器搭建
最近因工作需要,所以要搭一个共享的服务器用于存储。实现你有我有大家有的共享的和谐局面。想到了NFS-Network File System。接下来我便说一说NFS以及有关它的搭建。
什么是NFS
搜索引擎哪家强,有事问度娘(好吧,我承认技术性问题我问的是谷歌,此处为了押韵,不用介怀),度娘是这么解释NFS的:
NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS这个通过网络共享文件系统的服务在搭建的时候是很简单的,不过,它最大的问题在于“权限”。因为在客户端与服务器端必须具有相同的账号才能够访问某些目录或文件。另外,NFS 的启动需要透过所谓的远程过程调用 (RPC),也就是说,我们并不是只要启动 NFS 就好了, 还需要启动 RPC 这个服务才行啊!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!使用上面相当的便利!

就如同上面的图示一般,当我们的 NFS 服务器设定好了分享出来的 /home/sharefile 这个目录后,其他的 NFS 客户端就可以将这个目录挂载到自己系统上面的某个挂载点 (挂载点可以自定义),例如前面图示中的 NFS client 1 与 NFS client 2 挂载的目录就不相同。我只要在 NFS client 1 系统中进入 /home/data/sharefile 内,就可以看到 NFS 服务器系统内的 /home/sharefile 目录下的所有数据了 (当然,权限要足够啊!^_^)!这个 /home/data/sharefile 就好像 NFS client 1 自己机器里面的一个 partition 喔!只要权限对了,那么你可以使用 cp, cd, mv, rm... 等等磁盘或档案相关的指令!真是方便之极啊!
NFS的搭建之所需的软件
RPC主程序:rpcbind
我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行!
NFS主程序:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件啦!一定要有喔!
因为我用的是CentOS6.5,所以上述两个软件都有,没有的请自行安装,如果不知道有木有,就用下述指令查看是否有此软件:
rpm -qa | grep nfs #查询是否存在nfs
rpm -qa | grep rpcbind #查询是否存在rpcbind
NFS搭建
接下来是搭建了,最重要也是最简单的部分,因为只需编辑好配置文件 /etc/exports 之后,先启动 rpcbind (若已经启动了,就不要重新启动),然后再启动 nfs ,你的 NFS 就成功了! 不过这样的设定能否对客户端生效?那就得要考虑你权限方面的设定能力了。废话少说,我们就直接来看看那个 /etc/exports 应该如何设定吧!某些 distributions 并不会主动提供 /etc/exports 档案,所以请你自行手动建立它吧。有以下三种表达方式:
method 1:
[root@www ~]# vim /etc/exports
/tmp 192.168.100.0/(ro)
[分享目录] [主机(权限)]
method 2:
[root@www ~]# vim /etc/exports
/tmp localhost(rw)
[分享目录] [主机名(权限)]
method 3:
[root@www ~]# vim /etc/exports
/tmp *(ro,sync)
[分享目录] [通配符表示主机(权限)]
至于权限方面 (就是小括号内的参数) 常见的参数则有:

启动服务器端NFS
配置文件搞定后,当然要开始来启动才行啊!而前面我们也提到过,NFS 的启动还需要 rpcbind 的协助才行啊! 所以赶紧来启动吧!
[root@www ~]# /service rpcbind start
# 如果 rpcbind 本来就已经在执行了,那就不需要启动啊! [root@www ~]# service nfs start
# 有时候某些 distributions 可能会出现如下的警告讯息:
exportfs: /etc/exports []: No 'sync' or 'async' option specified
for export "192.168.100.10:/home/test".
Assuming default behaviour ('sync').
# 上面的警告讯息仅是在告知因为我们没有指定 sync 或 async 的参数,
# 则 NFS 将默认会使用 sync 的信息而已。你可以不理他,也可以加入 /etc/exports。 [root@www ~]# service nfslock start
[root@www ~]# chkconfig rpcbind on
[root@www ~]# chkconfig nfs on
[root@www ~]# chkconfig nfslock on
在你的 NFS 服务器设定妥当之后,我们可以在 server 端先自我测试一下是否可以联机喔!就是利用 showmount 这个指令来查阅!
[root@www ~]# showmount [-ae] [hostname|IP]
选项与参数:
-a :显示目前主机与客户端的 NFS 联机分享的状态;
-e :显示某部主机的 /etc/exports 所分享的目录数据。 # . 请显示出刚刚我们所设定好的相关 exports 分享目录信息
[root@www ~]# showmount -e localhost
Export list for localhost:
/tmp *
很简单吧!所以,当你要扫瞄某一部主机他提供的 NFS 分享的目录时,就使用 showmount -e IP (或hostname) 即可!非常的方便吧!这也是 NFS client 端最常用的指令喔!
如果报错的话,有可能是端口被防火墙禁止了,可以开放端口,当然简单粗暴的方法就是关掉防火墙:
service iptables stop
或者不想简单粗暴的就这样做,
一般来说, NFS 的服务仅会对内部网域开放,不会对因特网开放的。然而,如果你有特殊需求的话, 那么也可能会跨不同网域就是了。但是,NFS 的防火墙特别难搞,为什么呢?因为除了固定的 port 111, 2049 之外, 还有很多不固定的埠口是由 rpc.mountd, rpc.rquotad 等服务所开启的,所以,你的 iptables 就很难设定规则! 那怎办?难道整个防火墙机制都要取消才可以?
为了解决这个问题, CentOS 6.x 有提供一个固定特定 NFS 服务的埠口配置文件,那就是 /etc/sysconfig/nfs 啦! 你在这个档案里面就能够指定特定的埠口,这样每次启动 nfs 时,相关服务启动的埠口就会固定,如此一来, 我们就能够设定正确的防火墙啰!这个配置文件内容很多,绝大部分的数据你都不要去更改,只要改跟 PORT 这个关键词有关的数据即可。 那么需要更改的 rpc 服务有哪些呢?主要有 mountd, rquotad, nlockmgr 这三个,所以你应该要这样改:
[root@www ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT= <==约在 行左右
LOCKD_TCPPORT= <==约在 行左右
LOCKD_UDPPORT= <==约在 行左右
MOUNTD_PORT= <==约在 行左右
# 记得设定值最左边的批注服务要拿掉之外,埠口的值你也可以自行决定。 [root@www ~]# /etc/init.d/nfs restart
[root@www ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)'
udp rquotad
tcp rquotad
udp nlockmgr
tcp nlockmgr
udp mountd
tcp mountd
然后将对应的端口号给开放即可。
NFS客户端的挂载
你要如何挂载 NFS 服务器所提供的文件系统呢?基本上,可以这样做:
- 确认本地端已经启动了 rpcbind 服务!
- 扫瞄 NFS 服务器分享的目录有哪些,并了解我们是否可以使用 (showmount);
- 在本地端建立预计要挂载的挂载点目录 (mkdir);
- 利用 mount 将远程主机直接挂载到相关目录。
比如说将客户端在 192.168.100.10 这部机器上,而服务器是 192.168.100.254 ,将服务器上的目录挂在在客户端上。
[root@clientlinux ~]# showmount -e 192.168.100.254
Export list for 192.168.100.254:
/tmp *
接下来我想要将远程主机的 /home/public 挂载到本地端主机的 /home/nfs/public , 所以我就得要在本地端主机先建立起这个挂载点目录才行啊!然后就可以用 mount 这个指令直接挂载 NFS 的文件系统啰!
[root@clientlinux ~]# mkdir -p /home/nfs/public
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/public /home/nfs/public
然后看看挂载情况:
[root@clientlinux ~]# df
文件系统 1K-区段 已用 可用 已用% 挂载点
....(中间省略)....
192.168.100.254:/home/public
% /home/nfs/public
不想挂载想取消的话使用如下命令:
[root@clientlinux ~]# umount /home/nfs/public
好了,今天学习到此为止,赶火车去也~
Linux之我有你也有-共享平台NFS服务器搭建的更多相关文章
- NFS服务器搭建-共享PC与ARM主板文件
NFS服务器搭建-共享PC与ARM主板文件 在搭建好交叉编译环境之后需要实现目标板与宿主机的文件共享,在这里选择NFS,由于资料较多.需要注意的以下几点: 目标板与宿主机需要连接在同一个网段内. 宿主 ...
- Linux NFS服务器搭建
1.NFS:NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源. 在NFS的应用中,本地N ...
- 在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器
在这篇文章中我们会介绍配置基于 Kerberos 身份验证的 NFS 共享的整个流程.假设你已经配置好了一个 NFS 服务器和一个客户端.如果还没有,可以参考 安装和配置 NFS 服务器[2] - 它 ...
- 一起来学linux:NFS服务器搭建
p { margin-bottom: 0.25cm; line-height: 120% } a:link { } nfs是network file system的缩写,作用在于让不同的网络,不同的机 ...
- Linux笔记③(ftp、nfs、ssh服务器搭建)
1.ftp服务器搭建(利用vsftpd这个工具) 作用:文件的上传和下载 服务器端: 修改配置文件,配置文件目录:/etc/vsftpd.conf ,修改里面的允许匿名访问.指定匿名访问目录等操作,根 ...
- 在linux下搭建NFS服务器实现文件共享
目录 一.关于NFS 二.搭建一台NFS服务器共享特定资源 三.调优 一.关于NFS 1.NFS是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系 ...
- 负载均衡LVS之DR(附:NFS共享存储) 五分钟搭建手册
一:DR-模式 调度器Ip:192.168.1.254 服务器ip:192.168.1.1/192.168.1.2 VIP:192.168.1.10 ——配置负载均衡调度器: 关闭重定向响应配置: V ...
- 05.Linux系统-WCP知识共享平台安装部署(旗舰版)
WCP知识共享平台部署 一.环境准备 操作系统:CentOS Linux release 7.5.1804 (Core) Java:jdk-7u79-linux-x64.tar.gz 中间件:apac ...
- 在Linux使用GCC编译C语言共享库
在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...
随机推荐
- django ORM 简单示例简绍
简单 models 操作 class Host(models.Model): nid = models.AutoField(primary_key=True) #Nid为主键 hostname = m ...
- COGS 750. 栅格网络流
★★☆ 输入文件:flowa.in 输出文件:flowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决 ...
- 论overflow滚动的重要性
原理 设置一个块级作用域溢出的效果,只需要在外部块的位置上设置overflow:scroll和height:xx即可. 此时,块级作用域的内容位移超出外部块的位移就会出现滚动条,当内部块滚动时,我们能 ...
- 日常入新坑,py一下
首先是IDE,因为我经常在Ubuntu 18和win 10两个系统换来换去,所以IDE必须要能跨平台,所以这里就选了PyCharm.Py划重点—— 从Jet Brains的网站下载安装包,直接跟着默认 ...
- 在linux 下为sublime Text 2 配置c#编译环境
各位看官别笑我,在虚拟机上跑了了xp xp里面安装了vs2008,然后电脑性能实在是太差了,所以装sublime用来编写代码,然后再统一由vs2008来调试. 说正事. 安装好sublime 之后, ...
- Python读取图片,并保存为矩阵
from scipy.misc import imread,imshow img = imread('D:test.bmp') print img[:,:,2].shape imshow() 注意im ...
- JDBC开发,数据库的连接
JDBC开发步骤 1.建完工程后,右击工程,new,新建一个文件夹Folder,装jar包, 2.将下载好的驱动包打开,找到jar文件,CTRL+C,选中装jar包的文件夹,CTRL+V ...
- 绑定Ligerui中的ligerComboBox二级联动
$.ajax({ url: "HRHandler.ashx", data: "bz=getDepartData", cache: false, type: &q ...
- 第十三篇、OC_UICollectionView的基本配置
- (UICollectionView *) categoryCollectionView { if (! _categoryCollectionView) { // 创建布局 UICollectio ...
- SAP 日志管理
现在项目上自开发的dialog程序越来越多,有很多敏感数据需要像SAP标准的业务一样,能看到所有的修改日志,要想实现日志的功能,有以下几个办法: 办法一.建一个日志表,在原有表的基础上,加上日期和时间 ...