优化和实践:改善NFS共享存储在生产场景中的性能
在实践中不断优化和改进技能 #生活知识# #生活规划# #技能提升计划#
...
生产场景NFS共享存储优化:
1、硬件:sas/ssd磁盘,买多块,raid0/raid10,网卡好
2、NFS服务器端优化加all_squash,async
/backup/NFS 192.168.0.0/24(rw,async,all_squash)用这两个选项效率高了,但是就不可靠了。
3、客户端挂载:rsize,wsize,noatime,nodiratime四个选项为性能优化选项,nosuid,noexec两个选项为安全优化选项
mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072 192.168.0.114:/backup/NFS /mnt
mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.0.114:/backup/NFS /mnt
4、内核优化:
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
一、NFS高并发环境下的服务端重要优化(mount -o 参数)
a.async 异步同步,此参数会提高I/O性能,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合。一般生产环境,不推荐使用)
b.noatime 取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用。
c.nodiratime 取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能
d.noexec 挂载的这个文件系统,要不要执行程序(安全选项)
e.nosuid 挂载的这个文件系统上面,可不可以设置UID(安全选项)
f.rsize/wsize 读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说32768(bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。
查看客户端挂载的参数:
grep mnt /proc/mounts
[root@oldboy ~]#grep mnt /proc/mounts
192.168.0.114:/backup/NFS /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.131,minorversion=0,local_lock=none,addr=192.168.0.114 0 0
二、企业生产环境文件系统只读案例(1):
解决办法
1.重启看是否可以修复(很多机器可以)
2.使用用fsck – y 来修复文件系统
3.若,在进行修复的时候有的分区会报错,重新启动系统问题依旧
查看下分区结构
[root@localhost mobile]# more /etc/fstab
[root@localhost ~]# more /proc/mounts
[root@localhost ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (ro)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
查看ro挂载的分区,如果发现有ro,就重新mount
umount /dev/sda1
mount /dev/sda1 /boot
如果发现有提示“device is busy”,找到是什么进程使得他busy
fuser -m /boot 将会显示使用这个模块的pid
fuser -mk /boot 将会直接kill那个pid
然后重新mount即可。
4.直接remount,命令为
[root@localhost ~]# mount -o rw,remount /boot
==================================================
linux系统重启或无故变为只读造成网站无法正常访问的简单临时的做法:
1、mount:
用于查看哪个模块输入只读,一般显示为:
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda5 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr/local type ext3 (rw)
/dev/nb1 on /EarthView/RAW type ext3 (ro)(变为只读了)
2、如果发现有ro,就重新mount,或者umount以后再remount
3、umount /dev/nb1
如果发现有提示“device is busy”,找到是什么进程使得他busy
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid
然后重新mount即可。
4、还有一种方法是直接remount,命令为
mount -o rw,remount /mnt/data
具体深入的做法,情况不同可以自行选择:
服务器/var/log/messages报错 :
end_request: I/O error, dev sda, sector 122194293 Buffer I/O error on device sda1, logical block 446493 lost page write due to I/O error on sda1
下面是整个处理全过程
[root@php5 ~]# fdisk -lu #第一步 :找出本地扇片所在的分区。
Disk /dev/sda: 73.4 GB, 73407868928 bytes
255 heads, 63 sectors/track, 8924 cylinders, total 143374744 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 63 4096574 2048256 83 Linux
/dev/sda2 4096575 75778604 35841015 83 Linux
/dev/sda3 75778605 129034079 26627737+ 83 Linux
/dev/sda4 129034080 143364059 7164990 5 Extended
/dev/sda5 129034143 139267484 5116671 83 Linux
/dev/sda6 139267548 143364059 2048256 82 Linux swap
[root@php5 ~]# tune2fs -l /dev/sda3 |grep "Block size" #找到block大小。
Block size: 4096
(122194293-75778605)*512/4096 =528691 利用公式算出逻辑块地址
b = (int)((L-S)*512/B)
[root@php5 ~]# debugfs
debugfs 1.35 (28-Feb-2004)
debugfs: open /deb/sda3
/deb/sda3: No such file or directory while opening filesystem
debugfs: open /dev/sda3
debugfs: icheck 582391
Block Inode number
582391 277584
debugfs: ncheck 277584
Inode Pathname
277584 /users/inn.net.cn/data/upload/download/innshow004.rar
debugfs: quit
[root@php5 ~]#dd if=/dev/zero of=/dev/sda1 bs=4096 count=1 seek=582391 #找到这个快的文件之后,需要做好备份,我们强制把它设置为0字节。
[root@php5 ~]# sync
企业生产环境fstab修改错误导致系统无法启动故障修复案例(2):
1.进入维护模式或救援模式
2.mount -o rw,remount /
3.然后修改/etc/fstab
三、NFS客户端mount挂载优化
a.安全性挂载参数:
mount -t nfs -o nosuid,noexec,nodev,rw 10.0.0.19:/data/bbs /mnt
[root@oldboy ~]#grep mnt /proc/mounts
192.168.0.114:/backup/NFS /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.131,minorversion=0,local_lock=none,addr=192.168.0.114 0 0
[root@oldboy ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.6G 2.2G 5.1G 31% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 190M 27M 153M 15% /boot
192.168.0.114:/backup/NFS
7.6G 4.7G 2.6G 65% /mnt
[root@oldboy ~]#umount /mnt
[root@oldboy ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.6G 2.2G 5.1G 31% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 190M 27M 153M 15% /boot
[root@oldboy ~]#history |grep mount
117 mount
645 mount /dev/sdb1 /mnt
649 umount /mnt
652 mount /dev/sdb2 /mnt
680 showmount -e 192.168.0.114
686 umount /mnt
688 mount -t nfs 192.168.0.114:/backup/NFS /mnt
724 echo "mount -t nfs 192.168.0.114:/backup/NFS /mnt" >>/etc/rc.local
727 mount
729 showmount -e 192.168.0.114
737 mount
739 grep mnt /proc/mounts
741 umount /mnt
743 history |grep mount
[root@oldboy ~]#mount -t nfs -o nosuid,noexec,nodev,rw 192.168.0.114:/backup/NFS /mnt
[root@oldboy ~]#grep mnt /proc/mounts
192.168.0.114:/backup/NFS /mnt nfs4 rw,nosuid,nodev,noexec,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.131,minorversion=0,local_lock=none,addr=192.168.0.114 0 0
[root@oldboy ~]#ll
total 16
-rw-r--r-- 1 root root 292 May 12 22:16 a.log
drwxrwxr-x 7 1000 kl 4096 May 11 22:07 keepalived-1.2.7
-rw-r--r-- 1 root root 0 Jul 11 10:06 oldboy.log
drwxr-xr-x 3 root root 4096 Jul 5 20:58 server
drwxr-xr-x 4 root root 4096 May 11 22:07 tools
[root@oldboy ~]#cd server
[root@oldboy server]#ll
total 4
drwxr-xr-x 2 root root 4096 Jul 5 21:57 scripts
[root@oldboy server]#cd scripts
[root@oldboy scripts]#ll
total 8
-rw-r--r-- 1 root root 33 Jul 5 21:00 ping.sh
-rw-r--r-- 1 root root 160 Jul 5 21:57 tar.sh
[root@oldboy scripts]#pwd
/root/server/scripts
[root@oldboy scripts]#cp ping.sh /mnt
[root@oldboy scripts]#ll /mnt
total 8
drwxrwxrwx 5 nfsnobody nfsnobody 4096 Apr 13 00:00 data
-rw-r--r-- 1 nfsnobody nfsnobody 33 Jul 18 22:30 ping.sh
[root@oldboy scripts]#cd /mnt
[root@oldboy mnt]#./ping.sh
-bash: ./ping.sh: Permission denied
[root@oldboy mnt]#chmod +x ping.sh
[root@oldboy mnt]#ll
total 8
drwxrwxrwx 5 nfsnobody nfsnobody 4096 Apr 13 00:00 data
-rwxr-xr-x 1 nfsnobody nfsnobody 33 Jul 18 22:30 ping.sh
[root@oldboy mnt]#./ping.sh
-bash: ./ping.sh: Permission denied
[root@oldboy mnt]#/mnt/ping.sh
-bash: /mnt/ping.sh: Permission denied
[root@oldboy ~]#chmod +x /mnt/ping.sh
[root@oldboy ~]#ll /mnt/ping.sh
-rwxr-xr-x 1 nfsnobody nfsnobody 33 Jul 18 22:30 /mnt/ping.sh
[root@oldboy ~]#sh /mnt/ping.sh
PING www.a.shifen.com (220.181.111.188) 640(668) bytes of data.
648 bytes from 220.181.111.188: icmp_seq=1 ttl=53 time=49.4 ms
648 bytes from 220.181.111.188: icmp_seq=2 ttl=53 time=45.9 ms
648 bytes from 220.181.111.188: icmp_seq=3 ttl=53 time=46.9 ms
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6053ms
rtt min/avg/max/mdev = 45.912/47.431/49.432/1.487 ms
[root@oldboy ~]#cp /bin/cat /opt/
[root@oldboy ~]#/opt/cat /mnt/ping.sh
ping -c3 -s640 -i3 www.baidu.com
[root@oldboy ~]#cp /bin/rm /mnt/
[root@oldboy ~]#ll /mnt/rm
-rwxr-xr-x 1 nfsnobody nfsnobody 48568 Jul 20 20:50 cat
drwxrwxrwx 5 nfsnobody nfsnobody 4096 Apr 13 00:00 data
-rwxr-xr-x 1 nfsnobody nfsnobody 33 Jul 18 22:30 ping.sh
-rwxr-xr-x 1 nfsnobody nfsnobody 57440 Jul 20 20:59 rm
[root@oldboy ~]#chmod u+s /mnt/rm
上一篇:深入了解KUnit:Linux内核新一代单元测试工具(下)
下一篇:Debugfs的使用简介:在Linux驱动调试中调试驱动
网址:优化和实践:改善NFS共享存储在生产场景中的性能 https://www.yuejiaxmz.com/news/view/345213
相关内容
Linux存储实验四:NFS的安装与配置共享储存柜解决方案(智能共享储物柜)
电子产品中的智能系统设计与优化分享
米存科技:利用数据分析优化智能储物柜配比 ,强化安防保障存储安全
王志亮:近年来中国当代艺术在乡村的共生实践
性能优化=改改代码?
塑料容器的应用:改善家庭存储
性能优化 = 改改代码?
生产现场7S管理活动的实践 (2)
Elasticsearch性能优化技巧