NFS客户端mount挂载优化
NFS客户端mount挂载优化
NFS作用
NFS服务可以让不同的客户端挂载使用同一个上目录,作为共享存储使用,这样可以保证不同节点的客户端数据的一致性,在集群环境中经常用到
NFS的优点
1、简单------>容易上手,学习
2、方便------>安装快速,后期维护简单
3、可靠------>从软件层面上看,数据可靠性高
NFS服务安装成功并能使用之后,客户端挂载时也会加上一些参数进行优化
NFS挂载优化参数
1、有关系统安全的挂载优化参数
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
检查测试环境
[root@localhost ~]# showmount -e 192.168.1.2
Export list for 192.168.1.2:
/data/bbs 192.168.1.3
[root@localhost ~]# mount -t nfs -o rw,sync,nosuid,noexec 192.168.1.2:/data/bbs /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
192.168.1.2:/data/bbs 50G 3.5G 44G 8% /mnt
[root@localhost mnt]# echo 'echo `pwd`'>/mnt/text.sh
[root@localhost mnt]# sh /mnt/text.sh
/mnt
[root@localhost mnt]# ./text.sh
-bash: ./text.sh: Permission denied
经测试发现noexec参数只能禁止二进制程序执行,shell程序依然可执行
2、性能优化参数
首先卸载原来的挂载
[root@localhost ~]# umount /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
[root@localhost ~]# grep mnt /proc/mounts
192.168.1.2:/data/bbs /mnt nfs4 rw,nosuid,noexec,relatime,vers=4,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.3,minorversion=0,local_lock=none,addr=192.168.1.2 0 0
可以看出一些系统默认的参数
[root@localhost ~]# mount -t nfs -o rw,sync,nosuid,noexec,noatime,rsize=65536,wsize=65536 192.168.1.2:/data/bbs /mnt
不同步更新文件系统访问inode时间,提高I/O性能,最大读写
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
192.168.1.2:/data/bbs 50G 3.5G 44G 8% /mnt
下面用一个脚本来测试参数的效果
[root@localhost ~]# ls /bin/touch -lsh
52K -rwxr-xr-x. 1 root root 52K Nov 22 2013 /bin/touch
测试批量拷贝/bin/touch这个文件到远程服务器端
[root@Centos bbs]# ls|wc -l
4999
文件拷贝成功
[root@localhost mnt]# time for((i=1;i<5000;i++));do /bin/cp /bin/touch /mnt/touch$i;done
real 1m39.245s
user 0m2.570s
sys 0m11.889s
经过测试拷贝/bin/touch这个文件到远程服务器端用时1m39.245s
接下来我们测试下不加参数的拷贝时间
[root@localhost ~]# umount /mnt
[root@localhost ~]# mount -t nfs -o rw,sync,nosuid,noexec,rsize=65536,wsize=65536 192.168.1.2:/data/bbs /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
192.168.1.2:/data/bbs 50G 3.5G 44G 8% /mnt
[root@localhost ~]# time for((i=1;i<5000;i++));do /bin/cp /bin/touch /mnt/toucx$i;done
real 0m45.965s
user 0m2.435s
sys 0m6.907s
经过测试拷贝/bin/touch这个文件到远程服务器端用时0m45.965s,不加参数反而更快了,上面所有测试数据由于虚拟机的硬件及其它因素可能会与实际环境有所差别,如需真正的数据需到生产环境测试
3、自动挂载autofs
此参数经常用于内部测试环境中,客户不需挂载目录到本地,一旦客户访问服务端,它才会自动挂载到本地,一定时间后会自动断开
首先看下服务端的配置
[root@Centos bbs]# cat /etc/exports
#####config for nfs-server 2016-8-21
/data/bbs 192.168.1.3(rw,sync,all_squash,anonuid=3000,anongid=3000)
客户端的配置如下
首先需要开启autofs服务
[root@localhost ~]# umount /mnt 先卸载掉原来的挂载
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
[root@localhost ~]# /etc/init.d/autofs start
Starting automount: automount: program is already running. [ OK ]
autofs两个组件:/etc/auto.master /etc/auto.misc
[root@localhost ~]# vi /etc/auto.master
#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#
/misc /etc/auto.misc
/mnt /etc/auto.misc --timeout 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.
[root@localhost ~]# vi /etc/auto.misc
#
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
# the following entries are samples to pique your imagination
#linux -ro,soft,intr ftp.example.org:/pub/linux
#boot -fstype=ext2 :/dev/hda1
#floppy -fstype=auto :/dev/fd0
#floppy -fstype=ext2 :/dev/fd0
#e2floppy -fstype=ext2 :/dev/fd0
#jaz -fstype=ext2 :/dev/sdc1
#removable -fstype=ext2 :/dev/hdd
nfsfile -fstype=nfs 192.168.1.2:/data/bbs
在/mnt下新建一个nfsfile文件夹,-fstype=nfs 192.168.1.2:/data/bbs
[root@localhost ~]# /etc/init.d/autofs restart
Stopping automount: [ OK ]
Starting automount: [ OK ]
[root@localhost ~]# /etc/init.d/autofs status
automount (pid 12307) is running...
下面测试自动挂载情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# cd nfsfile
[root@localhost nfsfile]# ls
[root@localhost nfsfile]# touch 123.txt
[root@localhost nfsfile]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
192.168.1.2:/data/bbs 50G 3.5G 44G 8% /mnt/nfsfile
客户访问NFS共享目录时,才会自动挂载
[root@Centos bbs]# ls -ll 服务端共享目录
total 0
-rw-r--r--. 1 nfsuser nfsuser 0 Aug 26 06:57 123.txt
到一定时间后就会自动断开(60S)
[root@localhost ~]# date
Sat Aug 27 14:01:53 SYOT 2016
[root@localhost ~]# date
Sat Aug 27 14:03:00 SYOT 2016
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 3.3G 14G 20% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
客户挂载自动断开
补充说明
真正的企业生产环境的存储服务器都是内网环境,都无需防火墙,因此可以不配置,如果需要配置的话,有以下两种方法 1、允许IP段访问
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
2、允许IP段加端口访问
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dprot 111 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 192.168.1.0/24 --dprot 111 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 192.168.1.0/24 --dprot 2049 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 192.168.1.0/24 -j ACCEPT
- javascript对象查看器
- 加强的alert confirm js自定义对话框 多个按钮 ICO自定义
- js用于树型结构级联选择 支持三态级联选择
- 修改prototype使Event支持observe任何对象
- 两个小例子带你看懂什么是比特币分叉和2018必将大热的IFO
- 用c#添加Networkservice对文件夹的写权限
- 游标清除重复数据
- 研究人员警示智能音箱等物联网设备存在较多安全问题
- Tootip小程序,整理一下自己用
- 滴滴电单车--“街兔” 无奈相关域名已被注册
- 联发科将推出两款芯片,拥有AI和人脸识别技术,能和高通叫板吗?
- 谷歌AI黑科技曝光:合成语音与真人声音难以区分
- 小程序是什么?有什么用?
- Aibee融资1.65亿元 曾16.8万元秒下aibee.cn
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 的 Presentation 双屏异显,遇到的问题总结
- 音视频相关开发库和资料
- Flink深入浅出: 应用部署与原理图解(v1.11)
- 用 Github Actions 在 K8S 中运行 CI 测试
- 线程池的拒绝策略
- 15 张图带你深入理解浮点数
- 用Python实现坦克大战游戏 | 干货贴
- hexo搭建个人网站博客完全教程
- 快速入门 Python 数据库操作
- Shell脚本管道符与重定向
- 偿还技术债(3)-ARouter源码详解
- 偿还技术债(4)-ARouter自己实现一个?
- 偿还技术债(5)-LeakCanary源码详解
- 数据库PostrageSQL-服务器配置(查询规划)
- 别在折腾开发环境了,一劳永逸的 Python 环境搭建方法