Network File System

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

#####################################

Local Procedure Call为开发带来的不便

Remote Procedure Call的引入

Network File System

NFS在LAMP架构下的应用

#####################################

Local Procedure Call为开发带来的不便

本地两个进程或进程和内核之间调用函数完成某种功能的过程叫做本地过程调用。

202804732.png

Remote Procedure Call的引入

远程过程调用,不同主机上的两个进程直接依赖于二进制协议通信,它是编程技术及协议,简化分布式应用程序的开发,它一种开发框架,在这种框架下,程序员开发程序无需再考虑网络报文的封装,有RPC底层机制负责完成,RPC本身只是一种协议,它的实现是Portmap。

203432517.pngNetwork File System

一、NFS简介

和ext3、ext2等一样,也位于内核空间作为内核模块工作的,它基于RPC基础实现,不同主机上的两个进程直接依赖于二进制协议通信,它可以让远程文件系统挂载到本地一个目录。nfs-utils是NFS的安装包,包含了三个主进程:

nfsd (文件传输主进程) 固定端口为TCP/UDP 2049端口

mountd (接收客户端挂载请求) 动态向portmap注册端口

quotad (磁盘配额进程) 动态向portmap注册端口

/etc/exports 主配置文件

220006605.png

注意:由于nfs是基于RCP协议实现,所以请确保portmap服务开启

二、NFS工作机制

204942939.png

三、NFS使用方法

文件系统导出属性

1
2
3
4
5
6
7
8
ro                 只读
rw                 读写
sync                同步
async              异步
root_squach        将root用户映射为来宾账号
no_root_squach     非常不安全,客户端管理员此时等于服务器端管理员权限。
all_squash         把用户全部映射为来宾用户,最安全
anonuid,anongid    指定映射的来宾账号UID和GID

简单的通过映射用户ID来标识文件属主和属组,客户端只要有用户ID号跟服务器端一样,就可以具有相应权限,相当不安全,因此通常可以把一个目录或文件锁定为一个服务器端能控制的用户,而所有用户的权限等于此用户的权限,例如:

1
2
3
4
5
6
7
NFS服务端
useradd -u 510 nfstest
touch /shared/nfstest
chownnfstest.nfstest  /shared/nfstest
vim  /etc/exports                           修改主配置文件
/shared192 .168.1.0 /24 (rw,all_squash,anonuid=510,anongid=510)
exportfs -ra

客户端重新挂载并看结果

222108899.png

showmount命令

1
2
3
4
mount -t nfs 192.168.1.30: /shared/tmp/nfs     挂载远程NFS共享目录至本地
showmount -a 192.168.1.30    显示NFS服务器所有文件系统挂载情况
showmount -e 192.168.1.30    显示NFS服务器已被挂在的文件系统和客户端列表
showmount -d 192.168.1.30    显示NFS服务器已被挂在的文件系统列表

exportfs命令(无需重启服务让配置文件生效)

1
2
3
4
5
6
-a
-r    重新导出
-u    取消导出
- v     显示过程
-arv  重新导出配置文件内容
-auv  (取消所有导出文件系统)

开机自动挂载

1
2
vim  /etc/fstab
192.168.1.30: /shared     /tmp/nfs     nfs    defaults,_rnetdev    0    0

让mountd和quotad等进程监听在固定端口

1
2
3
4
5
vim    /etc/sysconfig/nfs
MOUNTD_PORT=892
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769

NFS在LAMP架构下的应用

121701931.png

一、NFS服务器端

部署LAMP平台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
##########################安装LAMP##########################
yum installhttpd httpd-develhttpd                安装httpd
yum installmysql mysql-server mysql-devel mysql  安装mysql
yum installphp53 php53-mbstring php53-mysqlphp   安装php
##########################httpd#############################
#AddDefaultCharset UTF-8                          修改字符集
unzip Discuz_X2.5_SC_GBK.zip                      加压论坛
mvupload/*  /var/www/html/                         发布论坛
service httpd start                               启动服务
##########################mysql#############################
mysqladmin -uroot -p password  'redhat'             为数据库添加密码
grant all privileges on *.* to root@ '%' identified by  'redhat' ;
                                                   远程授权root
service mysqld start                               启动服务
##########################修改权限安装论坛##################
cd /var/www/html
chmod777 config/ data/ data /cache/data/avatar/data/plugindata/data/download/data/addonmd5/data/template/data/threadcache/data/attachment/data/attachment/album/data/attachment/forum/data/attachment/group/data/log/uc_client/data/cache/uc_server/data/uc_server/data/cache/uc_server/data/avatar/uc_server/data/backup/uc_server/data/logs/uc_server/data/tmp/uc_server/data/view/

005009295.png

005022115.png

005131815.png

005242452.png

启动NFS服务

1
2
3
4
5
service portmap status                            检测portmap服务
vim  /etc/exports                                   修改主配置文件
/var/www/html    192.168.1.240(rw,no_root_squash)
exportfs –ra                                      重新导出目
service nfs start                                 启动nfs服务

二、NFS客户端

1
2
3
4
5
6
7
8
###########################安装LAP平台##########################
yum  install  httpd httpd-devel                            安装httpd
yum  install  php53 php53-mbstring php53-mysql             安装php
service httpd start                                      启动服务
##########################NFS客户端#############################
mount  -t nfs 192.168.1.230: /var/www/html  /var/www/html    挂载目录
#AddDefaultCharset UTF-8                                 修改字符集
service httpd start                                      启动服务

三、测试

客户端使用浏览器访问192.168.1.240(NFS客户端)

010809884.png

客户端使用浏览器访问192.168.1.230(NFS服务端)

010949429.png




本文转自 ftmoonfans  51CTO博客,原文链接:http://blog.51cto.com/soulboy/1291982

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
存储 网络协议 Linux
NFS(Network File System 网络文件服务)
NFS(Network File System 网络文件服务)
|
10月前
|
Linux Shell 开发工具
linux编辑文件出现write.error.(file.system.full?)
linux编辑文件出现write.error.(file.system.full?)
163 1
|
Ubuntu Docker 容器
System has not been booted with systemd as init system (PID 1). Can‘t operate.
System has not been booted with systemd as init system (PID 1). Can‘t operate.
355 0
|
Nacos Docker 容器
解决docker启动时报‘Error response from daemon: network xxx not found‘问题
解决docker启动时报‘Error response from daemon: network xxx not found‘问题
4249 0
checking build system type... ./config.guess: unable to guess system type/you must specify one
checking build system type... ./config.guess: unable to guess system type/you must specify one
184 0
|
JavaScript 前端开发
|
JavaScript 前端开发 Shell
|
开发工具 Perl