linux文件系统与日志分析
文件时存储在硬盘上的,硬盘上的最小存储单位是扇区,每个扇区大大小是512字节。
inode:元信息(文件的属性 权限,创建者,创建日期等)
block:块,连续的八个扇区组成一个块,一个块的大小是4k,创建一个文件,最小也要占4k。
块是文件存储的最小存储单位。
操作系统读取硬盘,是一次性读取多个扇区一个一个块读取数据。
创建文件:实际空间大小的要占,第二个就是元信息。元信息和实际数据都保存在硬盘上。
元信息,inode 128字节或者256字节。
一个文件必须占用一个inode号(只要创建文件必须有一个inode号)
至少占用一个block(空文件,也要占一个块)
时间戳:
atime:访问,读取文件就会更新这个时间。
mtime:修改文件数据,更改文件的属性,都会更新这个时间。
ctime:修改文件权限也会更新这个时间。
inode号:linux系统都是识别文件的inode号
修改文件内容,硬盘中的位置发生变化,inode号也会发生变化。vim
[root@localhost opt]# ls -i
33624704 123 33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz 33618581 nginx-1.22.0.tar.gz
33624944 login.sh
[root@localhost opt]# vim 123
[root@localhost opt]# ls -i
33624708 123 33965422 nginx-1.22.0
33624702 john-1.8.0.tar.gz 33618581 nginx-1.22.0.tar.gz
33624944 login.sh
元信息发送了变化,inode也会发送变化
inode号的总数?df -i
磁盘大小。磁盘越大,inode越多,越小,inode越小。
inode号和文件名分离,二者只是映射关系,linux系统的特有现象:
1、文件名包含特殊字符,rm可能无法正常删除,可以直接删除inode号。
2、移动文件,重命名,inode是不变的。
3、一旦对文件操作,后续所有的认证和识别都是通过inode来的,不再考虑文件名。
4、元信息发送变化,inode也会发生变化。
xfs文件系统,如何能够实现备份和恢复?(必会)
centos7默认使用文件系统就是xfs
xfsfump备份
xfsrestore恢复
xfsdump命令选项:
-f 指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区
-L 指定标签
-M 指定设备标签
-s 备份单个文件,-s 后面不能之间根路径。
xfsdump使用限制:
1、只能备份xfs的文件系统
2、只能备份以及挂载的文件系统
3、只有root权限才能进行操作
4、备份之后的数据要恢复,只能使用xfsrestore解析恢复。
5、如果两个设备的uuid相同,不能备份。
备份完之后,恢复文件,inode号是否会发送变化
1、建立sdb1物理卷,已经创建文件系统及挂载点sdb1,进入挂载目录/data1,写入需要备份的文件,写入后进行备份
xfsdump -f(指定需要备份的文件目录(设备挂载点)/指定备份硬盘分区) /opt/backup /dev/sdb1 [-L backup -M sdb1]
2、进入/data1,删除需要备份文件
[root@localhost data1]# ls
123
[root@localhost data1]# rm -rf *
3、备份恢复
[root@localhost data1]# xfsrestore -f /opt/backup /data1/
[root@localhost data1]# ls
123
/opt/backup 必须是个文件,必须是个不存在的文件,不能是目录,如果已存在,必须是个空文件。
/dev/sdb2 设备
[-L 文件标签(备份文件的标签) ]
[-M 设备标签(要备份的硬盘分区)]
备份级别:全量备份和增量备份
0也是备份 也就是全量备份
1-9是增量备份,一般不用。
xfsrestore -f /opt/backup /data1/
前一个是备份的文件
后一个是恢复到指定的目录
EXT类型备份和恢复:
ext4只能在centos6
ext3格式
extundelet
日志分析:
系统的日志类型以及日志如何分析
linux系统本身的日志和大部分的服务器程序的日志都在/var/log/
/var/log/messages 记录了linux的内核消息,各种应用程序的公共的日志消息。
应用程序公共日志:开 关 重启 网络错误 程序故障这些都属于公共日志
访问日志和一些*业务日志不包含在其中。
cron:记录的是定时任务的日志
dmesg:引导过程的日志信息
maillog:记录进入或者发出的系统电子邮件信息
secure:用户认证的相关信息
rsyslog
linux的日志消息级别
linux的日志级别:数字越小,优先级越高,消息越重要
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况,系统崩溃。磁盘要满了(EMERG) |
1 | ALERT | 警告 | 必须要采取措施解决的问题。密码到期,数据库奔溃。 |
2 | CRIT | 严重 | 比较严重的情况,磁盘读写出了故障,有些程序的功能无法启动。 |
3 | ERR | 错误 | 运行出现错误,程序启动失败,端口被占用等等,间的最多的情况,出现最多的,出现了也是要尽快解决的 |
4 | WARNING | 提醒 | 可能会影响功能,需要提醒用户的重要时间,但不是报错。磁盘利用率到了85% |
5 | NOTICE | 注意 | 也是需要用户注意的,无需处理 |
6 | INFO | 信息 | 一般信息,系统或者应用程序在工作中产生的正常消息 |
7 | DEBUG | 调试 | 程序在开发阶段,调试程序时的信息 |
none | 没有优先级 | 不记录任何日志消息 |
*.info 表示所有,表示系统中的设备,或者程序。info:包含info以及info级别以上的日志。
auth 用户认证产生的日志
daemon 守护后台进程的进程
authpriv:SSh,FTP登录验证的信息
news:网络传输产生的信息
syslog:系统的相关日志
kern:系统的内核日志
user:用户进程日志
local-local7:自定义程序
uucp:unix-to-unix copy两个linux之间的通信
mail.info /var/log/mail.log:记录邮件的信息,包含info及info以上的,记录到/var/log/mail.log
mail.=info /ar/log/mail.l0g 只记录日志级别是info的
mail.!info /var/log/mail.10g 除了info的不记录,其他的都记
mail.info;news.info=mail,news.info
日志信息翻译
May 31 13:46:02 test1 systemd: starting The Apache HTTP server…
May 31 13:46:02 表示当前日志发生的时间
test1表示发生的主机名
systemd:哪个系统产生了这个日志
starting The Apache HTTP server…日志的具体内容
第一个实验:ssh的日志单独列出来
1、test1、test2关防火墙、安全机制
[root@test1 opt]# systemctl stop firewalld ##关闭防火墙
[root@test1 opt]# setenforce 0 ##关闭安全机制
[root@test2 ~]# systemctl stop firewalld
[root@test2 ~]# setenforce 0
2、打开系统日志,单独列出ssh日志
[root@test1 opt]# vim /etc/rsyslog.conf
local7.* /var/log/boot.log
到74行,local6.* /var/log/ssh.log
3、把默认ssh日志存储位置注释
[root@test1 opt]# vim /etc/ssh/sshd_config
32gg行 32 #SyslogFacility AUTHPRIV 进行注释##
33行写入 33 SyslogFacility LOCAL6 更改日志位置
4、服务刷新
[root@test1 opt]# systemctl restart rsyslog.service
[root@test1 opt]# systemctl restart sshd
[root@test1 opt]# cd /var/log/
[root@test1 log]# ls
anaconda maillog spooler-20240519
audit maillog-20240519 spooler-20240531
boot.log maillog-20240531 ssh.log
5、查找 ssh.log日志
[root@test1 log]# tail -f ssh.log
[root@test2 ~]# ssh root@192.168.168.10
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.168.10's password: 123
May 31 23:20:12 test1 sshd[48095]: Accepted password for root from 192.168.168.20 port 44206 ssh2
第二个实验:
配置日志服务器,来进行日志收集
test1 192.168168.10 日志收集服务器
test2 192.168.168.20上产生的的日志,都会发到10上,20自己不再记录日志
1、test2进入系统日志配置文件,之前一定关闭防火墙和安全机制
[root@test2 ~]# vim /etc/rsyslog.conf
#*.info;mail.none;authpriv.none;cron.none /var/log/messages #注释这一行
*.info;mail.none;authpriv.none;cron.none @@192.168.168.10 ##日志存储改到192.168.168.10
$ModLoad imudp ##@@是tcp传输端口打开
$UDPServerRun 514
2、文件配置完成,刷新。
[root@test2 ~]# systemctl restart rsyslog.service
3、test1日志配置,打开tcp端口514传输
[root@test1 ~]# vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages ##不用改
Provides TCP syslog reception
$ModLoad imtcp ##关闭注释,打开端口
$InputTCPServerRun 514 ##关闭注释,打开端口
[root@test1 ~]# systemctl restart rsyslog.service
[root@test1 ~]# systemctl stop firewalld
[root@test1 ~]# setenforce 0
[root@test1 ~]# tail -f /var/log/messages
4、到test2,输入[root@test2 ~]# logger “this is xy102”
5、test1,出现日志Jun 1 12:42:46 test2 root: this is xy102
6、test2,不会出现日志。
@@表示使用tcp协议进行数据传输
@表示使用udp协议进行数据传输
LISTEN:监听,端口是否开启。端口是否正常传输数据
eatablished:表示端口之间以及建立连接而且正在传输数据。
文件系统:对文件的操作,用户时针对文件名,系统针对的inode好哦,系统都是inode来进行识别。
inode号保存的是元信息,大小,时间戳。
block块 文件的最小存储单位,连续的8个扇区,4k。
创建文件:保存云信息,保存实际数据。
备份个恢复:XFS ext3
*问题:**xfs模拟耗尽inode,能不能写入,若能写入,写入多少。如果inode号满了,ext4和xfs之间有什么区别?***
1、增加硬盘、物理卷分区,创建文件系统,挂载。
2、查看inode号
3、创建10237个文件
4、继续新建到10300个
5、继续新建到10400个
总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。
2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。
g-OPyXW2tN-1717227770016)]
2、查看inode号
[外链图片转存中…(img-EPsaF42u-1717227770016)]
3、创建10237个文件
[外链图片转存中…(img-DtMaf1D1-1717227770016)]
4、继续新建到10300个
[外链图片转存中…(img-sSvDPy9Q-1717227770016)]
5、继续新建到10400个
[外链图片转存中…(img-k0TkGW5f-1717227770016)]
总结:1、ext4创建inode号,inode满了以后,不能继续创建inode号。
2、xfs创建文件,消耗inode号,inode号满了以后,可以继续创建inode号,df -i显示可用inode号个数10237,最终消耗10365个inode号。