Linux之我有你也有-共享平台NFS服务器搭建

本文涉及的产品
云防火墙,500元 1000GB
简介:

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 服务器分享目录与 Client 挂载示意图

  就如同上面的图示一般,当我们的 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,所以上述两个软件都有,没有的请自行安装,如果不知道有木有,就用下述指令查看是否有此软件:

1 rpm -qa | grep nfs #查询是否存在nfs 2 rpm -qa | grep rpcbind #查询是否存在rpcbind

NFS搭建

  接下来是搭建了,最重要也是最简单的部分,因为只需编辑好配置文件 /etc/exports 之后,先启动 rpcbind (若已经启动了,就不要重新启动),然后再启动 nfs ,你的 NFS 就成功了! 不过这样的设定能否对客户端生效?那就得要考虑你权限方面的设定能力了。废话少说,我们就直接来看看那个 /etc/exports 应该如何设定吧!某些 distributions 并不会主动提供 /etc/exports 档案,所以请你自行手动建立它吧。有以下三种表达方式:

  method 1:

1 [root@www ~]# vim /etc/exports 2 /tmp 192.168.100.0/24(ro) 3 [分享目录] [主机(权限)]

  method 2:

1 [root@www ~]# vim /etc/exports 2 /tmp localhost(rw) 3 [分享目录] [主机名(权限)]

  method 3:

1 [root@www ~]# vim /etc/exports 2 /tmp *(ro,sync) 3 [分享目录] [通配符表示主机(权限)]

 

  至于权限方面 (就是小括号内的参数) 常见的参数则有:

启动服务器端NFS

  配置文件搞定后,当然要开始来启动才行啊!而前面我们也提到过,NFS 的启动还需要 rpcbind 的协助才行啊! 所以赶紧来启动吧!

1 [root@www ~]# /service rpcbind start 2 # 如果 rpcbind 本来就已经在执行了,那就不需要启动啊! 3 4 [root@www ~]# service nfs start 5 # 有时候某些 distributions 可能会出现如下的警告讯息: 6 exportfs: /etc/exports [3]: No 'sync' or 'async' option specified 7 for export "192.168.100.10:/home/test". 8 Assuming default behaviour ('sync'). 9 # 上面的警告讯息仅是在告知因为我们没有指定 sync 或 async 的参数, 10 # 则 NFS 将默认会使用 sync 的信息而已。你可以不理他,也可以加入 /etc/exports。 11 12 [root@www ~]# service nfslock start 13 [root@www ~]# chkconfig rpcbind on 14 [root@www ~]# chkconfig nfs on 15 [root@www ~]# chkconfig nfslock on

  在你的 NFS 服务器设定妥当之后,我们可以在 server 端先自我测试一下是否可以联机喔!就是利用 showmount 这个指令来查阅! 

1 [root@www ~]# showmount [-ae] [hostname|IP] 2 选项与参数: 3 -a :显示目前主机与客户端的 NFS 联机分享的状态; 4 -e :显示某部主机的 /etc/exports 所分享的目录数据。 5 6 # 1. 请显示出刚刚我们所设定好的相关 exports 分享目录信息 7 [root@www ~]# showmount -e localhost 8 Export list for localhost: 9 /tmp *

  很简单吧!所以,当你要扫瞄某一部主机他提供的 NFS 分享的目录时,就使用 showmount -e IP (或hostname) 即可!非常的方便吧!这也是 NFS client 端最常用的指令喔!

  如果报错的话,有可能是端口被防火墙禁止了,可以开放端口,当然简单粗暴的方法就是关掉防火墙:

1 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 这三个,所以你应该要这样改:

1 [root@www ~]# vim /etc/sysconfig/nfs 2 RQUOTAD_PORT=1001 <==约在 13 行左右 3 LOCKD_TCPPORT=30001 <==约在 21 行左右 4 LOCKD_UDPPORT=30001 <==约在 23 行左右 5 MOUNTD_PORT=1002 <==约在 41 行左右 6 # 记得设定值最左边的批注服务要拿掉之外,埠口的值你也可以自行决定。 7 8 [root@www ~]# /etc/init.d/nfs restart 9 [root@www ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)' 10 100011 2 udp 1001 rquotad 11 100011 2 tcp 1001 rquotad 12 100021 4 udp 30001 nlockmgr 13 100021 4 tcp 30001 nlockmgr 14 100005 3 udp 1002 mountd 15 100005 3 tcp 1002 mountd

  然后将对应的端口号给开放即可。

NFS客户端的挂载

  你要如何挂载 NFS 服务器所提供的文件系统呢?基本上,可以这样做: 

  1. 确认本地端已经启动了 rpcbind 服务!

  2. 扫瞄 NFS 服务器分享的目录有哪些,并了解我们是否可以使用 (showmount);

  3. 在本地端建立预计要挂载的挂载点目录 (mkdir);

  4. 利用 mount 将远程主机直接挂载到相关目录。

  比如说将客户端在 192.168.100.10 这部机器上,而服务器是 192.168.100.254 ,将服务器上的目录挂在在客户端上。 

1 [root@clientlinux ~]# showmount -e 192.168.100.254 2 Export list for 192.168.100.254: 3 /tmp *

  接下来我想要将远程主机的 /home/public 挂载到本地端主机的 /home/nfs/public , 所以我就得要在本地端主机先建立起这个挂载点目录才行啊!然后就可以用 mount 这个指令直接挂载 NFS 的文件系统啰!

1 [root@clientlinux ~]# mkdir -p /home/nfs/public 2 [root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/public /home/nfs/public

  然后看看挂载情况:

1 [root@clientlinux ~]# df 2 文件系统 1K-区段 已用 可用 已用% 挂载点 3 ....(中间省略).... 4 192.168.100.254:/home/public 5 7104640 143104 6607104 3% /home/nfs/public

  不想挂载想取消的话使用如下命令: 

1 [root@clientlinux ~]# umount /home/nfs/public

  好了,今天学习到此为止,赶火车去也~

文章署名:
文章地址: http://www.cnblogs.com/voidy/p/4027310.html



本文转自 linuxzkq 51CTO博客,原文链接:http://blog.51cto.com/linuxzkq/1583295

相关文章
|
11天前
|
存储 Linux Shell
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
24 2
Linux|Transfer.sh 轻松实现文件共享
|
4月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
131 6
|
4月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
84 2
|
4月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
322 2
|
4月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
102 1
|
5月前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN LUN映射出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN光纤网络环境,存储由一组6块硬盘组建的RAID6阵列构成,划分为若干LUN,MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析: 因为业务需要,用户在该光纤存储环境中新增一台SUN SOLARIS操作系统服务器。将存储中的某个LUN映射到新增的服务器上,但是映射的这个卷之前已经MAP到SOLARIS生产系统上的某个LUN上了。因为未及时察觉这个问题,新增服务器已经对该LUN进行部分初始化操作。 在SOLARIS操作系统层面磁盘报错,重启后卷无法挂载。联系SUN工程师检测后,执行了fsck操作。操作完成后虽然文件系统可以挂上,但是发现大量
|
5月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
160 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
NoSQL Ubuntu Linux
Linux平台安装MongoDB
10月更文挑战第11天
137 5
|
5月前
|
固态存储 开发者
阿里云服务器选购之国际版和国内版的平台对比及建议
阿里云服务器选购之国际版和国内版的平台对比及建议
|
6月前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN环境下LUN Mapping出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列,划分若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障: 用户新增了一台服务器,将存储中的某个LUN映射到新增加的这台服务器上。这个映射的LUN其实之前已经MAP到其他SOLARIS操作系统的服务器上了。由于没有及时发现问题,新增加的这台服务器已经对此LUN做了初始化操作,磁盘报错,重启后发现卷无法挂载。