文章目录
文件系统和日志管理
1 文件系统
1.1 概述
文件系统:文件系统提供了一个接口,用户用来访问硬件设备(硬盘)。
文件存储在硬盘上,硬盘最小的存储单位是512字节,扇区。
文件在硬盘上的最小存储单位:块 block
一个块的大小是4k,一个块就是连续的8个扇区。
存储文件的方式:实际数据 和 元信息
实际数据:文件内部的数据保存在硬盘上
元信息:文件的所有者,所在组,最后一次修改时间,文件的大小,文件的权限等
存储元信息的标识:inode号
inode:不包含文件名,每个文件(目录)创建都会分配一个全局(当前设备)唯一的识别码。
当一个文件被删除之后,inode号也会回收,供下一个文件继续使用。
系统都是识别文件的inode号,一个文件必须有一个inode号,至少占用一个块。
1.2 inode号
1.2.1 查明inode号的命令
ls -i
stat 文件名
解释:
-
访问时间:2024-11-07 11:18:23.824705109 +0800
atime:access time,当用户读这个文件,更新这个时间
-
修改时间:2024-11-07 11:18:23.824705109 +0800
mtime:modify time,更新数据大小和权限时,会修改这个时间
-
变更时间:2024-11-07 11:18:23.824705109 +0800
ctime:change(status) time,只当修改权限和属性时,会发生变化。
df -i 查看挂载点inode号使用情况
# 硬盘的空间越大,可用的inode号越多。
1.2.2 模拟inode号耗尽的情况
-
在ext4文件系统中,inode号用尽,则不能再创建文件
-
在xfs文件系统中,inode号用尽,还可以创建文件(部分,大约几十个)
1.3 文件的备份和恢复
因为ext4文件系统备份失败的几率比较大,所以主要以xfs文件系统为主。
xfs实现备份和恢复命令:(需安装 xfsprogs
和 xfsdump
)
xfsdump 备份
-f 指定备份文件
-L 指定文件标签
-M 指定设备标签
-s 备份单个文件(一般不使用)
xfsrestore 恢复
-f 指定从哪个备份文件进行恢复
xfsdump备份有两个级别:0 和 1-9
0: 表示完全备份
1-9:增量备份(一般不用)
xfsdump默认级别就是0,全量备份
例:
xfsdump -f /opt/backup /dev/sdb2 [-L backup -M sdb2]
xfsrestore -f /opt/backup /data2
解释:
-
-f /opt/backup:backup是一个文件,而且必须是空文件,否则备份会失败而且不能是目录
-
/dev/sdb2 备份的设备
-
-L 备份文件的标签
-
-M 备份设备的标签
原理:把/dev/sdb2里面的所有文件备份到/opt/backup的文件当中。备份的是二进制代码,通过代码恢复inode号。
xfs备份恢复注意点:
1. 只有root权限才能备份和恢复
2. 备份的目录必须是已挂载的设备
3. 挂载的设备必须是xfs文件系统
4. 恢复数据必须使用xfsrestore进行解析
5. 两个设备的UUID相同不能备份(一般不会)
2 日志管理
一般来说,Linux系统的日志存放位置:
Ubuntu:/var/log/syslog
CentOS:/var/log/messages
2.1 日志类型
2.1.1 服务日志
服务自己的日志:记录的就是使用这个程序过程中产生的信息,不会记录到系统的日志中,都是以.log
结尾的文件
1. 一般的应用安装完成之后,/var/log/服务的名称/
2. 自定义位置,修改应用的配置文件,可以自定义服务的日志路径
3. 日志的位置就在应用的安装目录 logs目录(基本上90%的应用日志的目录都是logs)
2.1.2 系统日志
基本操作系统控制,产生的日志信息
常见的系统日志文件:
系统日志文件 | 作用 |
---|---|
/var/log/syslog | 记录了linux系统的内核消息以及各种应用的公共日志信息(系统控制产生的消息),包括启动,IO错误,网络错误,程序的故障等等。 |
/var/log/cron | 记录的是定时任务产生的信息 |
/var/log/secure | 用户登录系统认证的相关信息 |
/var/log/maillog | 记录的是电子邮件的信息 |
2.2 日志级别
0-7:数字越小,优先级越高,消息越重要
级别 | 字符表示 | 含义 |
---|---|---|
0 | EMERG | 紧急,系统/应用不可用,系统崩溃,服务崩溃的重要信息 |
1 | ALERT | 警告,必须马上采取措施的信息,磁盘快满了,数据库被破坏 |
2 | CRIT | 严重,程序的功能丧失,程序无法正常访问 |
3 | ERROR | 错误,运行出现了错误,需要尽快修复(看情况) |
4 | WARNING | 提醒,可能影响,但是不重要,只是提醒用户 |
5 | NOTICE | 注意,不影响正常功能,但是需要注意的时间,无需处理 |
6 | INFO | 信息,一般信息,正常运行的信息 |
7 | DEBUG | 调试,开发人员调试程序时产生的信息 |
NONE | 没有优先级,不记录任何消息日志 |
以上的优先级,可以用户自定义日志的级别,以获取我们想要的内容。
-
格式:* . *
左边 " * " :应用名称
右边 " * " :日志级别 -
例:
-
Mail.info :收集邮件的信息,包含info以及info以上级别的信息
-
Mail.info /var/log/mail.log :收集邮件的信息,包含info以及info以上级别的信息
-
Mail.=info /var/log/mail.log:收集邮件的信息,只收集info级别的日志
-
Mail.!info:除了info级别的信息,其他的都收集
-
*.info /var/log/syslog:*所有的程序的info以及info级别以上都收集
-
Mail.*:mail的所有级别的日志都收集
-
*.info;mail.none;nginx.error /var/log/syslog
所有的程序的一般及一般以上和邮件的日志不记录和nginx只记录error的日志 保存到/var/log/syslog。
设备字段 | 含义 |
---|---|
auth | 用户认证的日志 |
systemd | 系统管理程序的日志 |
cron | 定时任务的信息 |
user | 用户进程信息 |
邮件信息 | |
kern | 系统内核的信息 |
local | 自定义服务(0-7都可以使用,对应的程序设置的local等级要一致) |
2.3 日志字段说明
2.3.1 系统日志字段
Nov 7 13:54:33 test1 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
解释:
- Nov 7 13:54:33: 日志产生的时间
- test1 主机名
- systemd[1]: systemd就是设备字段 [1]运行的pid号 systemd这个程序是系统当中的第一个进程 systemd是所有进程的父进程。
- Failed to start A high performance web server and a reverse proxy server: 日志的内容
2.3.2 应用日志字段
192.168.233.1 -- [07/Nov/2024:13:52:58 +0800] "GET /123 HTTP/1.1" 404 197 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
解释:
- 192.168.233.1:谁访问了nginx的服务
- [07/Nov/2024:13:52:58 +0800]:访问nginx的时间
- “GET /123 HTTP/1.1”:GET 访问nginx的方式
- /123:访问的内容
- http/1.1:访问使用协议
- 404:当对方请求之后,nginx给客户端的响应码告诉用户访问的结果是成功还是失败
- “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36”:记录客户端访问nginx的方式
2.4 journalctl
journalctl 日志管理工具:查看系统日志,应用日志不在管理范围之内
journalctl -u 应用名称
journalctl _PID=? 进程的pid号
查看指定用户的日志:
journalctl _UID=0 --since today 指定用户今天的日志
journalctl _UID=0 --since yesterday 指定用户昨天产生的日志
journalctl -xe 查看系统中systemd的错误的日志
2.5 实验
rsyslog:linux系统管理系统日志的工具
步骤如下:
/etc/ssh/sshd_config配置如下:
/etc/rsyslog.conf配置如下:
在/var/log中使用 ls 即可发现ssh.log