Linux文件系统与日志分析

177 阅读21分钟

inode和block

inode和block概述

  • 文件数据包括元信息与实际数据。

  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。

  • block

    • 连续的八个扇区组成一个block
    • 是文件存取的最小单位
  • inode

    • 中文译名为“索引节点”,也叫 i 节点
    • 用于存储文件元信息
  • 一个文件必须占用一个inode ,至少占用一个block

inode和block的关系

  1. 文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。

  2. 一般连续八个扇区组成一个"块”(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。4k一读,8个扇区一读。

  3. 文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode表。 因此,一个文件必须占用一个inode,并且至少占用一个block。du 显示

  4. inode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件。

  5. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个或多个文件名。

  6. 所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码:通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

indo

indo 表结构

每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data)

元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个

文件的元数据信息。

每一个inode表记录对应的保存了以下信息:

  • inode number 节点号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据
#查看inode号
ls -i

三个主要时间属性

最近访问atime: 最后一次查看文件

最近更改mtime: 最近更改文件内容的时间

最近改动ctime: 最近更改文件元信息的时间

目录文件结构

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

  • 目录文件的结构非常简单,就是一系列目录项(dirent)的列表。
  • 每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
  • 一个目录是目录下的文件名和文件inode号之间的映射。
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
  • Linux系统内部不使用文件名,而使用inode号码来识别文件。
  • 对于用户,文件名只是Inode号码便于识别的别称。

命令和inode号之间的关系

cp命令:

  • 分配一个空闲的inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

rm命令:

  • 硬链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv命令

如果mv命令的目标和源在同一设备,

不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

删除旧的目录对应关系新建目录对应关系

硬连接和软连接

对比项硬连接软连接
本质本质是同一个文件本质不是同一个文件
inode相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除新建不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同源文件的路径的长度
  #创建链接文件
 ln 源文件 目标文件               //创建硬链接文件
 ln -s 源文件或目录 目标文件       //创建软连接文件

创建软链接时,源文件必须使用绝对路径。

删除文件后空间不释放处理方法

删除文件后,如果磁盘空间没有释放,是因为文件正在被其他人打开。 其他人退出使用该文件后空间会被释放。

可以使用 w 命令或 lsof 命令查看是否有人在使用该文件。

[root@localhost ~]# w
 03:08:08 up 10:51,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.10.1     16:16    0.00s  0.01s  0.00s w

如果有人打开了该文件,可以使用以下三种方法释放空间:

 1.echo " "  > f1.txt        //将被打开的文件变成空文件,依赖shell环境
 
 2.cat /dev/null > f1.txt    //导入空文件
 
 3.lsof | grep f1.txt        //查看被删除的文件和对应PID,之后杀死该进程
    kill -9 PID

日志

日志介绍

日志功能:

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

日志文件分类:

  • 内核及系统日志:

    这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置,决定将内核消息及各种系统程序消息记录到什么位置。日志格式基本相似。

  • 用户日志:

    记录用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

  • 程序日志:

    有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息。记录格式不统一。

日志保存位置:

  • 默认位于:/var/log 目录下

常见日志文件;

日志文件位置日志文件说明
/var/log/messages内核和公共日志它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。
/var/log/cron 计划任务日志记录与系统定时任务相关的曰志
/var/log/dmesg 系统引导日志记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/maillog 邮件日志记录邮件信息的曰志
用户日志
/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

日志文件的格式:

日志文件的格式包含以下 4 列:

  • 事件产生的时间。
  • 产生事件的服务器的主机名。
  • 产生事件的服务名或程序名。
  • 事件的具体信息。

内核和公共日志

日志的配置文件位置在 /etc/rsyslog.conf

信息的优先级

级号消息级别说明
0EMERG紧急会导致主机系统不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能影响系统功能,需要提醒用户的重要事件
5NOTICE注意不会影响正常功能,但是需要注意的事件
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

每一条消息均包括以下四个字段。

  • 时间标签:消息发出的日期和时间。
  • 主机名:生成消息的计算机的名称。
  • 子系统名称:发出消息的应用程序的名称。
  • 消息:消息的具体内容。

用户日志

保存了用户登录、退出系统等相关信息:

  • /var/log/lastlog:最近都用户登录事件。二进制文件,使用 lastlog 命令查看。

  • /var/log/secure:与用户验证有关的安全性事件。

  • /var/log/wtmp:用户登录、注销,及系统开、关机事件。二进制文件,使用 last 命令查看。

  • /var/run/utmp:当前登录的每个用户的详细信息。二进制文件,使用w、who、users等命令查看。

查询当前登录的用户情况

users

users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。

[root@localhost ~]# users
root

who

用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机。

[root@localhost ~]# who
root     pts/0        2022-10-12 16:16 (192.168.10.1)

w

用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。

[root@localhost ~]# w
 03:25:25 up 11:08,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.10.1     16:16    5.00s  0.02s  0.00s w

查询用户登录的历史记录

last

用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。

[root@localhost ~]# w
 03:25:25 up 11:08,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.10.1     16:16    5.00s  0.02s  0.00s w
[root@localhost ~]# last
root     pts/0        192.168.10.1     Wed Oct 12 16:16   still logged in   
reboot   system boot  3.10.0-693.el7.x Wed Oct 12 16:16 - 03:26  (11:09)    
root     pts/1        192.168.10.1     Mon Oct 10 14:46 - 19:45  (04:58)    
root     pts/2        192.168.10.1     Tue Sep 27 21:51 - 16:45 (12+18:54)  
root     pts/1        192.168.10.1     Tue Sep 27 21:50 - 23:50  (02:00)    
root     pts/1        :0               Tue Sep 27 21:49 - 21:50  (00:00)    
root     pts/1        :0               Tue Sep 27 21:48 - 21:49  (00:01)    
root     pts/0        :0               Tue Sep 27 21:45 - 19:45 (12+21:59)  
root     :0           :0               Tue Sep 27 21:42 - down  (12+22:02)  
reboot   system boot  3.10.0-693.el7.x Tue Sep 27 21:42 - 19:45 (12+22:02)  
root     :0           :0               Thu Sep 15 17:56 - crash (12+03:45)  
reboot   system boot  3.10.0-693.el7.x Thu Sep 15 17:56 - 19:45 (25+01:49)  
root     :0           :0               Wed Aug 31 19:16 - crash (14+22:39)  
reboot   system boot  3.10.0-693.el7.x Wed Aug 31 19:16 - 19:45 (40+00:28)  

wtmp begins Wed Aug 31 19:16:22 2022

lastb

用于查询登录失败的用户记录, 如登录的用户名错误、密码不正确等情况都 将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息

[root@localhost ~]# lastb

btmp begins Mon Oct 10 15:40:01 2022

日志服务管理

sysklogd系统日志服务

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式 可以日志
  • 适用于企业级

rsyslog管理

系统日志术语

facility:设施,从功能或程序上对日志进行归类

#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定义的分类
local0-local7

Priority 优先级别,从低到高排序

debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

参看帮助: man 3 syslog,man logger

服务名称:

服务名称说 明
auth(LOG AUTH)安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV)安全和认证相关消息(私有的)
cron (LOG_CRON)系统定时任务cront和at产生的日志
daemon (LOG_DAEMON)与各个守护进程相关的曰志
ftp (LOG_FTP)ftp守护进程产生的曰志
kern(LOG_KERN)内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL0-7)为本地使用预留的服务
lpr (LOG_LPR)打印产生的日志
mail (LOG_MAIL)邮件收发信息
news (LOG_NEWS)与新闻服务器相关的日志
syslog (LOG_SYSLOG)存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER)用户等级类别的日志信息
uucp (LOG_UUCP>uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中

rsyslog相关文件

  • 程序包:rsyslog
  • 主程序:/usr/sbin/rsyslogd
  • CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
  • CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
  • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
  • 库文件: /lib64/rsyslog/*.so

rsyslog配置文件

/etc/rsyslog.conf配置文件格式:由三部分组成

  • MODULES:相关模块配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志记录相关的规则配置
[root@localhost ~]# rpm -ql rsyslog |grep imuxsock
/usr/lib64/rsyslog/imuxsock.so

RULES配置格式:

facility.priority; 
#分类      优先级


*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

日志文件

路径作用
/var/log/secure系统安全日志,文本格式,应周期性分析
/var/log/btmp当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
/var/log/wtmp当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
/var/log/lastlog每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
/var/log/dmesgCentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况
/var/log/boot.log系统服务启动的相关信息,文本格式
/var/log/messages系统中大部分的信息
/var/log/anacondaanaconda的日志操作系统安装时安装的软件信息

日志管理工具journalctl

配置文件:

/etc/systemd/journald.conf

命令格式:

journalctl [OPTIONS...] [MATCHES...]

示例: 1)journalctl,查看所有日志。 默认情况下,只保存本次启动的日志。

[root@localhost ~]# journalctl | head
-- Logs begin at2022-10-12 16:16:51 CST, end at2022-10-13 03:40:01 CST. --
1012 16:16:51 localhost.localdomain systemd-journal[92]: Runtime journal is using 8.0M (max allowed 99.2M, trying to leave 148.8M free of 984.1M available → current limit 99.2M).
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuset
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpu
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
1012 16:16:51 localhost.localdomain kernel: Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
1012 16:16:51 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8
1012 16:16:51 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved

2)journalctl -k, 只查看内核日志(不显示应用日志)。

[root@localhost ~]# journalctl -k |head
-- Logs begin at2022-10-12 16:16:51 CST, end at2022-10-13 03:40:01 CST. --
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuset
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpu
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
1012 16:16:51 localhost.localdomain kernel: Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
1012 16:16:51 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8
1012 16:16:51 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved

3)journalctl -b ,查看本次启动的日志。

journalctl -b -0,查看本次启动的日志。

journalctl -b -1,查看上一次启动的日志。

[root@localhost ~]# journalctl -b -0 |head
-- Logs begin at2022-10-12 16:16:51 CST, end at2022-10-13 03:40:01 CST. --
1012 16:16:51 localhost.localdomain systemd-journal[92]: Runtime journal is using 8.0M (max allowed 99.2M, trying to leave 148.8M free of 984.1M available → current limit 99.2M).
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuset
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpu
1012 16:16:51 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
1012 16:16:51 localhost.localdomain kernel: Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
1012 16:16:51 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8
1012 16:16:51 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
1012 16:16:51 localhost.localdomain kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved

4)查看指定时间的日志。

 journalctl --since="2022-10-12 19:40:32"
 journalctl --since "20 min ago"
 journalctl --since yesterday
 journalctl --since "2022-01-10" --until "2022-01-11 03:00"
 journalctl --since 09:00 --until "1 hour ago"

5) journalctl -n <数字>,显示尾部指定行数。默认10行。

 journalctl -n      //显示尾部的最新10行日志
 journalctl -n 20   //显示尾部的最新20行日志

6)journalctl -f,实时滚动显示最新日志(显示最新10行)

[root@localhost ~]# journalctl -f
-- Logs begin at 三 2022-10-12 16:16:51 CST. --
10月 13 03:26:01 localhost.localdomain run-parts(/etc/cron.daily)[8161]: starting mlocate
10月 13 03:26:01 localhost.localdomain run-parts(/etc/cron.daily)[8170]: finished mlocate
10月 13 03:26:01 localhost.localdomain anacron[7907]: Job `cron.daily' terminated
10月 13 03:26:01 localhost.localdomain anacron[7907]: Normal exit (1 job run)
10月 13 03:30:01 localhost.localdomain systemd[1]: Started Session 81 of user root.
10月 13 03:30:01 localhost.localdomain systemd[1]: Starting Session 81 of user root.
10月 13 03:30:01 localhost.localdomain CROND[8210]: (root) CMD (/usr/lib64/sa/sa1 1 1)
10月 13 03:40:01 localhost.localdomain systemd[1]: Started Session 82 of user root.
10月 13 03:40:01 localhost.localdomain systemd[1]: Starting Session 82 of user root.
10月 13 03:40:01 localhost.localdomain CROND[8305]: (root) CMD (/usr/lib64/sa/sa1 1 1)

7) 查看指定服务的日志

 journalctl /usr/lib/systemd/systemd

8)查看指定进程的日志

 journalctl _PID=1            //查看某个路径的脚本的日志
 journalctl /usr/bin/bash

9)查看指定用户的日志

 journalctl _UID=33 --since today

10)查看某个 Unit 的日志;

实时滚动显示某个 Unit 的最新日志

 journalctl -u nginx.service
 journalctl -u nginx.service --since today
 
 journalctl -u nginx.service -f    //实时滚动显示某个 Unit 的最新日志

11)合并显示多个 Unit 的日志

 journalctl -u nginx.service -u php-fpm.service --since today

12)查看指定优先级的日志,表示仅显示小于或等于此等级的日志 (也就是重要程度等于或高于此等级的日志)。

 共有8级 
 0: emerg
 1: alert
 2: crit
 3: err
 4: warning
 5: notice
 6: info
 7: debug
 
 journalctl -p 3 -b    //显示重要程度等于和高于err的日志

其他选项

 #日志默认分页输出,--no-pager 改为正常的标准输出
  journalctl --no-pager
  
 #以 JSON 格式(单行)输出
  journalctl -b -u nginx.service -o json
  
 #以 JSON 格式(多行)输出,可读性更好
  journalctl -b -u nginx.serviceqq -o json-pretty
  
 #显示日志占据的硬盘空间
  journalctl --disk-usage
  
 #指定日志文件占据的最大空间
  journalctl --vacuum-size=1G
  
 #指定日志文件保存多久
  journalctl --vacuum-time=1years