linux cpu占用率如何看
265
2022-10-09
Linux文件系统与日志分析(Linux部分)
Linux文件系统与日志分析
一、inode和block
Ⅰ.概述
文件数据包括元信息与实际数据 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节 block(块)连续的八个扇区组成一个block(4K)是文件存取的最小单位 inode(索引节点)中文译名为“索引节点”,也叫i节点:用于存储文件元信息 操作系统读取硬盘的时候,是一次性连续读取多个扇|区,即一个块一个块的读取的。文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode一个文件必须占用一个 inode,并且至少占用一个block
元信息 ---> | inode |
---|---|
数据 ---> | block |
Ⅱ.inode
erinode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。 当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。 查看文件名对应的inode号码有两种方式:ls -i 文件名 ;stat 文件名
Ⅲ、inode包含文件的元信息
文件的字节数 文件拥有者的User ID 文件额Group ID 文件的读、写、执行权限 文件的时间戳 用stat命令可以查看某个文件的inode信息:
目录文件结构:目录也是一种文件
文件名1 | inode号码1 |
---|---|
文件名2 | inode号码2 |
...... | ...... |
Ⅳ、inode的号码
用户通过文件名打开文件时,系统内部的过程
系统找到这个文件名对应的inode号码 通过inode号码,获取inode信息 根据inode信息,找到文件数据所在的block,读出数据 查看inode号码的方法 ls -i命令:查看文件名对应的inode号码ls -i aa.txt ostat命令:查看文件inode信息中的inode号码stat aa.txt
Ⅴ、文件存储小结
硬盘分区后的结构
访问文件的简单流程
Ⅵ、inode的大小
inode也会消耗硬盘空间:每个inode的大小—般是128字节或256字节 格式化文件系统时确定 inode 的总数 使用 df -i 命令可以查看每个硬盘分区的 inode 总数和已经使用的数量 通常情况下不需要关注单个inode 的大小,而是需要重点关注inode总数。
二、硬链接与软链接
Ⅰ、创建硬链接
Ⅱ、创建软链接
为文件或目录建立链接文件
链接文件分类:
软链接 | 硬链接 | |
---|---|---|
删除源文件后 | 失效 | 仍旧可用 |
适用范围 | 适用于文件或目录 | 只可用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一文件系统中(如Linux分区)内 |
三、恢复误删除的文件
Ⅰ、恢复XFS类型文件
CentOS 7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump与xfsrestore 工具进行备份恢复。
xfsdump命令格式
xfsdump -f 备份存放位置 要备份的路劲或设备文件
xfsdump备份级别(默认为0)
xfsdump 的备份级别有两种: 0表示完全备份;**1-9表示增量备份**。
xfsdump 命令常用的选项: -f:指定备份文件目录 -L:指定标签session label -M:指定设备标签media label -s:备份单个文件,-s后面不能直接跟路径 xfsdump使用限制: 只能备份已挂载的文件系统 必须使用root的权限才能操作 只能备份XFS文件系统 备份后的数据只能让xfsrestore解析 不能备份两个具有相同UUID的文件系统(可用blkid命令查看) xfsrestore命令格式 xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
Ⅱ、模拟删除并执行恢复操作
四、分析日志文件
Ⅰ、日志功能
用于记录系统、程序运行中发生的各种事件 通过阅读日志,有助于诊断和解决系统故障
Ⅱ、日志文件分类
内核及系统日志:
由系统服务rsyslog统一进行管理,日志格式基本相似 主配置文件/etc/rsyslog.conf
用户日志:
记录系统用户登录及退出系统的相关信息
程序日志:
由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置:默认位于/var/log/下
常见日志文件:
内核及公共消息日志:/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。 计划任务日志:/var/log/cron:记录crond计划任务产生的事件信息。 系统引导日志:/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。 邮件系统日志:/var/log/maillog:记录进入或发出系统的电子邮件活动。 用户登录日志:/var/ log / secure:记录用户认证相关的安全事件信息。/var/log/lastlog:记录每个用户最近的登录事件。二进制格式/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式
Ⅲ、内核及系统日志
由系统服务 rsyslog 统一管理
软件包:rsyslog-7.4.7-16.el7.x86_64 主要程序:/sbin/rsyslogd 配置文件:/etc/rsyslog.conf
日志消息级别
设备字段
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 | 用户进程 |
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
0 | EMERG (紧急) | 会导致主机系统不可用的情况。如系统崩溃 |
---|---|---|
1 | ALERT(警告) | 必须马上采取措施解决的问题。如数据库被破坏 |
2 | CRIT (严重) | 比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能 |
3 | ERR (错误) | 运行出现错误。不是非常紧急,尽快修复的 |
4 | WARNING(提醒) | 可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等 |
5 | NOTICE(注意) | 不会影响正常功能,但是需要注意的事件。无需处理 |
6 | INFO (信息) | 一般信息。正常的系统信息 |
7 | DEBUG(调试) | 程序或系统调试信息等。包含详细开发的信息,调试程序时使用 |
none | 没有优先级,不记录任何日志消息 |
例子:
mail.info /var/log/maillog :比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中
mail.=info /var/log/maillog :明确指定日志级别为info,保存至/var/log/maillog
mail.!info/var/log/maillog :除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog
*.info/var/log/maillog :所有facility的info级别,保存至/var/log/maillog
mail.* /var/log/maillog : mail的所有日志级别信息,都保存至/var/log/maillog
mail.notice;news.info /var/log/maillog : mail的notice以上记得日志级别和news的info以上的级别保存至/var/logy/maillog
mail,news.crit -/var/log/maillog : mail和news的crit以上的日志级别保存/var/log/maillog中;"-"代表异步模式
Ⅳ、用户日志分析
保存了用户登录,退出系统等相关信息
/var/log/lastlog #最近的用户登录事件 /var/log/wtmp #用户登录、注销及系统开、关机事件 /var/run/utmp #当前登录的每个用户的详细信息 /var/log/secure #与用户验证相关的安全性事件
分析工具
users、who、w、last、lastb last命令用于查询成功登录到系统的用户记录 lastb命令用于查询登录失败的用户记录
Ⅴ、程序日志分析
由相应的应用程序独立进行管理
Web服务: /var/log/httpd/ access_log //记录客户访问事件 error_log //记录错误事件 代理服务: /varllog/squid/ access.log cache.log 分析工具: 文本查看、grep过滤检索、VVebmin管理套件中查看awk、sed等文本过滤、格式化编辑工具oWebalizer、Awstats等专用日志分析工具
Ⅴ、日志管理策略
及时做好备份和归档 延长日志保存期限 控制日志访问权限:日志中可能会包含各类敏感信息,如账户、口令等 集中管理日志: 将服务器的日志文件发到统一的日志文件服务器 便于日志信息的统一收集、整理和分析 杜绝日志信息的意外丢失、恶意篡改或删除
Ⅵ、配置日志服务器收集日志
rsyslog是一个C/S架构,可以通过套接字来进行监听记录工作,可以基于TCP和UDP工作,默认的监听端口是514,只需要在MODULES打开即可。
发送服务器:客户端 192.168.80.20 收集服务器:服务端 192.168.80.30
关闭服务端和客户端防火墙 selinux setenforce 0 systemctl stop firewalld systemctl disable firewalld 修改客户端配置文件,并启动服务
vim /etclrsyslog.conf
MODULES
##将下面四行前的注释取消掉 $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
RULES
##添加下列内容 $template myFormat,"%timestamp% %hostname% %syslogseverity-text% %syslogtag% %msg%\n" $ActionFileDefaultTemplate myFormat *.info;mail.none; authpriv.none;cron.none @@ 192.168.80.30:514 #%timestamp% #时间载 #%fromhost-ip% #接收的信息来自于哪个节点的IP %hostname% #主机名 #%syslogseverity-text% #日志等级 #%syslogtag% #服务进程 #%msg% #日志内容 #接收方IP前面一个e表示TCP传输,两个@表示UDP传输 systemctl restart rsyslog
修改服务器端配置文件,并启动服务
vim /etc/rsyslog.conf ##将下面四行前的注释取消掉 $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 ##添加以下内容 $AllowedSender tcp,192.168.80.0/24 #允许192.168.80.0 网段内的主机以tcp协议来传输 $template Remote, " /data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" ##定义模板,接受日志文件路劲,区分了不同主机的日志 :fromhost-ip, !isequal,“127.0.0.1” ?Remote #过滤掉server 本机的日志
systemctl restart rsyslog
在服务端创建/data/log目录,以接受大量日志信息,配置文件中的路径应当与该路径一致
mkdir -p /data/log
验证:
客户端的终端命令行输入或者重启一个服务
logger “hello world”
在服务端查看日志文件
tree / data/log/
五、jorunalctl 命令
日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。297 白志的配置文件是/etc/systemd/journald.conf
Ⅰ、查看所有日志(默认情况下,只保存本次启动的日志)
journalctl journalctl -r #一r表示倒序,从尾部看(推荐)
Ⅱ、
Ⅲ、查看系统本次启动日志
journalctl -b [-0]
Ⅳ、查看上一次启动的日志(需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志)
journalctl -b -1
Ⅴ、显示尾部指定行数的日志(查看的是/var/log/messages的日志,但是格式上有所调整,如主机名格式不一样而)
journalctl -n 20 [-f]
Ⅵ、查看某个服务的日志
journalctl -u nginx.service [-f]
Ⅶ、查看指定进程的日志
journalctl _PID=1
Ⅷ、查看指定用户的日志
journalctl_UID=0 --since today journalctl -xe
-x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址 -e pager-end 从末尾开始看
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~