NFS学习笔记02

NFS客户端挂载

  • 命令格式
挂载命令 挂载的类型格式 NFS服务器提供的共享目录 NFS客户端挂载点
mount -t nfs 172.16.1.31:/data /mnt
  • mount挂载参数
grep mnt /proc/mounts
172.16.1.31:/data /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
参数 参数功能 默认参数
fg/bg 当在客户端执行挂载时,可选择是在前台(fg)还是后台(bg)执行.若在前台执行,则mount会持续尝试挂载,直到成功或挂载超时为止,若在后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的其他程序操作.如果网络联机不稳定,或是服务器常常需要开关机,建议使用bg fg
soft/hard 当NFS client以soft挂载Server时,若网络或Server出现问题,造成Client和Server无法传输资料,Client就会一直尝试,直到超时(timeout)后显示错误才停止.若使用soft mount,可能会在超时出现时造成资料丢失,一般不建议使用.若用hard模式挂载硬盘,和soft相反,此时Client会一直尝试连线到Server,若Server有回应就继续刚才的操作,若没有回应NFS Client会一直尝试,此时无法unmount或kill,所以常常配合intr使用 hard
intr 当时用hard模式挂载的资源超时时,若指定有intr参数们可以在超时后把它中断掉,避免出问题时系统整个被NFS锁死,建议使用intr
rsize/wsize 读出与写入的区块大小(block size),这个设置值可以影响客户端与服务器端传输数据的缓冲存储量,提升缓冲区块将可提升NFS文件系统的传输能力,最好以网络能够传输的最大值为限 默认值rsize=131072 wsize=131072
proto=tcp 使用UDP来传输资料,在LAN中有比较好的性能.若要跨越Internet,使用tcp多传输的数据会有比较好的纠错能力 proto=tcp
  • mount -o参数
参数 参数意义 系统默认值
suid/nosuid 当挂载的文件系统上有任何suid的程序时,只要使用nosuid就能够取消设置suid的功能 suid
rw/ro 可以指定文件系统是只读(ro)还是可写(rw) rw
dev/nodev 是否可以保留装置文件的特殊功能,一般来说只有/dev才会有特殊的装置,因此可以选择nodev dev
exec/noexec 是否具有执行文件的权限,如果想要挂载的仅是普通资源数据区(如图片、附件),可以选择noexec exec
user/nouser 是否允许用户进行文件的挂载与卸载功能,如果要保护文件系统,最好不要提供挂载与卸载功能 nouser
auto/noauto 执行mount -a时,此文件是否被主动挂载,如果不需要分区随时被挂载,可以设置为noauto auto
  • mount -o参数说明
    • async:涉及文件系统I/O的操作都是异步处理,即不会同步写入磁盘,此参数会提高性能,但会降低数据安全性.一般情况下,生成环境不推荐使用,除非是在对性能要求很高,对数据可靠性不要的场合
    • sync:和async相反.有I/O的操作都会同步处理,即把数据同步写入硬盘.此参数会牺牲一点I/O性能,但是,换来的是断电后数据的安全性
      • 仅适合ext2、ext3、fat、vfat和ufs等文件系统
    • atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项
    • ro:以只读的方式挂载一个文件系统
    • rw:以可写的方式挂载一个文件系统
    • auto:能够被自动挂载,通过-a参数(加载文件/etc/fstab中配置的所有信息,查看是否正确配置)
    • noauto:不会自动挂载文件系统
    • defaults:是/etc/fstab第四列挂载参数的默认值,包括rw、suid、dev、exec、auto、nouser、async
    • exec:允许文件系统执行二进制文件,取消这个参数,可以提升系统安全性
    • noexec:在挂载的文件系统中不允许直接执行任何二进制的程序,仅对二进制程序有效,即使设置了noexec,shell、php程序还是可执行的
    • noatime:访问文件时不更新文件的inode时间戳,高并发环境下推荐显式应用该选项,可以提高系统I/O性能
    • nodiratime:不更新文件系统上的directory inode时间戳,高并发环境下推荐显式应用该选项,可以提高系统I/O性能
    • suid:允许suid和sgid位生效
    • nouser:禁止一个普通用户挂载该文件系统
    • remount:尝试重新挂载一个已经挂载了的文件系统
    • dirsync:目录更新时同步写入磁盘

NFS客户端挂载优化

mount -t nfs -o nosuid,noexec,nodev,rw 172.16.1.34:/data/ /mnt
  • 禁止更新目录及文件时间戳挂载
mount -t nfs -o noatime,nodiratime,rw 172.16.1.34:/data/ /mnt
  • 安全加优化的挂载方式
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072,rw 172.16.1.34:/data/ /mnt
  • 关于noatime和nodiratime:这两个选项是在读写磁盘时,不更新文件和目录的时间戳(不更新文件系统中对应inode信息),可以减少和磁盘系统的交互,提升读取和写入磁盘的效率,更新文件时间戳对于工作数据必要性不大,最大的问题时增加了访问磁盘I/O的次数,以致拖慢系统性能

NFS内核优化

  • /proc/sys/net/core/rmem_default:该文件指定了接收套接字缓冲区大小的默认值(以字节为单位),默认设置:124928
  • /proc/sys/net/core/rmem_max:该文件指定了接收套接字缓冲区大小的最大值(以字节为单位),默认设置:124928
  • /proc/sys/net/core/wmem_default:该文件指定了发送套接字缓冲区大小的默认值(以字节为单位),默认设置:124928
  • /proc/sys/net/core/wmem_max:该文件指定了发送套接字缓冲区大小的最大值(以字节为单位),默认设置:124928
vim /etc/sysctl.conf
/proc/sys/net/core/rmem_default = 8388608
/proc/sys/net/core/rmem_max = 8388608
/proc/sys/net/core/wmem_default = 16777216
/proc/sys/net/core/wmem_max = 16777216

NFS客户端开机启动自动挂载

  • 推荐放在/etc/rc.local中
/bin/mount -t nfs 172.16.1.31:/data /mnt
  • 如果放在fstab中,理论上开机启动过程中,fstab会优于网络被Linux系统加载.网络没启动时执行fstab会导致连接不上NFS服务器端,无法实现开机挂载.而且,即使是本地的文件系统,fstab中最后两列要设置0 0.否则有可能倒是无法启动服务器的问题

NFS服务宕机后给NFS客户端带来的问题

  • 多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高).尤其是NFS服务器端出现问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载,正式环境可修复NFS服务或强制卸载)
  • 解决方法:
    1. cat /proc/mounts找到挂载点,执行unmount -lf /data方式卸载
    2. mount挂载时增加soft或intr,不让客户端持续呼叫NFS服务器
    3. 在fstab第四列defaults增加intr后soft
defaults,intr或者defaults,soft

NFS系统优缺点

  • 优点
    • 简单、容易上手、容易掌握
    • NFS文件系统内的数据在文件系统之上的,即数据时看得见的
    • 部署快速,维护简单方便,且可控
    • 数据可靠性高
    • 服务稳定
  • 缺点
    • 存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录
    • 在大数据高并发的场合,NFS效率、性能有限(2000万/PV)
    • 客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(内网则问题不大)
    • NFS数据是明文,NFS本身不对数据完整性进行校验
    • 多台客户机挂载一个NFS服务器时,耦合度高

showmount

  • 一般用于从NFS客户端检查NFS服务器端共享目录的情况
短格式 长格式 实例
-e --exports 显示NFS服务器输出的目录列表
-d --directories 显示NFS服务器中提供共享的目录
-a --all 以ip:dir格式显示NFS服务器的IP地址和可被挂载的目录

exportfs

  • exportfs -r相当于systemctl reload nfs,该带参数的命令用于使新加载的配置生效

  • 使用方法

    1. 重新加载配置使修改生效:exportfs -r
    2. 管理当前NFS共享的文件系统目录列表
      • exportfs -o rw,sync 172.16.1.31:/data:相当于配置/etc/exports文件

RPC

  • 用法
rpcinfo [-n 端口号] -u 主机名 程序号 [版本号]
rpcinfo [-n 端口号] -t 主机 程序号 [版本号]
rpcinfo -p [主机]
rpcinfo -b 程序号 版本号
rpcinfo -d 程序号 版本号
rpcinfo -p 172.16.1.31
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100024    1   udp  60264  status
    100024    1   tcp  54320  status
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl

NFS服务器端防火墙控制

  • 仅允许内部IP段访问
iptables -A INPUT -s 172.16.1.0/16 -j ACCEPT
  • 允许IP段加端口号
iptables -A INPUT -i eth1 -s 172.16.1.0/16 -p tcp -dport 111 -j ACCEPT

NFS自动挂载部署

autofs

  • autofs可以实现当个用户访问NFS的时候再进行挂载,如果指定时间内没有用户访问NFS,autofs就会将挂载点自动卸载

  • autofs可以解决NFS服务器和客户端紧密耦合的问题,就是NFS服务器宕机引起的一系列问题

缺点

  • 只有用户请求时才挂载,所以当高并发访问时,开始请求的瞬间需要执行挂载,性能较差,因此,在高并发场景中,宁愿保持继续挂载也不会使用aotufs实现自动挂载,但是在非高并发环境中,或者并发很低的环境可使用

配置NFS客户端通过autofs实现自动挂载

# 1.
yum install autofs -y

# 2.
systemctl start autofs

# 3.
cp /etc/auto.master{,.ori}

# 4.
vim /etc/auto.master
#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc   /etc/auto.misc # 定义了一个挂载点/misc,需要在/etc/auto.misc中定义挂载动作,并且设置挂载超时时间为60秒
#
# NOTE: mounts done from a hosts map will be mounted with the
#       "nosuid" and "nodev" options unless the "suid" and "dev"
#       options are explicitly given.
#
/net    -hosts
#
# Include /etc/auto.master.d/*.autofs
# The included files must conform to the format of this file.
#
+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master
/mnt /etc/auto.misc --timeout 60

# 5.
vim /etc/auto.misc
nfsdata       -fstype=nfs            172.16.1.31:/data
# nfsdata为一个共享目录的切入点,-fstype为指定挂载类型参数,后面的信息为NFS共享目录设备

# 6.
unmount -lf /mnt # 卸载原有挂载的目录信息

# 7.
mkdir -p /mnt/nfsdata

# 8.
chown -R nfsnobody.nfsnobody /mnt

# 9.
systemctl restart autofs

# 10. 利用共享目录挂载的切入点实现自动挂载
cd /mnt/nfsdata
touch test.text 

# 11. 在NFS服务器查看结果
ls /data
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 1. NFS客户端挂载命令 2. NFS客户端挂载命令参数说明 在NFS服务器端可以通过cat /var/lib/...
    阿丧小威阅读 3,057评论 0 0
  • NFS网络文件共享服务 NFS介绍 NFS是Network File System的缩写,中文意思是网络文件系统....
    childhood_1013阅读 644评论 0 1
  • 《鸟哥Linux私房菜》《老男孩Linux运维》 NFS介绍 NFS维基百科:网络文件系统(英语:Network ...
    Zhang21阅读 4,217评论 0 13
  • 一、服务器配置: 安装软件: yum -y install nfs-utils rpcbind 更改配置文件: v...
    济夏阅读 2,861评论 0 51
  • NFS企业级网络存储服务2 1.1 NFS配置参数权限 参数名称 ...
    子晋zj阅读 179评论 0 0