Linux文件系统与日志分析
恢复XFS类型的文件
Centos 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复
- xfsdump 的命令格式为:
xfsdump —f 备份存放位置 要备份的路径或设备文件
- xfsdump备份级别
0 #表示完全备份
1—9 #表示增量备份
xfsdump 的备份级别默认为0
xfsdump 命令常用的选项:
—f:指定备份文件目录
-L:指定标签 session labe1
-M:指定设备标签 media 1abel
—s:备份单个文件,—s后面不能直接跟路径
xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用b1kid命令查看)
#使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe/dev/sdb
mkfs.xfs [-f]/dev/sdb1
mkdir/data
mount /dev/sdb1 /data/
cd/data
cp /etc/passwd ./
mkdir test
touch a.txt test/
使用xfsdump命令备份整个分区
rpm -q xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
模拟数据丢失并使用xfsrestore 命令恢复文件
cd /data/
rm -rf *
ls
## 恢复删除的文件
xfsrestore -f /opt/dump_sdb1 /data/
复制文件–cpio
cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复
使用 cpio 命令备份或恢复数据,需注意以下几点:
- 使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。
- cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。
- cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)。
cpio -ovcB > 文件
各选项含义如下:
-o:copy-out模式,备份;
-v:显示备份过程;
-c:使用较新的portable format存储方式;
-B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;
##例如
find /etc -print | cpio -ocvB > /opt/etc.cpio
#利用find命令指定要备份/etc/目录,使用>导出到etc.cpio文件
cpio -ivcdu < 文件|设备
各选项的含义为:
-i:copy-in 模式,还原;
-v:显示还原过程;
-c:较新的 portable format 存储方式;
-d:还原时自动新建目录;
-u:自动使用较新的文件覆盖较旧的文件;
##例如
cpio -idvcu < /opt/etc.cpio
"-p" 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件
##例如
cd /opt
rm -rf *
mkdir test
find /boot/ -print | cpio -p /opt/test
#备份boot 目录 到 /opt/test目录下
ls /opt/boot
日志文件
-
日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
-
日志文件的分类
-
内核及系统日志
- 由系统服务rsyslog统一进行管理,日志格式基本相似
- 主配置文件/etc/rsyslog.conf
-
用户日志
- 记录系统用户登录及退出系统的相关信息
-
程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
-
#查看日志文件 ,要先确保 rsyslog 服务为开启且为开机自启状态
systemctl status rsyslog
cd /etc/rsyslog.conf
日志保存默认位置 : /var/log 目录下
主要日志文件
内核及公共消息日志 | ·/var/log/messages |
---|---|
计划任务日志 | ·/var/log/cron |
系统引导日志 | ·/var/log/dmesg |
邮件系统日志 | ·/var/log/maillog |
用户登录日志 | ·/var/log/lastlog ·/var/log/secure ·/var/log/wtmp ·/var/run/btmp |
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等,对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
/var/log/cron:记录crond计划任务产生的事件信息。
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog:记录进入或发出系统的电子邮件活动。
/var/log/lastlog:记录每个用户最近的登录事件。(只记录成功的信息,且是二进制文件)
/var/log/rpmpkgs:记录系统中安装的各rpm包列表信息。
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
/var/run/btmp:记录失败的、错误的登录尝试及验证事件。
内核及系统日志
- 由系统服务 rsyslog 同一管理
- 软件包 rsyslog
- 主要程序 : /sbin/rsyslogd
- 配置文件 : /etc/rsyslog.conf
日志消息级别
数字等级越小,优先级越高,消息越重要
none 没有优先级,不记录任何日志消息
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
日志记录的一般格式
*.info;mail.none;authpriv.none;cron.none /var/log/messages
##*.info:表示从info级别往上都能记录
##mail.none:mail日志都不做记录
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Save boot messages also to boot.log
local7.* /var/log/boot.log
### local7 表示用户自定义
举例:
mail.info /var/log/maillog
比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中
mail.=info /var/log/mai1log
明确指定日志级别为info,保存至/var/log/maillogl
mail.!info /var/log/maillog
除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog
*.info /var/1og/mail1oq
所有facility的info级别,保存至/var/log/maillocl
mail.* /var/1og/maillog
mail的所有日志级别信息.都保存至/var/log/maillogl
mail.notice;news.info /var/log/maillog
mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog
mail,news.crit —/var/log/maillog
mail和news的crit以上的日志级别保存/var/log/maillog中
“—”代表异步模式
设备字段说明 | |
---|---|
auth | 用户认证时产生的日志 |
authpriv | ssh、ftp等登录信息的验证信息 |
daemon | 一些守护进程产生的日志 |
ftp | FTP产生的日志 |
lpr | 打印相关活动 |
mark | rsyslog服务内部的信息,时间标识 |
news | 网络新闻传输协议(nntp)产生的消息 |
syslog | 系统日志 |
uucp | Unix-to-Unix Copy 两个unix之间的相关通信 |
console | 针对系统控制台的消息 |
cron | 系统执行定时任务产生的日志 |
kern | 系统内核日志 |
local0-local7 | 自定义程序使用 |
邮件日志 | |
user | 用户进程 |
手动修改程序日志文件存储目录
以 httpd 为例
yum -y insyall httpd
cd /etc/httpd
vim /conf/httpd.conf
ErrorLog "logs/error_log" ##httpd服务的错误日志的默认保存位置
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
ErrorLog "local5.err" ##自定义日志保存设备为 local5
在 rsyslog.conf 中添加
local5.* 目标文件
就可以指定文件日志的保存位置
rsyslog 收集 apache 日志
vim/etc/httpd/conf/httpd.conf
#ErrorLog logs/error_log
##方法一:
ErrorLog syslog
#修改配置表示对 error_log 启用 syslog
LogLevel notice
#notice 及以上的 log 全部记录,默认的 facility是 loca17
##方法二:
ErrorLog "|/usr/bin/logger -p local5.notice"
#error_log 全部通过管道写入 syslog,并且 1og的 facility 配置为 local5
#LogLevel warn
#CustomLog logs/access_log combined
CustomLog "|/usr/bin/logger -p local4.info" combined
#access_1og全部通过管道写入syslog,并且1og的Jfacility配置为1oca14 #logger—p指定输入消息的优先级,优先级可以是数字或者指定为"facility.level”的格式
# Save local4 to a file
local4.* /opt/apache_access_1og
# Save local4 to a file
1ocal5.* /opt/apache_error_log
用户日志分析
lastb ##用于查询登陆失败的用户记录
last ##用于查询成功登陆到系统的用户记录
程序日志分析
由相应的应用程序独立进行管理
-
Web服务: /var/log/httpd/
- access_log //记录客户访问事件
- error_log //记录错误事件
-
代理服务:/var/log/squid/
-
access.log、cache.log
-
分析工具
-
文本查看、grep过滤检索、Webmin管理套件中查看
-
awk、sed等文本过滤、格式化编辑工具
-
Webalizer、Awstats等专用日志分析工具
cd /var/log
vim messages
cat messages | grep httpd
日志管理工作
-
及时作好备份和归档
-
延长日志保存期限
-
控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户、口令等
-
集中管理日志
- 将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的统一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意莫改或删除