文件系统:文件系统主要说的就是管理文件, xfs ext3 ext4都是
inode和block
文件数据:文件数据是由两部分组成的,一部分是元信息,另一部分是实际数据
元信息——>inode
实际数据——>文件实际大小——>block
block(块):硬盘存储的最小单位是扇区,每个扇区(机械)是512字节,8个扇区组成一个block(这是文件的最小存取单位)
操作系统读取硬盘的时候,他是一次性连续读取多个扇区,也就是一个块一个块的去读取,读取一个文件,最少也要读取一个block
元信息:文件的创建者,创建日期,文件的大小,文件权限,元信息当中是没有文件名的
创建一个文件,必须要占一个inode号,必须要占一个索引,文件是有大小的,最小最小至少要占一个block
创建文件:
- 系统需要分配一个空闲的inode号,inode号必须有,必须不能被占用,至少分配一个block(块)来存储实际数据,元数据的信息在inode号里面(文件的权限,文件的字节数,文件的创建时间,不包括文件名)
- inode号也会占用磁盘空间,实际数据也会占用磁盘的空间
stat也可以查看某个文件的详细信息,包括inode信息 stat 文件名
atime:最近访问,使用这个文件的时候就会发生变动
mtime:最近更改,修改文件数据就会发生变动
ctime:最近改动,修改文件的权限和属性就会发生变动,改变文件的大小,会改变文件的字节数,元信息发生变化,也会修改这个时间
删除30天以前创建的,或者改动的所有文件,找到大于1G 文件,全部删除,一条命令:find / -type f -mtime +30 -size +1G -exec rm -rf {} \;
inode:
- 识别系统内的不同文件,/dev/sdb1 设备文件,是根据inode号来识别的
- 我们创建文件时,文件名是方便用户识别的标识,系统通过inode号来和文件开始一一对应,访问文件时,实际上通过inode号这个节点,来找到我要的文件。
- 所有的权限控制都是基于inode号来的,对于文件的处理,都是inode号来的,与文件名无关
- 创建文件名,来找到他的inode号——>通过inode号码——>找到inode包含的这个文件的元信息——>找到block后——>读取数据(相关的权限控制)
在文件系统中:核心就是indox,除了文件名,主要的属性都记录在元信息中,也就是inode当中,访问控制等等权限,都是由元信息控制,block(块),只是存储实际数据
inode号与文件名分离,Linux拥有几种特有的现象:
- 文件名字如果包含特殊字符,可能无法通过文件名进行直接删除,只能通过inode号来删除
- 移动文件,包括重命名文件,不改大小,只改文件名,inode号是不会变化的
- 打开文件之后,系统就以inode号来识别文件,此时跟文件名无关的
- 使用vim编辑器修改文件数据保存之后,就会生成一个新的inode号
inode和磁盘都会占空间
目录的inode节点都是从2开始的
xfs文件系统的备份和恢复
因为centos7都是使用xfs,xfs使用xfsdump——备份,xfsrestore——恢复
xfsdump备份的时候有两个级别:0是完全备份,默认的备份级别就是0
1-9,增量备份。xfs的命令格式:
xfsdump -f 备份存放路径,要备份的路径和设备文件
-f:指定备份文件的目录
-L:指定标签session label
-M:指定设备标签media label
-s:备份单个文件(一般不用,-s后面不能直接跟路径)
xfsdump使用的要求:
- 只能备份已挂载的文件系统(xfs)
- 只有root用户才能操作。
- 只能是xfs的文件系统
- 它不是直接恢复文件,而是通过xfsrestore解析之后,文件才能恢复
- 它是不能备份两个uuid相同的文件系统(blkid查看uuid号)
实验:
刷新一下
然后开始分区,因为模拟inode满了,所以说给小一点
格式化,然后挂载一个新目录
装满,然后查看inode满了
要附加结论,塞了多少个
附加题
extundelete是一个开源工具,他支持两种文件类型,支持ext3,ext4,ext4只能在cetnos6上进行恢复。
ext3模拟恢复被误删除的文件,虽然功能强大但是数据一定可以恢复(有可能失败),文件一定要备份,不能全指望恢复。
先进行分区lsblk,然后格式化mkfs.ext3
给挂载
更改DNS(可以不改):
重启网络:
安装编译环境:
下载
安装编译环境,解压,编译安装
指定文件安装路径
然后
回到挂载目录,
模拟删除:
rm -rf ,切换到家目录,解挂载
恢复所有:
成功和失败都会有一个,恢复的在里面
实验3:xfs文件系统的备份和恢复
进行分区
格式化:mkfs.xfs
创建空目录,然后挂载
检查软件是否安装了
如果没有yum -install安装一下
在挂载目录中创建多个文件
备份:
/opt/backup2,就是我要备份的文件放置的位置,backup2不能是一个已经存在的目录或者文件,backup2就是需要解析恢复的文件
/dev/sdb2 需要备份的设备
【-L】指定要备份的文件的标签是backup2 -M指定备份设备的标签(是固定格式)
就是sdb3上面的数据备份到/opt/backup2文件当中
备份完之后,数据被删除,要靠xfsrestore来解析backup来恢复文件
进入挂载目录把文件都删了
然后备份文件恢复一串指令
把这个文件恢复到哪里的
日志分析
inode也要占磁盘空间,实际数据也要占用磁盘空间
日志(非常重要)
我们今后的工作当中,最主要打交道的文件有两种,一个就是配置文件,另一个就是日志文件,要会分析,要会看日志当中的内容,哪些是正常信息,哪些是报错信息,就是根据报错的信息,能够定位出服务,系统的故障原因,或者能够定位出是谁的故障。
日志是什么,长什么样,怎么分析日志
日志的功能:用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
日志:系统,程序运行必然会产生相关运行的信息,这些信息回统一记录在日志当中,第一个原因是:系统自定义,系统创建完之后,会专门生成一个用于记录系统运行的日志文件,第二种,主要是针对第三方服务,不是系统自带的,由程序员,自定义的软件或者第三方开发的一些软件,运行在系统上,一些日志是第三方服务自带的,不需要人工配置,服务本身没有记录日志的功能,需要人工配置
系统日志:./var/log/messages 这个日志文件包含了所有系统以及服务,包括第三方(必须要配置在systemd的文件中,有他的运行配置文件),yum安装,或者rpm安装,会自动添加到systemed当中,不需要你手工配置。
messages。里面包含的第三方服务,只有运行日志,没有具体的第三方服务的业务日志。
第三方这些服务,有自己的业务日志,但是不保存自己的运行日志
核心就是:发生时间,必带的记录,进行了哪些操作,执行了什么任务,返回了什么结果,,还有具体的业务信息,这些也是必带的信息
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*表示所有
info:日志的级别
noone:日志级别,不记录,没有级别
Jun 28 09:33:01 www systemd: Reloading The Apache HTTP Server.
时间戳 主机名 服务名 服务干了什么
local:自定义服务的日志,范围0-7
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
0 EMERG(紧急):会导致主机系统不可用的情况。如系统崩溃
1 ALERT(警告):必须马上采取措施解决的问题。如数据库被破坏
2 CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3 ERR(错误):运行出现错误。不是非常紧急,尽快修复的
4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。无需处理
6 INFO(信息):一般信息。正常的系统信息
7 DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时使用
none:没有优先级,不记录任何日志消息。
这个优先级由开发者自行定义,也就是你想要那部分的信息内容,可以自行添加修改。
修改配置文件一定要备份,改完配置文件一定要重启服务:systemctl restart rsr(服务名字)
tail -f动态查看(使用最多的)
awk:切片查看
sed:范围查看(时间戳)
系统日志:系统自带的,message,httpd作为第三方服务,为什么能在系统日志当中,核心在他配置在系统服务的目录当中,可以由系统进行操作,开,关,重启,控制运行的记录可以记录在系统日志当中
访问日志,报错日志,都在自己的业务日志当中
、
1、在工作中,对应日志,业务型日志,一般来说保留2-3天,就保留当天和前一天
2、日志的保存类型不同,期限不同,用户信息,永久保存,不能删除,而且要定期备份
其他类型:交易记录,一般半年,但是会有备份,相查也能查询到,但是不在第一页面展示
- 权限控制:一般核心业务的日志,只有少数权限人员可以查看
- 生产环境:运维人员一般是有root密码的
users:显示当前登录系统的所有用户的列表
w:显示详细的当前登录系统的所有用户的列表
last:表示到目前为止,所有登录过系统的用户列表
lastb:查询登录失败的用户记录
实验1:服务日志单独存放
关闭防火墙,关闭安全机制,更改配置文件
c后面跟着onf
更改
的配置文件
找到32行,把32行注释掉,后面跟定义服务级别(必须大写)
保存退出,重启两个服务,
开启另一个,远程登录
第二个实验:
配置一个日志服务器,来收集客户机的日志
进入第一个
取消注释19,20
54注释掉,然后添加,两个@表示使用tcp协议
保存退出,重启服务
进入接受方
重启服务,查看
第一台动态查看
第二天开始做事情,logger “内容”
重启第二台配置文件