文件系统和日志管理
一、文件系统
1.概述
文件系统:文件系统提供了一个接口,用户用来访问硬件设备(硬盘)。硬件设备上对文件的管理。文件存储在硬盘上,硬盘最小的存储单位是512字节(扇区)。文件在硬盘上的最小存储单位:块(block) 一个块的大小是4k,一个块就是连续的8个扇区。
2.存储文件的方式
-
实际数据
文件内部的数据保存在硬盘上
-
元信息
文件的所有者、所在组、最后一次修改时间、文件的大小、文件的权限等。
存储元信息的标识:inode号
inode:不包含文件名,每个文件(目录)创建时都会分配一个全局(当前设备)唯一的识别码。
识别码inode,当一个文件被删除之后,inode号也会回收,供下一个文件继续使用。
df -i #查看挂载点inode号使用的情况
硬盘的空间越大,可用的inode号越多
文件无法被创建的原因
磁盘损坏;磁盘配额限制;inode号用尽
ext4文件系统 用完了inode号,文件不能再创建
xfs文件系统 inode号用尽,还可以创建文件(有限)
inode号和文件名分离,使得linux操作系统会出现以下几个现象:
- 文件名包含特殊字符可能无法正常删除(rm -rf),只能通过inode号进行删除
- 剪切或者重命名文件,inode号不会发生变化
- 当用户对文件进行操作时,系统以inode号来识别,不以文件名
- 文件的数据发生变化,文件的权限发生变化,inode号可能发生改变
3.xfs文件系统的备份和恢复
在ubuntu上操作:
#安装依赖环境
apt -y install xfsdump
apt -y install xfsprogs
先备份再恢复
xfsdump 备份
备份级别:0 和 1-9
0 表示全量备份,xfsdump默认备份级别为0
1-9 表示增量备份
xfsdump的常用选项:
-f 指定备份文件的目录
-L 指定标签
-M 指定设备标签
-s 备份单个文件(一般不使用)
xfsrestore 恢复
-f 指定从哪个文件进行恢复
xfs备份恢复的注意点:
1、只有root权限才能备份和恢复
2、备份的目录必须是已挂载的设备
3、挂载的设备必须是xfs文件系统
4、恢复数据必须使用xfsrestore进行解析恢复
二、日志系统
1.概述
日志:记录系统或者应用运行期间”所有信息“的文档。记录了一些必要的信息,关键的信息。
信息的意义:
- 判断系统或者程序是否正常运行
- 记录了故障的信息,告诉我们是什么原因产生的故障
2.日志的种类
系统日志
基本操作系统控制,产生的日志信息
ubuntu /var/log/syslog
centos /var/log/messages
常见的系统日志文件
/var/log/syslog 记录了linux系统的内核消息以及各种应用的公共日志信息(系统控制产生的消息),包括启动、IO错误、网络错误、程序的故障
/var/log/cron 记录的定时任务产生的信息
/ver/log/secure 用户登录系统认证的相关信息
/var/log/maillog 记录的电子邮件的信息
Nov 7 16:33:23 日志产生的时间
ubuntu1 主机名
systemd[1] systemd设备字段 [1]运行的pid号 systemd这个程序是系统当中的第一个进程,systemd是所有进程的父进程
apt-daily.service: Deactivated successfully 日志的内容
应用服务日志
- 一般的应用安装完成之后,/var/log/服务的名称,记录的就是使用这个程序过程中产生的信息,不会记录到系统的日志中去
- 自定义位置,修改应用的配置文件,可以自定义服务的日志路径
- 日志的位置就在应用的安装目录 logs目录
基本上90%的应用日志的目录都是logs,都是以.log为结尾的文件
192.168.206.1 电脑主机,谁访问了nginx的服务
[07/Nov/2024:16:48:28 +0800] 访问nginx的时间
"GET / HTTP/1.1" GET 访问nginx的方式 / 访问的路径 HTTP/1.1 访问使用的协议
200 是服务器响应的状态码。396 服务器返回了396字节的数据。
"Mozilla/5.0 .......Edg/130.0.0.0" 具体信息:由安装了Edge浏览器的Windows 10系统发出请求。具体版本是Chrome/130.0.0.0和Edg/130.0.0.0
3.设备的字段
设备字段 | 说明 |
auth | 用户认证的日志 |
systemd | 系统管理程序的日志 |
cron | 定时任务的信息 |
邮件的信息 | |
kern | 系统内核的信息 |
local | 自定义需要保存的日志,0-7都可以适用。对应的程序设置的local等级要一致 |
实验:ssh服务单独存放
rsyslog #linux系统管理系统日志的工具
vim /etc/rsyslog.conf #管理系统日志的配置文件
local6.* /var/log/ssh.log
vim /etc/ssh/sshd_config
SyslogFacility LOCAL6 #定义设备的名称,必须大写
#只要修改了应用的配置,想要配置生效,必须重启该应用
systemctl restart rsyslog
systemctl restart sshd
4.日志的级别
0-7 数字越小,优先级越高,消息越重要
级别 | 说明 |
0 emerg | 紧急,系统/应用不可用,系统/应用崩溃的重要消息 |
1 alert | 警告,必须马上采取措施的信息,比如磁盘快满了、数据库被破坏 |
2 crit | 严重,程序的功能丧失,程序无法正常使用 |
3 error | 错误,运行出现了错误,需要尽快修复(看情况) |
4 warning | 提醒,可能影响,但是不重要,只是提醒用户,不属于报错的范围 |
5 notice | 注意,不影响正常功能,但是需要注意的时间,无需处理 |
6 info | 信息,一般信息,正常运行的信息 |
7 debug | 调试,开发人员调试程序是产生的信息 |
none | 没有优先级,不记录任何日志的消息 |
#以上的优先级,可以用户自定义日志的级别,以获取我们想要的内容
*.*
左边:应用名称 右边:日志级别
mail.info /var/log/mail.log 收集邮件的信息,包含info 以及info以上级别的信息
mail.=info /var/log/mail.log 收集邮件的信息,只收集info级别的日志
mail.!info 除了info级别的信息,其他的都收集
*.info /var/log/syslog *表示所有的程序(应用服务内核)
mail.* *表示所有级别的日志都收集
*.info;mail.none;nginx.=error /var/log/syslog (多个用;分开)
所有的程序的一般及一般以上和邮件的日志不记录和nginx只记录error的日志,保存到/var/log/syslog
5.journalctl 系统日志管理工具
journalctl -u 应用名称 #只看某个应用
journalctl _PID=数字 #查看该进程号的信息
查看指定用户的日志:
journalctl _UID=数字 --since today #指定用户今天的日志
journalctl _UID=数字 --since yesterday #指定用户昨天产生的日志
journalctl -xe 查看系统中systemd的日志