当前位置: 首页 > article >正文

11、文件系统和日志管理

文件系统

文件系统提供了一个接口,用户可以来访问硬件接口(硬盘)。

文件存储在硬盘上,硬盘最小的存储单位是512字节(扇区)。

文件在硬盘上的最小存储单位:块(biock),一块的大小是4K,一个块就是连续的8个扇区。

文件存储的形式

一个文件存储分为实际数据和元信息存储

  • 实际数据:文件内部的数据保存在硬盘上。
  • 元信息:文件的所有者,所在组,最后一次修改时间,文件的大小,文件的权限等。

存储元信息的标识:inode号

inode:不包含文件名,每个文件/目录创建都会分配一个全局(当前设备)唯一的识别码。

识别码就是inode号,当一个文件被删除之后,inode号会被回收,供下一个文件使用。

一个文件必须有一个inode号,至少占用一个块。

inode号的机制

们可以使用 ls  -i  或者   stat  命令查看inode号:

  • 访问时间:atime,当用户读这个文件,更新这个时间
  • 修改时间:mtime,更新数据大小和权限时,会修改这个时间
  • 变更时间:ctime,只当修改权限和属性时,会发送变化

inode号用尽了,文件无法再创建,怎么查看一个文件系统可使用的inode号:

df     -i ——查看挂载点inode号使用情况

inode号:硬盘的空间越大,可用的inode号越多。

inode号和文件名分离,使得Linux操作系统会出现以下几个现象:

  • 文件名包含特殊字符可能无法正常删除(rm -rf),只能通过inode号进行删除。
  • 剪切或者重命名文件,inode号不会发生变化。
  • 当我们对文件操作时,系统以inode号来识别,不以文件名。
  • 文件的数据发生变化,文件的权限发生变化,inode号可能也会发生变化。

inode号耗尽的情况:

  • ext4:用完了inode号,不能再创建文件
  • xfs:inode号用尽,还可以创建文件,但是数量是有限制的。

工作涉及的环境

dev:开发环境

sit:测试环境

pre:预生产环境,sit和pre与生产环境是同步的

prd:生产环境,对外提供访问的环境

系统文件的备份和恢复

ext4文件系统失败率太高不推荐,最好使用xfs文件系统。

xfs实现备份和恢复

xfsdump——备份

xfsrestore——恢复

xfsdump恢备份有两个级别: 0       1-9

0:完全备份(默认级别)

1-9:增量备份(不用)

xfs备份——xfsdump

xfsdump的常用选项:

  • -f——指定备份的文件目录
  • -L——指定文件标签
  • -M——指定设备标签
  • -s——备份单个文件(一般不使用)

首先我们可以创建一个硬盘分区sdb1,挂载到 /data1,然后在/data1里面写东西,再进行备份,操

作如下:

命令:xfsdump    -f     /opt/backup     /dev/sdb1     [-L    backup    -M    sdb1]

  • /opt/backup:必须是一个空文件,否则备份会失败,而且不能是目录
  • /dev/sdb2:备份的设备
  • -L:备份文件标签
  • -M:备份设备标签

这时候我们已经成功把/data1中的内容都备份到 /opt/backup文件中,可见 backup 只是个文件并不

是目录,并且里面都是二进制代码。

总结:把 /dev/sdb2 里面的所有文件备份到 /opt/backup 的文件当中。/opt/backup备份文件中全是

二进制代码,通过代码恢复inode号。

xfs恢复——xfsrestore

xfsrestore的常用选项:

  • -f——指定从哪个备份文件进行恢复到那个目录

最好我们使用xfsrestore命令完成恢复,将 /opt/backup文件内容通过二进制恢复到 /data1目录下,

变成原因文件和数据。

命令:xfsrestore     -f     /opt/backup      /data1

xfs备份恢复注意点

  1. 只有root权限才能备份和恢复
  2. 备份的目录必须是已挂载的设备
  3. 挂载的设备必须是xfs文件系统
  4. 恢复数据必须使用xfsrestore进行解析恢复
  5. 两个设备的UUID相同不能备份

日志系统

日志基础知识

日志:记录了系统或者应用运行期间“所有信息的”文档,记录了一些必要的信息,关键的信息。

信息的意义:

  1. 判断系统或者程序是否正常运行
  2. 记录了故障的信息,告诉我们是什么原因产生的故障

系统日志位置:

/var/log/syslog             ubuntu

/var/log/messages       centos

服务日志位置:

  • 一般的应用安装完成之后: /var/log/服务的名称/
  • 自定义位置:修改应用的配置文件,可以自定义服务的日志路径
  • 就在应用当前的安装目录,logs目录

都是以  .log结尾的文件

常见的系统日志文件种类

/var/log/syslog:记录了Linux系统的内核消息以及各种公共应用日志消息(系统控制产生的消息),包括启动、IO错误、网络错误、程序的故障等等。

服务日志:记录的就是使用这个过程中产生的信息,不会记录到系统日志中。

系统日志:基本操作的系统控制,产生的日志信息

/var/log/cron:记录定时时任务产生的信息

/var/log/secure:用户登录系统认证的相关信息

/var/log/maillog:记录的时电子邮件的信息

日志的级别0-7

数字越小,优先级越高,消息越重要。

  • 0——emerg,紧急,系统或者应用不可用,系统、服务崩溃等重要报错信息。
  • 1——alert,警告必须马上采取措施的信息,磁盘快满了,数据库被破坏等。
  • 2——crit,严重,程序的功能丧失,程序无法正常访问。
  • 3——error,错误,运行出现了错误,需要尽快修复(看情况)。
  • 4——warnng,提醒,可能会影响系统功能,但是不重要,只是提醒用户,不属于报错范围。
  • 5——notice,注意,不影响系统功能,但是需要注意的事件,无需处理。
  • 6——info,信息,一般信息,正常运行的信息。
  • 7——debug,调试,开发人员调试程序产生的信息。

排错的话,注意的是0-4

none——没有优先级,不记录任何消息日志。

以上的优先级,可以用户自定义日志的级别,已获取我们想要的内容。

日志收集

表达形式——*.*

  • 左边:应用设备名称
  • 右边:0-7的日志级别

如:Mail.info:收集邮件的信息,包含info以及info以上级别的信息。

Mail.info    /var/log/mail.log :收集邮件的信息,包含info以及info以上级别的信息。

Mail.=info    /var/log/mail.log :收集邮件的信息,只收集info级别的信息。

Mail.! info    /var/log/mail.log :除了info级别的信息,其他都要收集。

*.info  /var/log/sysog :* 所有的程序,info以及info以上级别的,记录在 /var/log/sysog 中。

mail.*:所有级别的日志都收集。

*.info;mail.nome;nginx.=error   /var/log/sysog

所有程序的一般及以上和邮件的日志不计和nginx只记录error的日志,保存到 /var/log/sysog

设备的名称

auth:用户认证的日志

systemd:系统管理程序的日志

cron:定时任务的信息

user:用户进程的信息

mail:邮件的信息

kern:系统内核的信息

local:自定义服务,我们可以自己定义我们需要保存的日志(0-7)都可以使用;对于的程序设置的local等级要一致。

系统日志和应用日志分析

系统日志:

Nov  7 13:32:37——日志产生的时间

zw2——主机名

systemd[1]——systemd:设备字段;[1]:运行的pid号。(systemd是系统当中的第一个进程,systemd是所有进程的父进程)。

Started Run anacron jobs——日志的内容

应用日志:

192.168.233.1——谁访问了这个服务

[07/...........0800]——访问这个服务的时间

“GET /123......1.1“——GET:访问服务的方式;/123:访问的内容;HTTP/1.1:访问使用的协议

404:当对方请求之后,这个服务给客户端相应码,告诉用户访问的结果是成功还是失败。

”Mozilla........537.36“——记录客户端访问这个服务的方式

针对系统日志的管理工具——journalctl

查看指定应用的日志

journaltcl     -u      应用名称——只查看这个应用的日志

journaltcl_PID=14400——只查看这个pid号的日志

如我们查看关于ssh的系统日志

查看指定用户的日志

journalctl_UID=0 --since today——查看今天指定用户(root)的日志

journalctl_UID=0 --since yesterday——查看昨天指定用户(root)的日志

journalctl   -xe——查看系统中systemd的错误日志

实验——ssh服务日志单独存放

rsyslog——Linux系统管理系统日志的工具

我们进入管理端的rsyslog.conf文件的编辑模式,在记录日志行后面加入local6.*  /var/log/ssh.log,表示我们自定义设备local6,把所有级别的日志加入到  /var/log/ssh.log文件中。

接下来我们进入应用端也就是ssh端的管理文件, /etc/ssh/sshd_config编辑中,加入SyslogFacility  LOACL6,表示我们在ssh端定义LOACL6的名字。

最后我们重启这两个文件配置,因为修改完配置文件后如果要配置生效一定要重启服务。

这时候在/var/log/ 中就会有 ssh.log 文件

如果没有 ssh.log 文件,需要我们再开个虚拟机,在他的xshell远程端,输入命令ssh   root@192.168.254.12#第一台机的IP地址,登进去再看就会有了。

这时候我们试试监控ssh日志,会发现监控日志成功


http://www.kler.cn/a/383773.html

相关文章:

  • [MySQL]视图
  • Python实例:爱心代码
  • DS二叉树--赫夫曼树解码
  • 利用 AI 自动直播,提升抖音小程序流量主变现效率
  • SpringBoot在城镇住房保障系统中的应用案例
  • 地质灾害遥感影像AI识别应用场景搭建指南
  • uniapp radio单选
  • 15分钟学 Go 第 34 天:依赖管理——Go Modules
  • 25中海油笔试测评春招秋招校招暑期实习社招笔试入职测评行测题型微测网题型分享
  • 为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
  • 【360】基于springboot的志愿服务管理系统
  • sklearn 安装使用笔记
  • Spring底层源码(一)
  • 【Mac】PD报错:无法为“Windows” 完成操作,虚拟机ID无效的解决办法
  • 中科院二区idea:多尺度注意力+特征融合!把准11个创新套路,直通毕业!
  • 高级数据库 项目流程记录
  • Oracle 第21章:实时应用集群(RAC)
  • 梧桐数据库空间向量使用介绍分享
  • git的使用、router和route的区别以及v-show和v-if的差别
  • 基于Python+Vue开发的蛋糕商城管理系统
  • 定高虚拟列表:让大数据渲染变得轻松
  • 智慧城市的守护者——智能井盖监测终端
  • 微信小程序 uniapp网络记账设计个人理财系统
  • 【数据结构】B树
  • GBase与梧桐数据库窗口函数使用的比较
  • JMeter性能测试实现与分析分享