Linux自学笔记——文件共享之NFS

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

NFS:Network File System,网络文件系统,用于实现unix或类unix系统之间通过网络共享资源,而传统的文件系统在内核中实现;
NFS原理:
NFS支持的功能很多,不同的功能会使用不同的进程,每启动一个功能就需要开启一些端口传输数据,因此,NFS功能所对应的端口不是固定的,而是随机取用一些未被使用的端口。这样一来,客户端与NFS服务器之间的沟通就成了一大问题。NFS借助rpc解决这一问题。
RPC(Remote Procedure Call protocol),远程过程调用,函数调用(远程主机上的函数)。一部分功能由本地程序完成,另一部分功能由远程主机上的函数完成;
RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且告知客户端,让客户端可以连接到正确的端口上去。负责RPC服务的一支关键daemon叫做portmap(centos6.x之后称为rpcbind),当服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,portmap就会动态分配端口号给哪些提供NFS服务的相关daemon,因此当client端在对NFS Server提出服务请求时,必须先联系portmap进程(监听在111端口),portmap将NFS服务相关daemon的端口号告知,然后client才知道要跟哪些端口号沟通。
NFS依赖于rpc,所以要启动NFS必须要先启动rpc,否则NFS无法完成端口注册;
版本:NFS由sun公司研发
NFSv1
NFSv2,udp
NFSv3,
NFSv4.0
NFSv4.1, 
NFSv4.2
pNFS: parallel
NIS:Network Information System
身份认证:集中于某服务器完成身份认证
NFS:基于IP的认证
RPC:
NFS:2049/tcp,2049/udp
RPC服务:portmapper
rpcinfo:report RPC information
NFS服务器:nfsd,mountd,idmapd
查看NFS服务器端共享的文件系统:
showmount –e NFSSERVER_IP
 Linux自学笔记——文件共享之NFS
挂载NFS文件系统:
mount –t nfs SERVER:/path/to/sharedfs /path/to/mount_point
配置文件/etc/exports格式:
文件系统 客户端(选项)客户端(选项)
客户端:IP、FQDN或DOMAIN、NETWORK
exportfs:维护exports文件导出的文件系统表的专用工具:
exportfs -ar :重新导出所有的文件系统;
exportfs -au :关闭导出的所有文件系统
exportfs -u FS :关闭指定的导出的文件系统
 Linux自学笔记——文件共享之NFS
Note:此工具一般用于更改exports文件时创建新的共享时,无须重启服务,利用工具重新导出文件系统;
开机自动挂载nfs:
编辑配置文件/etc/fstab;
SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs deaults,_netdev 0 0
补充材料:
/etc/exports文件中的项的格式相当简单。要共享一个文件系统,只需要编辑/etc/exports并使用下面的格式给出这个文件系统(和选项)即可:
Directory(or file system) client1(option1,option2)client2(option1,option2)
常用选项:
有几个常用的选项可以对NFS实现进行定制。这些选项包括:
Secure:这个选项是缺省选项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项。
rw:这个选项允许NFS客户机进行读写访问。缺省选项是只读的。
async:这个选项可以改进性能,但是如果没有完全关闭NFS守护进程就重新启动了NFS服务器,这也可能会造成数据丢失。
no_wdelay:这个选项关闭写延时。如果设置了async,那么NFS就会忽略这个选项。
nohide:如果讲一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项。
no_subtree_check:这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
no_auth_nlm:这个选项也可以作为insecure_locks指定,它告诉NFS守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是auth_nlm或secure_locks。
mp(mountpoint=path):通过显式地声明这个选项,NFS要求挂载所导出的目录。fsid=num;这个选项通常都在NFS故障恢复的情况中使用。如果希望实现NFS的故障恢复,请参考NFS文档。
用户映射
通过NFS中的用户映射,可以将伪或实际用户和组的标识赋给一个正在对NFS卷进行操作的用户。这个NFS用户具有映射所允许的用户和组的许可权限。对NFS卷使用一个通用的用户/组可以提供一定的安全性和灵活性,而不会带来很多管理符合。在使用NFS挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份对文件进行访问的,这些用户缺省情况下多这些文件只有只读权限。这种行为对于root用户来说尤其重要。然而,实际上的确存在这种情况:希望用户以root用户或所定义的其它的用户的身份访问远程文件系统上的文件。NFS允许指定访问远程文件的用户—通过用户标识号(UID)和组标识号(GID),可以禁用正常的squash行为。
用户映射的选项包括:
root_squash:这个选项不允许root用户访问挂载上来的NFS卷。
no_root_squash:这个选项允许root用户访问挂载上来的NFS卷。
all_squash:这个选项对于公共访问的NFS卷来说非常有用,它会限制所有的UID和GID,只使用匿名用户。缺省设置是no_all_squash
anonuid和anongid:这两个选项将匿名UID和GID修改成特定用户和组账号。
客户端挂载时可以使用的特殊选项:
Client
Mounting remote directories
Before mounting remote directories 2 daemons should be be started first:
rpcbind
rpc.statd
rsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。 
The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timeout. After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs. If connecting to a slow server or over a busy network, better performance can be achieved by increasing this timeout value.
The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share.
示例:共享一个文件系统;nfs共享服务端地址:192.168.19.134,客户端地址:192.168.19.130

  1. 创建共享目录;
    Linux自学笔记——文件共享之NFS
  2. 编辑配置文件/etc/exports,定义导出/nfs/sharedata文件至192.168.19.0/24这个网络,但仅192.168.19.130有rw权限,其余均为ro权限;
    Linux自学笔记——文件共享之NFS
    Note:这里我们测试使用,允许root用户访问挂载上来的NFS卷
  3. 启动nfs服务,并查看端口是否开启;
    Linux自学笔记——文件共享之NFS
  4. 用ip地址为192.168.19.130的另一台主机作为客户端,挂载nfs服务的/nfs/sharedata、
    Linux自学笔记——文件共享之NFS
  5. 进入挂载目录,执行写操作,发现写操作失败;
    Linux自学笔记——文件共享之NFS
  6. 在服务端授权一个用户对/nfs/sharedata目录的rwx权限,再在客户端建一个相同uid的用户
    1) 授权一个用户;
    Linux自学笔记——文件共享之NFS
    2) 在客户端新建一个同之上claude用户uid相同的用户;
    Linux自学笔记——文件共享之NFS
    3) 切换claude_liu用户后发现有了写权限;
    Linux自学笔记——文件共享之NFS

示例2:两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡;
环境:web服务器1:192.168.19.134
Web服务器2:192.168.19.130
DNS服务器、mysql服务器:192.168.19.135
NFS服务器:192.168.19.136

  1. 搭建DNS服务器(以下操作在192.168.135服务器上实现)
    1) 安装bind程序包;
    #yum install bind –y
    2) 编辑dns配置文件/etc/named.conf,作如下修改;
    Linux自学笔记——文件共享之NFS
    3) 编辑/etc/named.rfc1912.zones文件,添加如下两个区域
    Linux自学笔记——文件共享之NFS
    4) 编辑/var/named目录下的正向解析库文件;
    Linux自学笔记——文件共享之NFS
    5) 编辑/var/named目录下的反向解析库文件;
    Linux自学笔记——文件共享之NFS
    6) 修改权限;
    Linux自学笔记——文件共享之NFS
    修改属主属组;
    Linux自学笔记——文件共享之NFS
    7) 检查配置文件语法;
    Linux自学笔记——文件共享之NFS
    8) 测试;
    测试正向解析:
    Linux自学笔记——文件共享之NFS
    测试反向解析:
    Linux自学笔记——文件共享之NFS
  2. 搭建NFS服务器(以下操作在192.168.19.136服务器上实现);
    1) 创建共享目录;
    Linux自学笔记——文件共享之NFS
    2) 编辑/etc/exports文件,添加如下内容;
    Linux自学笔记——文件共享之NFS
    3) 启动服务;
    Linux自学笔记——文件共享之NFS
    4) 查看当前共享的目录
    Linux自学笔记——文件共享之NFS
  3. 搭建mysql服务器(以上操作在192.168.19.135服务器上实现);
    1) 创建相关目录,挂载nfs共享目录;
    Linux自学笔记——文件共享之NFS
    2) 创建mysql组和用户;
    Linux自学笔记——文件共享之NFS
    3) 二进制编译安装mariadb-5.5.46;
    解压mariadb-5.5.46-linux-x86_64.tar.gz到/usr/local目录下,并创建链接文件,进入相关目录;
    Linux自学笔记——文件共享之NFS
    4) 属主属组修改;
    Linux自学笔记——文件共享之NFS
    5) 指明用户和数据库位置生成元数据库;
    Linux自学笔记——文件共享之NFS
    查看初始化后生成的数据;
    Linux自学笔记——文件共享之NFS
    6) 复制运行脚本,并将其加入服务列表中;
    Linux自学笔记——文件共享之NFS
    7) 复制配置文件并编辑配置文件添加以下三行;
    Linux自学笔记——文件共享之NFS
    8) 配置环境变量;
    Linux自学笔记——文件共享之NFS
    其中mysql.sh中的内容为:
    export PATH=/usr/local/mysql/bin:$PATH
    9) 启动服务并测试;
    Linux自学笔记——文件共享之NFS
    成功进入mysql;
    Linux自学笔记——文件共享之NFS 
    10) 创建数据库,并创建用户并授权;
    创建数据库;
    Linux自学笔记——文件共享之NFS
    创建用户并授权;
    Linux自学笔记——文件共享之NFS
    刷新权限;
    Linux自学笔记——文件共享之NFS
    至此。Mysql服务器配置完成;
  4. 搭建WEB服务器1(以下操作在192.168.19.134服务器上实现)
    1) 安装相关程序包;
    Linux自学笔记——文件共享之NFS
    2) 创建相关目录,并挂载nfs共享目录;
    Linux自学笔记——文件共享之NFS
    3) 编辑httpd配置文件/etc/httpd/conf/httpd.conf;
    首先,注释以下项;
    Linux自学笔记——文件共享之NFS
    其次,添加虚拟主机;
    Linux自学笔记——文件共享之NFS
    4) 安装wordpress;
    解压缩wordpress程序包;
    Linux自学笔记——文件共享之NFS
    复制wp-config-sample.php文件为wp-config.php,并编辑此配置文件;
    Linux自学笔记——文件共享之NFS
    5) 在/etc/sysconfig/network-scripts/ifcfg-eth0中添加DNS地址;
    Linux自学笔记——文件共享之NFS
    6) 用此web服务器就可以通过域名或者ip地址访问安装wordpress了。
    Linux自学笔记——文件共享之NFS
    7) 在此服务器上发一条动态;
    Linux自学笔记——文件共享之NFS
  5. 搭建web服务器2(以下操作在192.168.19.130上进行)
    搭建的具体过程跟上面一样,建虚拟主机时ip地址改成192.168.19.130即可;
    当我们使用此台服务器访问www.claude666.com 或ip地址时。同时可以看到在192.168.19.134服务器上发步的动态。
    以上就是本次示例的全部过程,两台web服务器,利用dns服务器解析通过mysql存储结构化数据,nfs存储非结构化数据,通过nfs共享,访问应用,以达到负载均衡的效果。


本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/2049872,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
265
分享
相关文章
|
6天前
|
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
26 5
Linux 常用文件查看命令
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
99 1
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
31 2
Linux|Transfer.sh 轻松实现文件共享
|
23天前
|
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
26 3
|
1月前
|
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
42 14
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
82 34
|
3月前
|
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
224 6
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
AIX上如何正确挂载Linux 的nfs共享目录分享篇
AIX上如何正确挂载Linux 的nfs共享目录分享篇
402 1
|
10月前
|
linux 配置NFS
NFS(Network File System)是跨平台的网络文件系统,允许不同操作系统和硬件通过RPC协议共享文件系统。服务端启动RPC服务和NFS,注册端口信息。客户端请求服务器的NFS端口,建立连接进行数据传输。优点包括配置简单、数据可靠、支持多系统间文件共享。缺点包括端口不固定、数据明文传输、安全性较低(基于IP认证)。在Redhat 9环境下,通过安装nfs-utils和rpcbind,配置共享目录和exports文件,设置权限,客户端安装相同软件包,使用showmount命令查看共享,挂载NFS目录,实现透明访问。
223 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等