study-11 文件系统选型及nfs网络文件

一,文件系统介绍:

1,文件系统是对一个存储设备上的数据和元数据进行组织的一种机制

2,分区必须格式创建文件系统才能存放数据,不同的分区只能有一种文件系统

3,linux下常见文件系统 ext2 , ext3 , ext4 , zfs , xfs 和 Reiserfs;windows常见的文件系统NTFS, FAT32

linux主要关注 ext2 , ext3 , ext4


二,文件系统选型介绍:

1,SAS/SATA硬盘文件系统选择

1)大量小文件业务首选 reiserfs

2) 数据库业务(例如:MYSQL),门户选 xfs

3)视频下载、流媒体,数据库,小文件业务也可以选 ext4

4)蓝汛的cache业务(CDN网站加速)也在用ext2 (ext2没有日志功能)


常规应用:

CentOS 5.x 系统用 ext3

CentOS 6.x 系统用 ext4


小结:

1)CentOS默认的文件系统都是比较优秀的。

2)xfs、reiserfs 这两个文件都需要单独安装。默认不支持的,维护可能不方便。

3)大并发并不是过多的做磁盘的优化,而是在前面增加缓存


2,SSD文件系统选择

Ext4/Reiserfs 都可以作为SSD文件系统


三,中小公司用NFS(Network File System),大公司除了用NFS外,可能还会用MFS、GFS、FASTFS(51cto)、TFS等分布式文件系统;

NFS用在企业集群架构中做网络数据共享的,存储静态资源(用户上传的图片、文件等),LVS - > 多台WEB服务器 - >NFS文件服务器


中小型互联网企业一般不会购买硬件存储,太贵,大公司如果业务发展很快的话,可能会临时买存储顶一下网站压力,当网站并发继续加大后,硬件存储扩展就相对很费劲了,且价格成几何级数增加。例如:淘宝网就替换掉了很多硬件设备集群软件,用LVS+HAPROXY替换了NETSCALER负载均衡设备,用FASTFS,TFS配合PC服务器替换了NETAPP、EMC商业存储设备。


四,NFS挂载原理

mount    远端IP地址    本地目录;

NTF服务会启动多个随机不同的端口,给客户端带来困扰,客户端不知道启动了哪些端口,所以产生了RPC(远程过程调用)服务来解决这个问题,RPC服务主要的作用是记录每个NFS服务使用的端口;


NFS原理流程:

1,服务器端启动RPC服务(C5: portmap ;C6: rpcbind)

2,服务器端启动NFS服务(NFS向RPC注册端口)

3,客户端启动RPC服务,并向服务器端RPC请求端口

4,服务器端RPC向客户端RPC返回端口

5,客户端拿到端口向NFS服务器端请求数据


(VMWARE克隆后,新VM网卡和旧的一样的解决办法:/etc/udev/rules.d/70-persistent-net.rules 删除后重启机器就可以了,因为这个文件绑定了网卡和mac地址,所以换了网卡以后MAC地址变了,所以不能正常启动


五,NFS安装(1台服务器端 + 1台客户端)

1,NFS软件:要部署NFS服务,需要安装下面的软件包

1)nfs-utils :这个NFS服务主程序

    包括rpc.nfsd 、rpc.mountd 两个daemons 和相关文档说明及执行命令文件等。

2)portmap:C5下面的RPC的主程序(C6下名字为 rpcbind)

     在提供NFS服务之前必须先启动rpcbind


2, 服务器端和客户端 查询是否安装:rpm -qa nfs-utils rpcbind ,没有则安装(工作中只用一种):

1) yum groupinstall "NFS file server"  -y

2)或 yum install rpcbind nfs-utils -y


3,服务器端配置

1)启动RPC服务:/etc/init.d/rpcbind start

2)用一个命令可以查看本机nfs服务可用的端口:rpcinfo -p localhost   :(rpc服务对外使用111端口,所以本机没有可用的nfs端口)

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

3)服务器端启动NFS服务:/etc/init.d/nfs start

4)再查看服务端RPC服务,会发现很多端口:rpcinfo -p localhost 

5)服务器端设为开启启动:

chkconfig nfs on

chkconfig rpcbind on

6)客户端启动rpc服务

 /etc/init.d/rpcbind start

chkconfig rpcbind on

7)服务器端nfs的配置文件:/etc/exports

/data 192.168.1.0/24(rw,sync)


(sync:把数据从buffer写入到磁盘中;rw:读写;ro:只读)


8)服务器端重启NFS: /etc/init.d/nfs reload   (平滑重启nfs服务,不要用restart,restart会马上重启,而reload是不影响其他操作情况下进行重启,更平滑安全)

本机检查是否共享出来:showmount -e localhost


9)客户端检查:showmount -e [ 服务器端IP地址 ]

10)客户端挂载:mount -t nfs [ 服务器端IP ]:/data /mnt   (重启失效,需要把挂载操作放到/etc/rc.local  或 /etc/fstab;例如:echo "mount -t nfs [ 服务器端IP ]:/data /mnt"  >> /etc/rc.local)

11) 当客户端往服务器端写数据时,服务器端接收到数据后,是以nfsnobody(安装nfs时自动建立的一个用户)用户的身份写数据的,所以需要将服务器端共享目录及子目录的属主改为nfsnobody

chown -R nfsnobody.nfsnobody [ 共享目录 ]


六,1台服务器端 , 2台(多台)客户端

1)  建立一个nfs共享用户,所有机器都存在并且UID,GID相同;

useradd -u 555 oldboy 

2)服务器端/etc/exports配置;

/data 192.168.1.0/24(rw,sync,all_squash,anonuid=555,anongid=555)     #参数可以参考  /var/lib/nfs/etab 

3)客户端进行挂载


七,企业生产环境NFS客户端挂载建议

1,把NFS rpc服务的启动命令和挂载命令都放入到/etc/rc.local,然后再通过NAGIOS监控软件监控开机后的挂载情况。

2,如果决定考虑把挂载命令放入到/etc/fstab里,那么关键是第5,6列的数字要为0,即不备份,不做磁盘检查(经验:/或/boot 这两个才做磁盘检查)


经验:为什么要把开机启动的服务放到/etc/rc.local呢,规范,统一开机启动的位置。相当于把/etc/rc.local当作服务器的档案。所有服务器的启动配置都放到档案里,做好注释。这是一个规范的态度;或者写好启动脚本都用chkconfig管理。


八,生产场景NFS共享存储优化:

1,硬件方面:磁盘优化,选择SAS/SSD磁盘,买多块,raid10安全性能高;网卡好

2,服务器端:all_squash,async(效率高、不可靠),sync(效率一般,可靠)

3,客户端:rsize,wsize,noatime,nodiratime,nosuid,noexec,soft(hard,intr)

例如:mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072    [ 服务器IP地址 ]:/[ 共享目录 ]      /[ 挂载目录 ]

4,内核的优化:

net.core.wmen_default = 8388608

net.core.rmen_default = 8388608

net.core.rmen_max = 16777216

net.core.wmen_max = 16777216


如果卸载的时候提示:umount:   /mnt:    device is busy

需要退出挂载目录再进行卸载,或者是NFS Server宕机了,需要强制卸载 mount    -lf    /mnt 


工作中共享存储一般在企业内网,一般无需开防火墙iptables

(2千万PV以下的网站用NFS是没问题的,架构原则:把用户的访问尽量挡在外面,例如用CDN挡住95%的图片、视频等静态资源的访问;一台服务器用压力测试工具压访问来计算单台机的最大访问临界点)


九,学习方法,学习习惯:

在使用中记忆,每天睡觉前,想下今天讲过的和总结过的,过电影;

每天早晨醒来后,想下几天要做的事情,计划;

学会做小结,得出实践后的结论;

通过例子,案例来记忆对应的理论;

学习知识尽量用man,看官方帮助,找到知识的源头;

画逻辑图来表达知识容易记忆,让知识变得更简单,容易记忆;

用数据说话,用实际测试得出结论;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值