Linux基础服务下NFS文件服务器实战必备

Posted Python编程学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础服务下NFS文件服务器实战必备相关的知识,希望对你有一定的参考价值。


1.
NFS文件服务器简介


NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。


NFS在文件传送或信息传送过程中依赖于RPC协议,RPC远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制,NFS本身是没有提供信息传输的协议和功能的。


NFS应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用MFS、TFS、HDFS、GFS等等分布式文件系统。

2.
NFS文件服务器原理


NFS(网络文件系统):让网络上的不同linux/unix系统机器实现文件共享

nfs本身只是一种文件系统,没有提供文件传递的功能,但却能让我们进行文件的共享,原因在于 NFS 使用RPC服务,用到NFS的地方都需要启动RPC服务,无论是NFS客户端还是服务端

nfs和rpc的关系:nfs是一个文件系统,负责管理分享的目录;rpc负责文件的传递

nfs启动时至少有rpc.nfsd和rpc.mountd2个daemon

rpc.nfsd主要是管理客户机登陆nfs服务器时,判断改客户机是否能登陆,和客户机ID信息。

Rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。

协议使用端口:

RPC:111 tcp/udp

nfsd:  2049 tcp/udp

mountd:RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯 ,可以在/etc/nfsmount.conf文件中指定mountd的端口

Linux基础服务下NFS文件服务器实战【必备】

3.
NFS文件服务器实战


yum  install  nfs*  -y 如下图,安装成功即可。

Linux基础服务下NFS文件服务器实战【必备】

NFS安装完毕,需要创建共享目录,共享目录在vi  /etc/exports文件里面配置,可配置参数如下:

/data/      *(rw,no_root_squash,no_all_squash,sync)

配置文件中添加如上一行,然后重启Portmap,NFS服务即可

service  portmap restart ;service  nfs  restart

第一列/data/表示需要共享的目录。

IP表示允许哪个客户端访问。

IP后括号里的设置表示对该共享文件的权限。

ro                      只读访问;

rw                      读写访问;

sync                    所有数据在请求时写入共享;

all_squash              共享文件的UID和GID映射匿名用户anonymous;

no_all_squash           保留共享文件的UID和GID(默认) ;

root_squash             root用户的所有请求映射成如anonymous用户一样的权限;

no_root_squash          root用户具有根目录的完全管理访问权限。

Linux客户端,如何想使用这个NFS文件系统,需要在客户端挂载,挂载命令为:

mount –t  nfs  192.168.1.103:/data/    /mnt 即可。

如果有报错根据错误信息排查。常见问题有rpc服务没有启动、防火墙没关闭、selinux未关闭等问题。(拓展* 有兴趣的童鞋可以研究MFS(分布式文件系统)。

4.
进程与线程概念及区别


Linux系统各种软件和服务,存在于系统,必然会占用系统各种资源,系统资源是如何分配及调度的呢,本节将给读者展示系统进程、资源及调度相关的内容。


进程(Process)是计算机中的软件程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器。软件程序是对指令、数据及其组织形式的描述,而进程是程序的实体,通常而言,把运行在系统中的软件程序称之为进程。


除了进程,读者通常会听到线程的概念,线程也被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有操作系统资源,但是该线程可与同属进程的其它线程共享该进程所拥有的全部资源。


程序、进程、线程三者区别如下:

程序:程序并不能单独执行,是静止的,只有将程序加载到内存中,系统为其分配资源后才能够执行;

进程:程序对一个数据集的动态执行过程,一个进程包含一个或者更多的线程,一个线程同时只能被一个进程所拥有,进程是分配资源的基本单位。进程拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率。

线程:线程是进程内的基本调度单位,线程的划分尺度小于进程,并发性更高,线程本身不拥有系统资源, 但是该线程可与同属进程的其它线程共享该进程所拥有的全部资源。每一个独立的线程,都有一个程序运行的入口、顺序执行序列、和程序的出口。

如图8-1所示,程序、进程、线程三者的关系拓扑图:

Linux基础服务下NFS文件服务器实战【必备】


如上图8-1所示,多进程、多线程的区别如下:

多进程,每个进程互相独立,不影响主程序的稳定性,某个子进程崩溃对其他进程没有影响,通过增加CPU可以扩充软件的性能,可以减少线程加锁/解锁的影响,极大提高性能。缺点是多进程逻辑控制复杂,需要和主程序交互,需要跨进程边界,进程之间上下文切换比线程之间上下文切换代价大。

6.
Linux干货分享区


 大家好,我有以下资料送给大家
1、Linux云计算初级学习
2、nginx高可用web实战演练
3、K8S(Kubernetes)云计算案例实战


Linux基础服务下NFS文件服务器实战【必备】 
Linux基础服务下NFS文件服务器实战【必备】扫描下方二维码加小江老师微信前15名免费领取,最新架构师全套教程+文档! 加美女小江老师微信领取:jfxj12345


京峰教育:专注架构师培养,不做运维背锅侠,因为月薪10k没有意义 

以上是关于Linux基础服务下NFS文件服务器实战必备的主要内容,如果未能解决你的问题,请参考以下文章

我的Linux,我做主!常用共享存储--NFS服务配置应用与实战

NPS服务器搭建与autofs自动挂载

集群实战NFS服务常见故障排查和解决方法

Linux centos 7 安装NFS服务

linux基础nfs服务和计划任务crond服务

实战NFS文件共享存储详解