nfs共享文件系统
NFS服务简介
NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。所以,你也可以简单的将他看做是一个文件服务器 (file server) 呢!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!使用上面相当的便利!
因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器时的困扰, 因为客户端得要知道服务器端的相关端口才能够联机吧!
此时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的端口, 所以当然可以让 NFS 的启动更为轻松愉快了!
所以你要注意,要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。

当客户端有 NFS 档案存取需求时,他会如何向服务器端要求数据呢?
- 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
- 服务器端找到对应的已注册的 NFS daemon 端口后,会回报给客户端;
- 客户端了解正确的端口后,就可以直接与 NFS daemon 来联机。
要设定好 NFS 服务器我们必须要有两个软件才行,分别是:
RPC 主程序:rpcbind
- 就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)
NFS 主程序:nfs-utils
- 就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件啦!一定要有喔!
NFS安装
服务端配置
安装nfs相关包
[root@bogon test]# yum install nfs-utils rpcbind
在NFS服务端上创建共享目录/share1并设置权限
[root@bogon test]# mkdir /share1
[root@bogon test]# chmod 777 /share1/
编辑export文件
[root@bogon test]# cat /etc/exports
/share1 192.168.254.0/(rw,no_root_squash,no_all_squash,sync) 参数说明:
sync 代表数据会同步写入到硬盘中
async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 不论登入 NFS 的使用者身份为何, 均被映射为匿名用户
no_all_squash 不论登入NFS的使用者身份为何,均被映射为最高权限用户
使配置生效
[root@bogon test]# exportfs -r
启动rpcbind、nfs服务
[root@bogon test]# systemctl restart rpcbind nfs
客户端配置
查看服务器端暴露的nfs
[root@bogon mnt]# showmount -e 192.168.254.11
Export list for 192.168.254.11:
/share1 192.168.254.0/
创建目录并挂载
[root@bogon /]# mkdir /share
[root@bogon ~]# mount -t nfs 192.168.254.11:/share1 /share/
查看是否挂载成功
[root@bogon /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G .8G 48G % /
devtmpfs 475M 475M % /dev
tmpfs 487M 487M % /dev/shm
tmpfs 487M 7.7M 479M % /run
tmpfs 487M 487M % /sys/fs/cgroup
/dev/sda1 1014M 133M 882M % /boot
/dev/mapper/centos-home 67G 33M 67G % /home
tmpfs 98M 98M % /run/user/
192.168.254.11:/share1 50G 2.8G 48G 6% /share
nfs共享文件系统的更多相关文章
- exportfs - 管理NFS共享文件系统列表
概述 (SYNOPSIS) /usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..] /usr/sbin/exportfs -r [-v] ...
- Openmpi 编译安装+集群配置 + Ubuntu14.04 + SSH无密码连接 + NFS共享文件系统
来源 http://www.open-mpi.org/ 网络连接 SSH连接,保证各台机器之间可以无密码登陆,此处不展开 hosts文件如下 #/etc/hosts 192.168.0.190 mas ...
- NFS共享文件系统部署
1. 概述 本篇博客主要是介绍如何安装和使用NFS服务. 2. 安装软件包 首先确认系统是否已经安装相应的软件包,执行命:rpm -qa | egrep "rpcbind|nfs-utils ...
- NFS共享存储服务部署
第1章 NFS介绍 1.1 NFS基本概述 NFS(Network File System)网络文件系统 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. NFS系统和Windows网络 ...
- NFS网络共享文件系统
1.nfs服务端配置操作 1.1 创建所需的共享目录--源 mkdir /data/rw #rw代表同步的数据可读可写 1.2 对共享目录进行授权 chown -R nfsnobody.nfsno ...
- NFS文件系统及搭建NFS共享服务
一.什么是文件系统? 文件系统是对一个存储设备上的数据和元数据进行组织的一种机制.文件系统是在一个磁盘(包括光盘.软盘.闪盘及其它存储设备)或分区上组织文件方式方法,常见文件系统如ext2.ext3. ...
- Linux系统NFS网络文件系统
Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到 ...
- NFS 网络文件系统挂载在A8板子上
我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...
- [学习嵌入式开发板]iTOP-4412实现NFS网络文件系统
本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是 ...
随机推荐
- ios中仿蚂蚁森林动画效果
参考链接:https://www.jianshu.com/p/0ba9d80f8e77 demo下载链接:https://gitee.com/ovix/TreeWithRandomFruitBtn
- smobiler自适应不同手机分辨率
在smobiler中可以通过相对布局或者绝对布局实现自适应不同手机分辨率. 例如实现下图中的布局,图中的布局实际可以分成3个部分,部分1可以使用Title控件,部分2可以使用Panel(在Panel中 ...
- 【Gradle】Java Gradle 插件
Java Gradle 插件 如何应用 apply plugin:'java' Java插件约定的项目结构 Project |--build.gradle |--src |--main |--java ...
- Python 定义常量
常量在编写程序的时候,一旦设定就不能再进行变动,常量一种约定俗成的方式,所有字母大写并用下划线分隔单词的方式(如MAX_VALUE, OUT_TIME等),但是python没有提供设置常量用法,需要自 ...
- Django2.1.1与xadmin0.6.0遇到的坑(一)
(1)django2.0把from django.core.urlresolvers修改成了django.urls 异常信息: ModuleNotFoundError: No module named ...
- Druid-代码段-4-1
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程4,丢弃连接的守护线程: //连接池瘦身,参考主流程4 public class DestroyConnectionThr ...
- P4287 [SHOI2011]双倍回文
题意 考虑对每个节点\(x\)维护\(lastpos_x\)表示\(x\)的所有后缀回文串中第一个\(len\leqslant len_x/2\)并且能和\(x\)最后一个字符匹配的,之后枚举节点,判 ...
- 向github中已创建好的repository提交文件
git init git remote add origin git@github.com:taishan1994/learn_django.git git pull origin master gi ...
- PHP实现Redis分布式锁
锁在我们的日常开发可谓用得比较多.通常用来解决资源并发的问题.特别是多机集群情况下,资源争抢的问题.但是,很多新手在锁的处理上常常会犯一些问题.今天我们来深入理解锁. 一.Redis 锁错误使用之一 ...
- #3145. 「APIO 2019」桥梁
#3145. 「APIO 2019」桥梁 题目描述 圣彼得堡市内所有水路长度总和约 282 千米,市内水域面积占城市面积的 7%.--来自维基百科 圣彼得堡位于由 \(m\) 座桥梁连接而成的 \(n ...