第二十六天-文件系统选型及nfs网络文件进阶
一、如何选择文件系统类型
1、什么是文件系统?
文件系统是一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘(包括光盘,软盘,闪盘及其他存储设备)或分区上组织文件方式的方法,如ext2,ext3,ext4,NTF或FAT,FAT32等。文件系统是组织存储文件或数据的方法,目的是易于查询和存取数据。因此,如果磁盘上没有文件系统也就无法存储数据了,因此,在磁盘分区后能够使用之前必须建立对应的文件系统才行。
文件系统是基于存储设备的,比如硬盘或光盘,并且包含文件物理位置的维护:文件系统也可以说是虚拟数据或网络数据存储的方法,比如NFS,MFS,GFS。目前UNIX/LINUX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统),ext2,ext3,ext4,zfs,xfs和Reiserfs等。
小结:
1、文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。
2、分区必须格式创建文件系统才能存放数据,不同的分区只能有一种文件系统。
3、linux下常见文件系统ext2、ext3、ext4、zfs、xfs和Reiserfs。
2、文件系统选型简单介绍:
1) SAS/SATA硬盘文件系统选择:
reiserfs 大量小文件业务首选reiserfs。
xfs 数据库业务,门户案例
ext4 视频下载,流媒体,数据库,小文件都OK
ext2 蓝汛的cache业务
常规应用:
对应Centos5.x系列,常规应用就选默认的ext3文件系统即可
对应Centos6.x系列,常规应用就选默认的ext4文件系统即可
小结:
a.Centos默认的文件系统都是比较优秀的。
b.xfs,reiserfs这两个文件都需要单独安装的。默认不支持的,维护可能不方便。
c.大并发并不是过多的磁盘优化,而是在前面增加缓存。
3、如何查看当前系统所支持的文件系统有哪些:
[xiaorui@lrz ~]$ ls /lib/modules/2.6.32-431.el6.x86_64/kernel/fs/ autofs4 configfs exportfs fat jbd mbcache.ko nls xfs btrfs cramfs ext2 fscache jbd2 nfs squashfs cachefiles dlm ext3 fuse jffs2 nfs_common ubifs cifs ecryptfs ext4 gfs2 lockd nfsd udf [xiaorui@lrz ~]$ cat /etc/issue Red Hat Enterprise Linux Server release 6.5 (Santiago)
二、NFS介绍
1、NFS概述描述
什么是NFS?NFS是Network File System的缩写,它的主要功能是通过网络让不同的主机之间可以彼此共享文件或目录。NFS客户端(一般应用服务器,如web)可以通过挂载(mount)的方式将NFS服务端共享的数据文件目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从NFS客户端的机器本地上看,NFS服务端共享的目录就好像是客户端自己的磁盘一样,而实际上确是远端的服务器目录。
2、NFS在企业中得应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件(一般把网站用户上传的文件都放在NFS共享里),例如:BBS产品的图片、附件、头像,注意网站BBS程序不要放在NFS共享里,NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型网站公司应用频率很高。大公司或门户除了使用NFS外,还可能会使用MFS,GFS,FASTFS,TFS等分布式文件系统,有关这些分布式文件系统,读者可以参考相关书籍。
3、NFS共享结构简图
4、什么是RPC(Remote Procedure Call)
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口才无法固定,而是随机取用一些未被使用的端口来作为传输之用,其中Centos5.x随机端口为小于1024的,而Centos6.x随机端口都是较大的。
因为端口不固定,这样以来就会造成NFS的客户端与NFS服务端的通讯障碍,因为NFS客户端必须知道NFS服务端的数据传输口才能进行通信交互数据。
要解决上面的通讯问题困扰,就需要远程过程调用RPC服务来帮忙了,NFS的RPC服务最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而可以确保客户端可以连接到正确的NFS端口上去,达到实现数据传输交互数据的目的。这个RPC服务很类似NFS服务端和NFS客户端之间的一个中介。
5、NFS软件
要部署NFS服务,需要安装下面的软件包
nfs-utils:这个NFS服务程序
包括rpc.nfsd、rpc.mountd两个daemons和相关文档说明及执行命令文件等。
portmap:Centos5.x下面RPC的主程序(Centos6.x下名字为rpcbind)
NFS可以被视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口和功能的对应映射工作,这个映射工作就是由portmap(或rpcbind)服务来完成的。因此,在提供NFS服务之间必须先启动portmap(Centos6.4下为rpcbind)服务。
三、NFS服务端配置流程
1、修改服务器名字
[root@nfsserver ~]# hostname nfsclient [root@nfsserver ~]# vim /etc/sysconfig/network [root@nfsserver ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=nfsserver
2、查看系统版本
[root@nfsserver ~]$ uname -a Linux nfsserver 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux [root@nfsserver ~]$ uname -m x86_64
3、查看是否安装nfs及rpcbind服务
[root@nfsserver ~]$ rpm -qa nfs-utils rpcbind portmap rpcbind-0.2.0-11.el6.x86_64 nfs-utils-1.2.3-39.el6.x86_64 #如果没安装,执行如下操作安装: [root@nfsserver ~]$ yum grouplist "NFS file server" -y
4、启动rpcbind、nfs服务并检查
[root@nfsserver ~]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ] [root@nfsserver ~]# /etc/init.d/rpcbind status rpcbind (pid 899) is running... [root@nfsserver ~]# /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] rpc.mountd (pid 1074) is running... nfsd (pid 1089 1088 1087 1086 1085 1084 1083 1082) is running... rpc.rquotad (pid 1070) is running...
5、设置开机nfs,rpcbind启动并检查
[root@nfsserver ~]# chkconfig rpcbind on [root@nfsserver ~]# chkconfig --list rpcbind rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@nfsserver ~]# chkconfig nfs on [root@nfsserver ~]# chkconfig --list nfs nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
6、创建共享目录,并修改nfs配置文件
[root@nfsserver /]# mkdir /data [root@nfsserver /]# cd data/ [root@nfsserver data]# ls [root@nfsserver data]# touch test.txt [root@nfsserver data]# vim /etc/exports [root@nfsserver data]# cat /etc/exports #share /data for bbs by xiaorui at 20151209 /data 192.168.1.0/24(rw,sync)
7、平滑重启nfs服务,并检查共享目录是否生效
[root@nfsserver data]# /etc/init.d/nfs reload [root@nfsserver data]# showmount -e localhost Export list for localhost: /data 192.168.1.0/24 [root@nfsclient ~]# showmount -e 192.168.1.49 Export list for 192.168.1.49: /data 192.168.1.0/24
8、客户端无法在共享目录下创建文件
[root@nfsclient data]# touch a.log touch: cannot touch `a.log': Permission denied
9、修改目录权限
[root@nfsserver /]# chmod 777 /data [root@nfsclient data]# touch a.log [root@nfsclient data]# ls -l total 0 -rw-r--r--. 1 nfsnobody nfsnobody 0 Dec 9 05:56 a.log [root@nfsserver /]# chmod 755 /data [root@nfsserver /]# chown -R nfsnobody.nfsnobody /data [root@nfsclient data]# touch mm [root@nfsclient data]# ls -l total 0 -rw-r--r--. 1 nfsnobody nfsnobody 0 Dec 9 05:56 a.log -rw-r--r--. 1 nfsnobody nfsnobody 0 Dec 9 05:59 mm -rw-r--r--. 1 nfsnobody nfsnobody 0 Dec 9 05:37 test.txt
10、查看挂载的默认选项
[root@nfsserver /]# cat /var/lib/nfs/etab /data 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534) [root@nfsserver /]# grep 65534 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
11、检查服务端的nfs是否ok
showmount -e 192.168.1.116 #排查故障: ping 192.168.1.116 telnet 192.168.1.116 111
四、NFS客户端配置流程
1、修改服务器名字
[root@nfsclient ~]# hostname nfsclient [root@nfsclient ~]# vim /etc/sysconfig/network [root@nfsclient ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=nfsclient
2、查看系统版本
[root@nfsclient ~]$ uname -a Linux nfsclient 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux [root@nfsclient ~]$ uname -m x86_64
3、查看是否安装nfs及rpcbind服务
[root@nfsclient ~]$ rpm -qa nfs-utils rpcbind portmap rpcbind-0.2.0-11.el6.x86_64 nfs-utils-1.2.3-39.el6.x86_64 #如果没安装,执行如下操作安装: [root@nfsclient ~]$ yum grouplist "NFS file server" -y
4、启动rpcbind服务并检查
[root@nfsclient ~]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ] [root@nfsclient ~]# /etc/init.d/rpcbind status rpcbind (pid 1051) is running...
5、设置开机启动rpcbind并检查
[root@nfsclient ~]# chkconfig rpcbind on [root@nfsclient ~]# chkconfig --list rpcbind rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
6、查看共享目录情况
[root@nfsclient ~]# showmount -e 192.168.1.49 Export list for 192.168.1.49: /data 192.168.1.0/24
7、创建挂载点目录,并挂载共享目录及查看
[root@nfsclient /]# mkdir -p /export/data [root@nfsclient /]# mount -t nfs 192.168.1.49:/data /export/data [root@nfsclient /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 6.8G 2.5G 4.0G 38% / tmpfs 499M 0 499M 0% /dev/shm /dev/sda1 194M 29M 155M 16% /boot 192.168.1.49:/data 6.8G 2.4G 4.0G 38% /export/data [root@nfsclient /]# cd /export/data/ [root@nfsclient data]# ls test.txt