1.文件系统知识详解
1.1什么是文件系统
文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘或分区上的组织文件方式的方法,是组织储存文件或者数据的方式,目的是易于查询和存储数据,因此,如果磁盘上没有文件系统也就无法储存数据,再磁盘分区后能够使用之前必须建立对应的文件系统才行。
文件系统是基于存储设备的,比如硬盘或者光盘,并且包含文件物理位置的维护,文件系统也可以说是虚拟数据或者网络数据的存储方法。
文件系统的分区格式创建文件系统才能存放数据,不同的分区。
Linux下常见的文件系统ext2,ext3,ext4,zfs,xfs和Reiserfs.
Windows下常见的NTFS,FAT32
1.2文件系统选型简单介绍
1)SAS/SATA硬件文件系统选择:
Reiserfs 大量小文件业务首选reiserfs
Xfs 数据库业务。
xt4 视频下载,流媒体,数据库,小文件业务选择。
Ext2 蓝汛的cache业务,cdn网站加速业务,有缓存,没有日志,所以可以用。
2.NFS的介绍
什么是NFS?NFS是Network File System的缩写,他的主要功能是通过网络让不同的主机系统之间乐意彼此共享文件或者目录,NFS客户端(一般为应用服务器,如web)可以通过挂载的方式将NFS服务器共享的数据文件目录挂载在NFS客户端本地系统中(股灾在某个点上。)从NFS客户端的机器本地来看,NFS服务器端共享的目录就好像客户端自己的磁盘分区者目录一样,而实际上是远程的服务器目录。
(NFS(Network File System)网络文件系统, 是一种基于 TCP/IP 传输的网络文件系统协议, 最初由 SUM 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务 器中的共享资源。)
2.1NFS在企业中的应用场景
在企业中群架构的工作背景中,NFS网络文件系统一般被用来存储共享文件视频,图片等附件动静态资源文件。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型企业公司应用频率很高,大公司或者门户除了使用NFS外,还会使用MFS,GFS,FASTFS,TFS等文件分布式文件系统。
为什么要需要NFS?
2.2NFS服务的工作原理
NFS 没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局 域网中使用。NFS 服务的实现依赖于 RPC(Remote Process Call)远程过程调用机制,以完成 远程到本地的映射过程。 在 CentOS 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用 于 NFS 共享发布和访问,后者用于 RPC 支持。
1)NFS的挂载原理
挂载的格式: mount 源 目标
挂载NFS :mount 192.168.1.15:/video /video (192.168.1.15为nfs server的ip地址)
查看(df-h)
2) NFS使用的端口和RPC(Remote Procedure Call)服务
经过前面的介绍,知道NFS系统是通过网络来进行数据数据传输的,因此,NFS需要使用一些端口来传输数据,接下来是NFS使用的端口。
NFS传输的端口是不固定的,就会导致客户端无法知道哪个端口是传输NFS的,所以NFS出现一个RPC服务。
NFS的RPC服务最主要的功能是记录每个NFS功能所对应的信息传递给请求数据的NFS客户端,从而可以确保客户端可以连接到正确的NFS端口上去,达到实现传输交互数据的目的,RPC服务类似于NFS服务和NFS客户端之间的一个中介。
两台服务器怎么进行连接?
在做项目中会出现前线不够的问题,为什么会出现权限不够的问题?
三.实验拓扑介绍
需要两台进行实验(centos7)
服务器 |
IP |
作用 |
Localhost |
192.168.2.10 |
服务端 |
client |
192.168.2.101 |
客户端 |
四.实践搭建
1.安装服务
[root@localhost ~]# yum install -y nfs-utils rpcbind
2.创建共享文件夹
[root@localhost ~]# mkdir /data/
3.配置文件
[root@localhost ~]# vim /etc/exports /data 192.168.2.0/24 (rw)
4.启动服务
NFS可以作为一个RPC的程序,在启动任何一个RPC程序前,需要做好端口和功能的对应映射工作,这个映射工作就是由rpcbind做的。因此,在提供NFS服务之前必须先启动portmap服务
(因为nfs没有指定的端口,所以要通过rpc来和客户端进行连接,所以先启动rpc) [root@localhost ~]# systemctl restart rpcbind [root@localhost ~]# systemctl restart nfs
5.查看是否搭建成功
[root@localhost ~]# showmount -e 192.168.2.10 Export list for 192.168.2.10: /data (everyone)
6,在服务端进行配置(不需要启动)
[root@slient ~]# yum install -y nfs-utils rpcbind
7. 创建挂载目录
[root@slient ~]# mkdir /dir1
8.进行挂载且设置开机自动挂载
[root@slient ~]# mount 192.168.2.10:/data /dir1 [root@slient ~]# vim /etc/fstab 192.168.2.10:/data /dir/ nfs defaults,_netdev 0 0 (_netdev:如果网络错误则跳过错误进行挂载)
9.在服务器开权限
(因客户端访问时boot会变为nfsnobody用户而权限不够,不能访问共享目录) [root@localhost ~]# chown nfsnobody:nfsnobody /data/
10.测试
服务端的共享目录中创建一个文件为hanjiali
[root@localhost ~]# touch /data/hanjiali
客户端的挂载目录下会显示该文件
[root@slient ~]# ls /dir1/ hanjiali 成功
设置两个服务为开机自启动并检查
[root@server /]# systemctl enable rpcbind.service è开机自启动rpcbind [root@server /]# systemctl enable nfs-server.service è开机自启动nfs
五.拓展
检查有三种方法(以nfs为例)
1、通过进程查看nfs服务是否运行
1 2 |
ps -aux|grep -v grep|grep nfs 或者ps -ef|grep nfsd #有该进程即为开启状态 |
2、通过命令查看nfs服务的状态
1 |
/etc/init.d/nfs status |
3、chkconfig命令查询系统服务
1 |
chkconfig --list nfs |
4、systemctl status nfs-server.service
[root@server /]# ps -ef|grep nfsd 用第一种方法检测nfs root 3348 2 0 04:19 ? 00:00:00 [nfsd4] root 3349 2 0 04:19 ? 00:00:00 [nfsd4_callbacks] root 3355 2 0 04:19 ? 00:00:00 [nfsd] root 3356 2 0 04:19 ? 00:00:00 [nfsd] root 3357 2 0 04:19 ? 00:00:00 [nfsd] root 3358 2 0 04:19 ? 00:00:00 [nfsd] root 3359 2 0 04:19 ? 00:00:00 [nfsd] root 3360 2 0 04:19 ? 00:00:00 [nfsd] root 3361 2 0 04:19 ? 00:00:00 [nfsd] root 3362 2 0 04:19 ? 00:00:00 [nfsd] root 4745 2813 0 04:28 pts/0 00:00:00 grep --color=auto nfsd [root@server /]# systemctl status rpcbind.service è用第四种检测rpcbbind ● rpcbind.service - RPC bind service Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled) Active: active (running) since 六 2019-09-28 03:48:08 CST; 29min ago Main PID: 2996 (rpcbind) CGroup: /system.slice/rpcbind.service └─2996 /sbin/rpcbind -w 9月 28 03:48:08 server systemd[1]: Stopped RPC bind service. 9月 28 03:48:08 server systemd[1]: Starting RPC bind service... 9月 28 03:48:08 server systemd[1]: Started RPC bind service.
六.常见问题解决
NFS网络出现了故障,可以从以下几个方面着手检查:
(1) 检查NFS客户机和服务器的负荷是否太高,Server和Client之间的网络是否正常;
(2) 检查/etc/exports文件的正确性;
(3) 必要时重新启动NFS或portmap服务;
(4)运行下列命令重新启动portmap和NFS:
service portmap restart service nfs start
(5) 检查Client上的mount命令或/etc/fstab的语法是否正确;
(6) 查看内核是否支持NFS和RPC服务。
附加:★NFS常见故障排除
-------------------
1、The rpcbind failure error
故障现象:
nfs mount: server1:: RPC: Rpcbind failure
RPC: Timed Out
nfs mount: retrying: /mntpoint
原因:
第一,可能因为客户机的hosts文件中存在错误的ip地址、主机名或节点名组合;
第二,服务器因为过载而暂时停止服务。
2、The server not responding error
现象:
NFS server server2 not responding, still trying
原因:
第一,网络不通,用ping命令检测一下。
第二,服务器关机。
3、The NFS client fails a reboot error
现象:
启动客户机后停住了,不断显示如下提示信息:
Setting default interface for multicast: add net 224.0.0.0: gateway:
client_node_name.
原因:
在etc/vfstab的mount选项中使用了fg而又无法成功mount服务器上的资源,改成bg或将该行注释掉,直到服务器可用为止。
4、The service not responding error
现象:
nfs mount: dbserver: NFS: Service not responding
nfs mount: retrying: /mntpoint
原因:
第一,当前级别不是级别3,用who –r查看,用init切换。
第二,NFS Server守护进程不存在,用ps –ef | grep nfs检查,用/etc/init.d/nfs.server start启动。
5、The program not registered error
现象:
nfs mount: dbserver: RPC: Program not registered
nfs mount: retrying: /mntpoint
原因:
第一,当前级别不是级别3。
第二,mountd守护进程没有启动,用/etc/init.d/nfs.server脚本启动NFS守护进程。
第三,看/etc/dfs/dfstab中的条目是否正常。
6、The stale file handle error
现象:
stale NFS file handle
原因:
服务器上的共享资源移动位置了,在客户端使用umount和mount重新挂接就可以了。
7、The unknown host error
现象:
nfs mount: sserver1:: RPC: Unknown host
原因:
hosts文件中的内容不正确。
8、The mount point error
现象:
mount: mount-point /DS9 does not exist.
原因:
该挂接点在客户机上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。
9、The no such file error
现象:
No such file or directory.
原因:
该挂接点在服务器上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。
10、No route to host
错误现象:
[root@msa30 sysconfig]# mount 10.10.11.211:/opt/b2b-data/xmldb /b2b-web1/b2b-data/xmldb -t nfs -o rw
mount: mount to NFS server '10.10.11.211' failed: System Error: No route to host.
原因:
防火墙被打开,关闭防火墙。
11、Not owner
现象:
[root@msa30:/founder/shell]# mount -F nfs -o rw 10.10.2.3:/mnt/b2b/b2b-data/resinfo2 /data/b2b-data/resinfo2
nfs mount: mount: /data/b2b-data/resinfo2: Not owner
原因:
这是Solaris 10版本挂载较低版本nfs时报的错误。
解决:
需要用-o vers=3参数
示例:
[root@msa30:/founder/shell]# mount -F nfs -o vers=3 10.10.2.3:/mnt/b2b/b2b-data/resinfo2 /data/b2b-data/resinfo2
12、RPC: Program not registered & retrying
现象:
nfs mount: 10.10.2.3: : RPC: Program not registered
nfs mount: retrying: /data/b2b-data/resinfo2
原因:
没有启动NFS共享端服务。
解决:需要重新启动share端的NFS服务,
Linux:
mount: RPC: Program not registered
#service nfs restart
Solaris:
mount: RPC: Program not registered
#/etc/rc.d/init.d/nfs restart
13、can't contact portmapper: RPC: Remote system error - Connection refused
现象:
#exportfs -a
can't contact portmapper: RPC: Remote system error - Connection refused
原因:
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
解决:
#service portmap start
#service pcmcia start
CentOS7系统-服务(以NFS为例)开机启动/重启/查看状态
第一、启动、终止、重启
systemctl start nfs.service #启动 systemctl stop nfs.service #停止 systemctl restart nfs.service #重启
第二、设置开机启动/关闭
systemctl enable nfs.service #开机启动 systemctl disable nfs.service #开机不启动
第三、检查状态
systemctl status nfs.service