linux运维、架构之路-nfs网络文件系统
一、nfs介绍
NFS是Network File System的缩写,是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录,主要存储用户上传的图片附件等信息。
nfs共享文件实现原理
1、nfs工作原理
nfs服务端
① 先启动rpc服务 /etc/init.d/rpcbind start
② 再启动nfs服务 /etc/init.d/nfs start
③ nfs向rpc注册端口和功能,端口号为111
nfs客户端
① 先启动rpc服务 /etc/init.d/rpcbind start
② mount命令进行挂载
③ 向对端rpcbind请求nfs服务端口,nfs服务端返回端口信息
2、RPC服务介绍
相当于租房中的中介,NFS服务启动会产生多个进程和多个端口,不便于客户端进行连接访问,通过RPC服务接收NFS端口信息的注册,并通过开启RPC服务生成111端口,提供客户端进行访问
二、nfs服务部署
1、nfs服务端
①安装nfs和rpc服务软件
rpm -qa nfs-utils rpcbind yum install nfs-utils rpcbind -y
②修改nfs配置文件
cat >>/etc/exports<<EOF /data 172.16.1.0/24(rw,sync) EOF
③启动rpc、nfs服务
/etc/init.d/rpcbind start /etc/init.d/nfs start
④创建共享目录并授权
mkdir /data -p chown -R nfsnobody.nfsnobody /data id nfsnobody
⑤重启nfs服务
/etc/init.d/nfs reload #平滑重启 /etc/init.d/nfs restart #强硬重启
⑥检查并测试nfs挂载服务
showmount -e 172.16.1.31 #检查共享目录列表信息 mount -t nfs 172.16.1.31:/data /mnt
2、nfs客户端
①安装nfs和rpc服务软件
yum install nfs-utils rpcbind -y
②测试nfs共享目录挂载
mount -t nfs 172.16.1.31:/data /mnt
③卸载目录
退出共享目录,再进行卸载 umount /mnt 不退出共享目录,强制进行卸载 umount -lf /mnt -l Lazy unmount #懒惰的卸载 -f Force unmount #强制的卸载
三、nfs配置文件详解
1、nfs授权客户端地址配置说明
客户端地址 |
具体地址 |
说明 |
授权单一客户端访问NFS |
172.16.1.41 |
一般情况,生产环境中此配置不多 |
授权整个网段访问NFS |
172.16.1.0/24 |
生产环境中最常用的配置,简单、方便 |
授权整个网段访问NFS |
172.16.1.* |
指定网段的另一种写法(不推荐使用) |
授权某个域名客户端访问 |
nfs.oldboyedu.com |
此方法生产中一般情况不常用 |
授权整个域名客户端访问 |
*.oldboyedu.com |
此方法生产中一般情况不常用 |
2、nfs权限参数
参数名称 |
参数说明 |
rw ****** |
read-write表示可读写权限 |
ro |
read-only表示只读权限 |
sync ****** |
请求或写入数据时,数据同步写到nfs-server的硬盘才返回 优点,数据安全不会丢;缺点,性能比不启用该参数要差 |
async ****** |
写入数据时先写到缓冲区,直到硬盘有空档才会再写入磁盘,这样可以提升写入效率,如果服务器宕机或不正常关机,会损失缓存区中未写入磁盘的数据 |
no_root_squash |
保持root用户不进行压缩 访问nfs server共享目录的用户如果是root的话,它对该目录有root权限,这个配置原本是为无盘客户端准备的,用户应避免使用 |
root_squash |
如果访问nfs server共享目录的用户是root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份 |
all_squash ****** |
对所有访问的用户身份压缩成匿名用户,同时变成nfsnobody身份 生产中配置NFS的重要技巧: 1、 确保所有客户端服务器对NFS共享目录具备相同用户访问权限 a、 all_squash把所有客户端都压缩成固定的匿名用户(UID相同) b、 就是anonuid,anongid指定的UID和GID的用户 2、所有的客户端和服务端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同) |
anonuid ****** |
指定匿名用户的UID 这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID,但是这个UID必须存在于/etc/passwd中,如多台web共享一个nfs目录,通过这个参数可以使得不同的nfs客户端写入的数据对所有NFS客户端保持同样的用户权限,即为配置的匿名UID对应用户权限,一般默认即可 |
anongid ****** |
指定匿名用户的GID,区别就是把UID(用户ID)换成GID(组ID) |
四、nfs客户端挂载参数
参数 |
参数意义 |
系统默认参数 |
suid nosuid |
当挂载的文件系统上有任何SUID的程序时,只要使用nosuid就能够取消 |
suid |
rw ro |
可以指定文件系统是只读(ro)还是可写(rw) |
rw |
dev nodev |
是否可以保留装置文件的特殊功能?一般来说只有/dev,才会有特殊的装置,因此可以选择nodev |
dev |
exec noexec |
是否具有执行文件的权限?如果想要挂载的仅是普通资源数据区(例如:图片、附件)那么可以选择noexec |
exec |
user nouser |
是否允许普通用户拥有文件的挂载与卸载功能,如果要保护文件系统,最好不要为普通用户提供挂载与卸载功能 |
nouser |
auto noauto |
这个auto指的是”mount -a”时会不会挂载的项目,如果不需要这个分区随时挂载,可以设置为noauto |
auto |
soft hard |
当nfs客户端以soft挂载server时,若网络或server出现问题,造成客户端和server无法传输资料,客户端就会一直尝试,直到timeout后显示错误才停止,若用hart模式挂载硬盘时,刚好与soft相反,客户端一直尝试连接到server 若server有回应就继续刚才的操作,若没有回应客户端会一直尝试 |
hard |
intr |
当使用hart挂载的资源timeout后,若有指定的intr参数,可以在timeout后把它中断掉,避免出问题时系统整个被nfs锁死,建议使用intr |
无 |
rsize wsize |
读出与写入的区块大小,这个设置可以影响客户端与server端传输数据的缓冲存储量,在局域内,客户端与server都具有足够的内存,这个值可以设置大一点,提升缓冲区块提升nfs文件系统的传输能力,但也不能设置太大,最好以网络能够传输最大值为限 |
五、企业nfs共享存储优化
1、服务端
①硬件:多块sas/ssd磁盘,raid0/raid5/raid10,网上吞吐量要大,至少千兆(多块bond)
②NFS服务端配置:/data 172.16.1.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
③内核优化,优化nfs读写速度
cat >>/etc/sysctl.conf<<EOF net.core.wmem_default=8388608 net.core.rmem_default=8388608 net.core.rmem_max=16777216 net.core.wmem_max=16777216 EOF sysctl -p
2、客户端
①nfs客户端挂载参数建议
mount –t nfs –o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,wsize=131072 172.16.1.31 :/data /mnt
②禁止更新目录及文件时间戳挂载
mount –t nfs –o noatime,nodiratime 172.16.1.31:/data /mnt
③追求极致,可以使用下面参数挂载
mount –t nfs –o fg,hard,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt
④经过实际测试,CentOS6.X默认的挂载参数性能还是不错的,简单,方便
mount –t nfs 172.16.1.31:/data /mnt
六、 autofs自动挂载
①设置开机不一定要挂载的目录,当用的时候才实现自动挂载。
②用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟)
1、客户端安装autofs
yum install autofs -y
2、nfs服务端创建共享目录、授权
mkdir /oldboy -p chown -R nfsnobody.nfsnobody /oldboy/ [root@nfs-nfs01 oldboy]# cat /etc/exports /oldboy 172.19.5.0/24(rw,sync,all_squash) /etc/init.d/nfs reload
3、客户端修改autofs配置文件
echo "/nfs /etc/auto.nfs" >>/etc/auto.master #主配置文件,/nfs表示挂载点,auto.nfs表示所应用的配置文件 echo "* -rw 172.19.5.31:/oldboy/" >>/etc/auto.nfs #表示要挂载点,也可以指定/nfs,rw表示可读写权限 172.19.5.31:/oldboy/ #nfs共享目录 /etc/init.d/autofs restart #重启服务
4、nfs服务端查看共享目录下内容
[root@nfs-nfs01 oldboy]# ll /oldboy/ total 4 -rw-r--r-- 1 nfsnobody nfsnobody 0 Aug 23 16:09 abc.log drwxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 23 14:52 onlylady
5、客户端autofs查看
[root@test02 nfs]# ll /nfs/ total 0 #此时查看为空 [root@test02 oldboy]# df –h #查看挂载点也没有 Filesystem Size Used Avail Use% Mounted on /dev/xvda3 6.9G 2.9G 3.7G 44% / tmpfs 497M 12K 497M 1% /dev/shm /dev/xvda1 190M 66M 115M 37% /boot [root@test02 oldboy]# cd /nfs/ #进入挂载点/nfs [root@test02 nfs]# cd oldboy #只有cd进行入到nfs共享目录oldboy下面,立马激活,自动挂载 [root@test02 oldboy]# ll total 4 -rw-r--r-- 1 nfsnobody nfsnobody 0 Aug 23 14:52 b.txt drwxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 23 14:52 onlylady [root@test02 oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda3 6.9G 2.9G 3.7G 44% / tmpfs 497M 12K 497M 1% /dev/shm /dev/xvda1 190M 66M 115M 37% /boot 172.19.5.31:/oldboy/ 6.9G 1.7G 4.9G 26% /nfs/oldboy
转载于:https://www.cnblogs.com/yanxinjiang/p/7419469.html
linux运维、架构之路-nfs网络文件系统相关推荐
- Linux运维架构师、SRE技术图谱
Linux运维架构师.SRE技术图谱 Web服务器: apache, tomcat, nginx, lighttpd, varnish 监控: nagios. ganglia. cacti. zabb ...
- linux运维架构师职业规划
1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是"鸟哥的私房菜",讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服 ...
- linux运维架构篇
集群规划说明 集群架构概念图示 集群案例规划 集群主机规划表 关于主机规划注意事项: 灰色IP地址属于临时使用,企业场景一般没有. 负载均衡器的 VIP10.0.0.3/24 带外网IP的服务器的内网 ...
- Linux运维提升之路
目录 运维的职业现状 运维的工作 运维的晋升空间 运维要掌握的必备技能 初级: 中级: 高级: 资深: 运维的时间管理 首先,在进做IT运维行业前,你一定要做好心理准备,这并不是一个轻松的工作,工作中 ...
- www.yaxjf.com+m.php,linux运维架构--PHP开发-零基础学习PHP视频教程
Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...
- httpqyl.php,linux运维架构--PHP开发-零基础学习PHP视频教程
Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...
- linux运维开发之路(一)— 基础知识篇
一. 虚拟机管理 虚拟机管理的基本命令 [kiosk@foundation6 Desktop]$ rht-vmctl start desktop ## 打开虚拟机 ## [ki ...
- Linux运维基础进阶——PPT汇总
Linux运维基础 admin day1--云网络基础 day2--Linux系统简介.安装Linux系统.Linux基本操作 day3--命令行基础.目录和文件管理 day4--管理用户和组.tar ...
- Linux运维工程师岗位前景及学习路线
Linux运维工程师岗位前景及学习路线 1.1 什么是Linux? 大家日常使用电脑听歌.打游戏娱乐或处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行 ...
最新文章
- CSP 201912-2 回收站选址 python实现+详解
- Java日志的心路历程
- 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!
- 用viewport进行布局,将页面分成了三分,我想实现弹出的window窗口在整个viewport上...
- 自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架
- php js动态显示系统时间,PHP+JS动态显示服务器时间
- 深度学习与自然语言处理
- 【安全牛学习笔记】缓冲区溢出
- 新格局初现、新玩家加入、新融资升温,2017年数据库领域有点热闹
- android adb驱动win7,win7 64位adb驱动怎么安装_win7安装abd驱动的方法图文步骤
- 112家IT网络公司薪水一览表
- 这款微信插件太好用了
- 1972:【15NOIP普及组】推销员
- vue综合项目——悦听音乐播放器
- 固定IP地址及其重启后地址更改的解决方法
- 使用枚举实现编译时可变长数组
- c语言文件合并,c++实现合并文件以及拆分实例代码
- 三分钟教会你用U盘装系统,再也不用花钱重装了
- ios手写_如何在iOS 10中发送手写和数字触摸消息
- 为什么苹果日历不能设置日程_怎么查看苹果手机日历所有日程?