深入理解Linux文件系统于日志分析

目录

一.Inode 和 block 概述

​编辑 

1.inode 的内容

(1)Inode 包含文件的元信息

 (2)用 stat 命令可以查看某个文件的 inode 信息

(3) Linux系统文件三个主要的时间属性

(4)目录文件的属性

(5)inode 的号码

2.查看 inode 号码的办法

3.inode 的大小

4.inode 的特殊作用

5.链接文件

6.文件存储小结

二.文件恢复

1.恢复EXT类型的文件

模拟实验步骤流程

2.恢复XFS类型的文件

(1)xfsdump 使用限制

(2)备份操作模拟实验

三.日志文件

1.日志的功能

2.日志文件的分类

3.日志的保存位置: 默认 /var/log 目录下

 4.主要的日志文件

5.管理日志的系统服务-rsyslog

6.日志的级别(数字等级越小,优先级越高,消息越重要)

7.日志的一般格式

8.用户日志分析

9.程序分析日志

10.journalctl 日志管理工具

一.Inode 和 block 概述

在Linux系统中,文件名和文件数据是分开存储的
文件数据包含 元信息(即不包含文件名的文件属性) 和 实际数据
文件元信息存储在 inode(索引节点)里,文件实际数据存储在 block(块)里;

文件名存储在目录块

inode (索引节点

中文译名为“索引节点”,也叫i节点

用于存储文件元信息

block (块)

连续的八个扇区组成的一个 block (4K)

是文件存取的最小单位

 

一个文件必须占用一个inode,但至少占用一个block

1.inode 的内容

(1)Inode 包含文件的元信息

文件的字节数

文件拥有者的 User ID (不包含文件名)

文件的 Group ID

文件的读、写、执行权限

文件的时间戳

 (2)用 stat 命令可以查看某个文件的 inode 信息

格式为:    stat 文件名
[root@localhost ~]# cd /opt/            
[root@localhost opt]# ls
rh
[root@localhost opt]# stat rh           #查看/opt/目录下rh文件的元信息文件:"rh"大小:6         	块:0          IO 块:4096   目录
设备:fd00h/64768d	Inode:35246718    硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:usr_t:s0
最近访问:2018-10-31 03:17:56.000000000 +0800
最近更改:2018-10-31 03:17:56.000000000 +0800
最近改动:2024-04-07 06:46:12.163932733 +0800
创建时间:-
[root@localhost opt]# cd /tmp/
[root@localhost tmp]# ls
anaconda.log
[root@localhost tmp]# stat anaconda.log        #查看/tmp/目录下文件元的信息文件:"anaconda.log"大小:1149      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33577996    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-07 06:51:40.923956773 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800
创建时间:-
[root@localhost tmp]# 

(3) Linux系统文件三个主要的时间属性

ctime (change time)

最后一次改变文件或目录(属性)的时间

atime (sccess time)

最后一次访问文件或目录的时间

mtime (modify time)

最后一次修改文件或目录(内容)的时间;当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

 用     start + 文件名    查看文件的元信息和 inode 号

拓展: ls -i 文件名也可以查看文件的 inode 号

               #原本文件里面显示的三个时间的信息
最近访问:2024-04-07 06:51:40.923956773 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800[root@localhost tmp]# cat anaconda.log        #查看文件内容
[root@localhost tmp]# stat anaconda.log   #再次查看文件的信息,发现最近访问时间改变文件:"anaconda.log"大小:1149      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33577996    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-23 10:05:54.887838257 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800
创建时间:-
[root@localhost tmp]# vim anaconda.log          #修改文件内容
[root@localhost tmp]# stat anaconda.log        #再次查看文件的信息,发现最近更改和最近改动都发生改变文件:"anaconda.log"大小:1149      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33577996    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-23 10:05:54.887838257 +0800  atime  最近的文件访问时间
最近更改:2024-04-23 10:06:16.728999744 +0800  mtime  最近的文件内容修改时间
最近改动:2024-04-23 10:06:16.729999752 +0800  ctime  最近的文件属性修改时间
创建时间:-
[root@localhost tmp]# 

(4)目录文件的属性

(5)inode 的号码

用户通过文件名打开文件时,系统内部的过程

【1】系统找到这个文件名对应的 inode 号

【2】通过 inode 号码,获取 inode 信息

【3】根据 inode 信息,找到文件数据所在的 block ,读出数据

2.查看 inode 号码的办法

stat  文件名  查看 inode 信息中的 inode 号码
ls -i 文件名  可以查看指定文件的 inode 号#ls -i 用法
[root@localhost opt]# ls -i a.txt 
67414818 a.txt

3.inode 的大小

(1)inode  也会消耗硬盘空间大小

每个 inode 的大小,一般是128字节或者256字节;

(2)格式化文件系统的时候已经分配好 inode 的总数

(3)使用 df -i 命令可以查看硬盘分区的 inode 总数和已经使用的数量

[root@localhost opt]# df -i     #可以查看每个硬盘上的 inode 的信息
文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  478388     400   477988       1% /dev
tmpfs                     482657       1   482656       1% /dev/shm
tmpfs                     482657    1498   481159       1% /run
tmpfs                     482657      16   482641       1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176  160273 18449903       1% /
/dev/sda1                 262144     341   261803       1% /boot
tmpfs                     482657      21   482636       1% /run/user/0
/dev/sr0                       0       0        0        - /run/media/root/CentOS 7 x86_64
[root@localhost opt]# df -hT    #可以发现在没有输入任何数据的时候,硬盘已经使用一部分容量
文件系统                类型      容量   已用   可用  已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.6G   31G   13% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   36K  378M    1% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64
[root@localhost opt]# 

4.inode 的特殊作用

(1)由于 inode 号码与文件名分离,导致一些 Unix/Linux 系统具有以下的现象

【1】当文件名包含特殊字符,可能无法正常删除文件,直接删除 inode ,也可以删除文件

[root@192 opt]# touch *123456 123456 a.txt     #创建三个文件
[root@192 opt]# ls
123456  *123456  a.txt
[root@192 opt]# ls -i                          #查看他们的 inode 号
67415980 123456  67415977 *123456  67415994 a.txt
[root@192 opt]# find ./ -inum 67415980 -exec rm -rf {} \;   #根据 inode 号删除
[root@192 opt]# ls
*123456  a.txt
[root@192 opt]# find ./ -inum 67415977 -delete              #根据 inode 号删除
[root@192 opt]# ls
a.txt
[root@192 opt]# find ./ -inum 67415994 | xargs rm -f        #根据 inode 号删除
[root@192 opt]# ls
[root@192 opt]# #拓展:使用了三种删除方法

【2】移动或重命名文件时,只改变文件名,不影响 inode 号码

[root@192 opt]# touch abc.txt          #创建abc.txt
[root@192 opt]# ls -i                  #查看文件的 inode 号
67193849 abc.txt
[root@192 opt]# mv abc.txt 123.txt     #将文件进行重命名
[root@192 opt]# ls -i                  #查看文件的 inode 号
67193849 123.txt                       #文件名改了,但是 inode 号没变
[root@192 opt]# mv 123.txt /root/      #将文件移动到/root/目录下
[root@192 opt]# ls 
[root@192 opt]# cd /root/
[root@192 ~]# ls -i | grep 123.txt     #查看文件的 inode 号,也没有变
67193849 123.txt

拓展:直接查看、修改文件内容或者改变文件名都不会影响 inode 号;但是vim 编辑器修改文件内容保存退出后,会影响 inode 号;vim 编辑器是产生一个.swp文件去修改,然后替代掉原文件。

【3】打开一个文件后,系统通过 inode 号码来识别该文件,不在考虑文件名

5.链接文件

(1)硬链接

ln 源文件 目标位置

(2)软链接

ln -s 源文件或目录...  链接文件或目录位置

6.文件存储小结

二.文件恢复

1.恢复EXT类型的文件

(1)编译安装 extundelete 软件包

(2)模拟删除并执行恢复

注意:extundelete工具目前只能恢复ext类型的文件

模拟实验步骤流程

【1】使用fdisk创建分区/dev/sdb1,并格式化为ext3文件系统;

[root@192 ~]# fdisk /dev/sdb                  #对硬盘进行分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0xe0dda7c8 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。[root@192 ~]# fdisk -l              #查看分好区的硬盘磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe0dda7c8设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux[root@192 ~]# mkfs -t ext3 /dev/sdb1      #格式化硬盘为ext3的文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

【2】创建一个目录,并挂载到硬盘上,然后安装 extundelete 软件的依赖包

[root@192 ~]# mkdir /test
[root@192 ~]# mount /dev/sdb1 /test/
[root@192 ~]# cd /opt/
[root@192 opt]# ls
abc.txt  extundelete-0.2.4.tar.bz2
[root@192 opt]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@192 yum.repos.d]# yum install -y e2fsprogs-libs e2fsprogs-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 e2fsprogs-libs-1.42.9-19.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 e2fsprogs-devel.x86_64.0.1.42.9-19.el7 将被 安装
--> 正在处理依赖关系 libcom_err-devel(x86-64) = 1.42.9-19.el7,它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(com_err),它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 将被 安装
--> 解决依赖关系完成依赖关系解决
............中间省略....................
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : libcom_err-devel-1.42.9-19.el7.x86_64                                      1/2 正在安装    : e2fsprogs-devel-1.42.9-19.el7.x86_64                                       2/2 验证中      : libcom_err-devel-1.42.9-19.el7.x86_64                                      1/2 验证中      : e2fsprogs-devel-1.42.9-19.el7.x86_64                                       2/2 已安装:e2fsprogs-devel.x86_64 0:1.42.9-19.el7                                                       作为依赖被安装:libcom_err-devel.x86_64 0:1.42.9-19.el7    

【3】编译安装extundelete压缩包

[root@192 yum.repos.d]# cd /opt/
[root@192 opt]# ls
abc.txt  extundelete-0.2.4.tar.bz2
[root@192 opt]# tar xf extundelete-0.2.4.tar.bz2 
[root@192 opt]# ls
abc.txt  extundelete-0.2.4  extundelete-0.2.4.tar.bz2
[root@192 opt]# cd extundelete-0.2.4/
[root@192 extundelete-0.2.4]# ls
acinclude.m4  autogen.sh   configure     depcomp     LICENSE      Makefile.in  README
aclocal.m4    config.h.in  configure.ac  install-sh  Makefile.am  missing      src
[root@192 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete
Configuring extundelete 0.2.4
Writing generated files to disk
[root@192 extundelete-0.2.4]# make && make install
make -s all-recursive
Making all in src
extundelete.cc: 在函数‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’中:
extundelete.cc:1272:29: 警告:在 {} 内将‘search_flags’从‘int’转换为较窄的类型‘ext2_ino_t {aka unsigned int}’ [-Wnarrowing]buf, match_name2, priv, 0};^
Making install in src/usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@192 extundelete-0.2.4]# cd /usr/local/
[root@192 local]# ls
bin  etc  extundelete  games  include  lib  lib64  libexec  sbin  share  src
[root@192 local]# cd extundelete/
[root@192 extundelete]# ls bin/
extundelete
[root@192 extundelete]# cd bin/
[root@192 bin]# ls
extundelete
[root@192 bin]# ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/
[root@192 bin]# cd 
[root@192 ~]# ex
ex           exempi       expand       exportfs     extundelete  
exec         exit         export       expr         

【4】创建文件,并进行查看

[root@192 bin]# cd /test/
[root@192 test]# ls
[root@192 test]# echo '123456' > 123.txt
[root@192 test]# echo 'abcdef' > abc.txt
[root@192 test]# echo 'i like games' > 456.txt
[root@192 test]# ls
123.txt  456.txt  abc.txt
[root@192 test]# extundelete /dev/sdb1 --inode 2NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates 
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n) 
y
...................中间省略.....................................File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
123.txt                                           11
abc.txt                                           12
456.txt                                           13

【5】模拟误删,并进行恢复操作

[root@192 test]# rm -f 123.txt abc.txt
[root@192 test]# ls
456.txt
[root@192 test]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates 
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n) 
y
..........................中间省略....................................File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
123.txt                                           11             Deleted
abc.txt                                           12             Deleted
456.txt                                           13
[root@192 test]# umount /dev/sdb1
umount: /test:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
[root@192 test]# cd
[root@192 ~]# umount /dev/sdb1
[root@192 ~]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 160 groups loaded.
Loading journal descriptors ... 42 descriptors loaded.
Searching for recoverable inodes in directory / ... 
2 recoverable inodes found.
Looking through the directory structure for deleted files ... 
0 recoverable inodes still lost.
[root@192 ~]# ls
anaconda-ks.cfg            initial-setup-ks.cfg  公共  视频  文档  音乐
extundelete-0.2.4.tar.bz2  RECOVERED_FILES       模板  图片  下载  桌面
[root@192 ~]# cd RECOVERED_FILES/
[root@192 RECOVERED_FILES]# ls
123.txt  abc.txt
[root@192 RECOVERED_FILES]# cat *
123456
abcdef
[root@192 RECOVERED_FILES]# 

拓展:磁盘有空间,但是仍然无法写入新文件的可能原因如下所示

1.inode号被占满;

2.磁盘出现了问题

模拟 inode 号被挤满的实验

[root@192 RECOVERED_FILES]# mount /dev/sdc1 /test/
[root@192 test]# df -i
文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  478388     422   477966       1% /dev
tmpfs                     482657       1   482656       1% /dev/shm
tmpfs                     482657    1470   481187       1% /run
tmpfs                     482657      16   482641       1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176  159803 18450373       1% /
/dev/sda1                 262144     341   261803       1% /boot
tmpfs                     482657       9   482648       1% /run/user/42
tmpfs                     482657       1   482656       1% /run/user/0
/dev/sr0                       0       0        0        - /mnt
/dev/sdc1                   2560      10     2550       1% /test
[root@192 test]# touch file{1..2550}
[root@192 test]# ls | wc -l
2550
[root@192 test]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.4G   32G   13% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /mnt
/dev/sdc1               ext4      8.7M  222K  7.8M    3% /test
[root@192 test]# echo 123 > 123.txt
-bash: 123.txt: 设备上没有空间
[root@192 test]# df -i
文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  478388     422   477966       1% /dev
tmpfs                     482657       1   482656       1% /dev/shm
tmpfs                     482657    1470   481187       1% /run
tmpfs                     482657      16   482641       1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176  159803 18450373       1% /
/dev/sda1                 262144     341   261803       1% /boot
tmpfs                     482657       9   482648       1% /run/user/42
tmpfs                     482657       1   482656       1% /run/user/0
/dev/sr0                       0       0        0        - /mnt
/dev/sdc1                   2560    2560        0     100% /test

2.恢复XFS类型的文件

(1)xfsdump 使用限制

只能备份已挂载的文件系统

必须使用root的权限才能执行

只能备份XFS文件系统

备份后的数据只能让xfsrestore解析

不能备份两个具有相同UUID的文件系统

[root@192 test]# blkid             #查看相关文件系统的UID号/dev/sda1: UUID="4e61eae8-78c3-4999-9778-637a8c3c4f0c" TYPE="xfs" 
/dev/sda2: UUID="dhRL0B-Mc2P-pAko-Z0Kk-pZNE-EHL9-OZ6hoe" TYPE="LVM2_member" 
/dev/sdb1: UUID="c416cb69-6feb-454f-b0ae-d19aaf40f24c" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sdc1: UUID="5b1728cb-d792-42d5-a6a5-aa5649b1e051" TYPE="ext4" 
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="03a44f17-4dd1-425b-a9e4-832f930a4e90" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="25b1fdac-878c-4096-aa6e-c73d00730226" TYPE="swap" 

(2)备份操作模拟实验

【1】使用fdisk创建分区/dev/sdc2,格式化xfs文件系统

[root@192 test]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助):n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (22528-41943039,默认为 22528):
将使用默认值 22528
Last 扇区, +扇区 or +size{K,M,G} (22528-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。[root@192 test]# fdisk -l
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5330399b设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048       22527       10240   83  Linux
/dev/sdc2           22528    41943039    20960256   83  Linux[root@192 test]# mkfs -t xfs /dev/sdc2
meta-data=/dev/sdc2              isize=512    agcount=4, agsize=1310016 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5240064, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 test]# cd
[root@192 ~]# mount /dev/sdc2 /test/
[root@192 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.4G   32G   13% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /mnt
/dev/sdc2               xfs        20G   33M   20G    1% /test

【2】安装 xfsdump xfsrestore 软件,并对文件进行复制

[root@192 ~]# ls
anaconda-ks.cfg            initial-setup-ks.cfg  公共  视频  文档  音乐
extundelete-0.2.4.tar.bz2  RECOVERED_FILES       模板  图片  下载  桌面
[root@192 ~]# cp -a * /test/
[root@192 ~]# cd /test/
[root@192 test]# ls
anaconda-ks.cfg            initial-setup-ks.cfg  公共  视频  文档  音乐
extundelete-0.2.4.tar.bz2  RECOVERED_FILES       模板  图片  下载  桌面[root@192 test]# yum install -y xfsdump xfsrestore已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 xfsdump-3.1.7-1.el7.x86_64 已安装并且是最新版本
没有可用软件包 xfsrestore。
无须任何处理[root@192 test]# xfsdump -f /opt/dump_sdc2 /dev/sdc2 -L /test -M sdc2xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of 192.168.80.90:/test
xfsdump: dump date: Tue Apr 23 21:13:54 2024
xfsdump: session id: 6a8cb52a-0331-4eaa-92da-39c6bba188dd
xfsdump: session label: "/test"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 152256 bytes
xfsdump: /var/lib/xfsdump/inventory created
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 147488 bytes
xfsdump: dump size (non-dir files) : 117320 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_sdc2 OK (success)
xfsdump: Dump Status: SUCCESS[root@192 test]# cd /opt/
[root@192 opt]# lsabc.txt  dump_sdc2  extundelete-0.2.4  extundelete-0.2.4.tar.bz2

【3】模拟硬盘被强制格式化,并重新创建文件系统,造成数据丢失

[root@192 opt]# umount /test
[root@192 opt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.4G   32G   13% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /mnt
[root@192 opt]# mkfs.xfs -f /dev/sdc2
meta-data=/dev/sdc2              isize=512    agcount=4, agsize=1310016 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5240064, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 opt]# mount /dev/sdc2 /test
[root@192 opt]# cd /test/
[root@192 test]# ls

【4】使用 sfxrestore 恢复

[root@192 test]# xfsrestore -f /opt/dump_sdc2 /testxfsrestore: using file dump (drive_simple) strategy
.........................中间省略......................................
xfsrestore: Restore Status: SUCCESS
[root@192 test]# ls
anaconda-ks.cfg            initial-setup-ks.cfg  公共  视频  文档  音乐
extundelete-0.2.4.tar.bz2  RECOVERED_FILES       模板  图片  下载  桌面
[root@192 test]# 

三.日志文件

1.日志的功能

用于记录系统、程序运行中发生的事件

通过与阅读日志,有助于诊断和解决系统故障

2.日志文件的分类

(1)内核及系统日志:由系统服务 rsyslog 统一进行管理,日志格式基本相似;主配置文件 /etc/rsyslog.conf

(2)用户日志:记录系统用户登录继推出系统的相关信息

(3)程序日志:由各种程序文件独立管理的日志文件吗,记录格式不统一

3.日志的保存位置: 默认 /var/log 目录下

 4.主要的日志文件

(1)内核及公共消息日志:
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

(2)计划任务日志:
/var/log/cron:记录crond计划任务产生的事件信息。

(3)系统引导日志:
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。

(4)邮件系统日志:
/var/log/maillog:记录进入或发出系统的电子邮件活动。

(5)用户登录日志:
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件
/var/run/btmp:记录失败的、错误的登录尝试及验证事件

5.管理日志的系统服务-rsyslog

rsyslog还可以实现远程收集日志功能(收集多台主机的日志进行统一管理)

拓展:集中式收集管理日志方案 rsyslog 、shell/python脚本

ELK(elasticsearch+logstash+kibana)      Loki+promtail+grafana

6.日志的级别(数字等级越小,优先级越高,消息越重要)

级号消息级别说明
0EMERG紧急会导致主机系统不可用的情况。如系统崩溃
1ALERT警告必须马上采取措施解决的问题。如数据库被破坏
2CRIT严重比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3ERR错误运行出现错误。不是非常紧急,尽快修复的
4WARNING提醒可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
5NOTICE注意不会影响正常功能,但是需要注意的事件。无需处理
6INFO信息一般信息。正常的系统信息
7DEBUG调试程序或系统调试信息等。包含详细开发的信息,调试程序时使用

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

7.日志的一般格式

vim messages  日志文件的记录格式时间标签:主机名:子系统名称:消息1消息发出的日期和时间。2生成消息的计算机的名称。3发出消息的应用程序的名称。4消息的具体内容
vim /etc/rsyslog.conf		#查看rsyslog.conf配置文件规则配置格式:【设备、级别、动作】*.info		#表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none	#表示某事件的信息不写到日志文件里(这里比如是邮件)

设备字段说明:
auth         用户认证时产生的日志                         authpriv   ssh、ftp等登录信息的验证信息
daemon   一些守护进程产生的日志                     ftp          FTP产生的日志
lpr           打印相关活动                                       mark      rsyslog服务内部的信息,时间标识
console   针对系统控制台的消息                        cron          系统执行定时任务产生的日志
kern        系统内核日志                                       local0~local7        自定义程序使用
mail         邮件日志                                              user          用户进程

news       网络新闻传输协议(nntp)产生的消息    syslog        系统日志

mark       rsyslog服务内部的信息,时间标识          
uucp       Unix-to-Unix Copy 两个unix之间的相关通信

8.用户日志分析

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

/var/log/secure:与用户验证相关的安全性事件(文本格式)

/var/log/lastlog:最近的用户登录事件(二进制格式)
/var/log/wtmp:用户登录、注销及系统开、关机事件(二进制格式)
/var/run/btmp:当前登录的每个用户的详细信息(二进制格式)

二进制格式无法直接进行查看,要进行二进制格式转换才能查看

分析工具:users 、who、w、last、lastb

last命令用于查询成功登录到系统的用户记录

lastb命令用于查询成功登录失败的用户记录

9.程序分析日志

由相应的应用程序独立进行管理

Web服务:/var/log/httpd/

access_log     //记录客户访问事件

error_log        //记录错误事件

代理服务:/var/log/squid/

access.log、cache.log

分析工具

文本查看、grep过滤、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

Webalizer、Awstats等专用日志分析工具

10.journalctl 日志管理工具

journalctl是centos7上专有的日志管理工具,该工具是从messages这个文件里读取信息。
Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志);日志的配置文件是/etc/systemd/journald.conf

在centos7以前系统中,读取日志信息只能通过 vim 、more、less 等方式打开 /var/log/messages文件去查看信息

journalctl常用选项#查看所有日志(默认情况下,只保存本次启动的日志)
journalctl
journalctl -r				#-r表示倒序,从尾部看(推荐)#查看内核日志(不显示应用日志)
journalctl -k#查看系统本次启动的日志	
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 todayjournalctl -xe
# -x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址
#-e  pager-end 从末尾开始看	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981145.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

TI_DSP_F2808学习笔记1: GPIO

1. 初始化设置 1.1 控制寄存器 GPxMUX功能选择寄存器/多功能复用选择 GPxDIR 方向选择寄存器/输入输出选择 0 输入 1 输出GPxPUD 上拉功能选择寄存器/是否启用内部上拉 0 有上拉,1禁止上拉GPxQSeln输入限定选择寄存器 输入n次为0或1才有效,滤波 1.2 数…

聊聊go语言中的GMP模型

写在文章开头 我们都知道go语言通过轻量级线程协程解决并发问题,按照go语言的思想这些协程运行完成后即焚,那么go语言如何保证并发线程有序获取协程呢? 带着这个问题我们从go语言底层的源码来阐述这个问题: Hi,我是 s…

gitee / github 配置git, 实现免密码登录

文章目录 怎么配置公钥和私钥验证配置成功问题 怎么配置公钥和私钥 以下内容参考自 github ssh 配置,gitee的配置也是一样的; 粘贴以下文本,将示例中使用的电子邮件替换为 GitHub 电子邮件地址。 ssh-keygen -t ed25519 -C "your_emai…

【C语言__指针02__复习篇12】

目录 前言 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 前言 本篇主要讨论以下问题: 1. 数组名通常表示什么,有哪两种例外情况,在例外情况中…

BootStrap框架学习

1、BootStrap是一套现成的css样式集合 中文文档:www.bootcss.com 响应式布局:pc端,手机端都可适配 特点:集成了html,css,javascript工具集,12列格网,基于jquery, 下载:http://v3…

【java毕业设计】 基于Spring Boot+mysql的高校心理教育辅导系统设计与实现(程序源码)-高校心理教育辅导系统

基于Spring Bootmysql的高校心理教育辅导系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于Spring Bootmysql的高校心理教育辅导系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及…

【AI写作】未来科技趋势:揭秘DreamFusion的革新力量

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

泛微 E-Office UserSelect接口存在未授权访问漏洞

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 老洞 泛微e-office系统是标准、易用、快速部署上线…

4G车牌识别如何实现低功耗AOV唤醒拍照?

车牌识别摄像机,一般的做法是有线方式,并且采用有线网络或者是RJ45网络,如果换个方式,比如在野外工地,矿场,需要识别一些车牌,上传到服务器平台,要考虑的是无线,无电&…

vue项目启动npm install和npm run serve时出现错误Failed to resolve loader:node-sass

1.常见问题 问题1:当执行npm run serve时,出现Failed to resolve loader: node-sass,You may need to install it 解决方法: npm install node-sass4.14.1问题2:当执行npm run serve时,出现以下错误 Fa…

小程序AI智能名片S2B2C商城系统:解锁内容深耕新境界,助力品牌企业高效定制内容策略

在数字化时代,内容营销已成为品牌企业获取市场份额、增强用户黏性的关键武器。然而,面对海量的互联网信息和复杂多样的社交媒体平台,如何有效地深耕内容,成为众多品牌企业面临的难题。 传统的内容分类与识别方式,往往依…

开源贡献代码之​探索一下Cython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景,展开讲讲Cython遇到的问题,以及尝试自己从0写一个库出来,代码也已经放星球了,感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…

STM32 学习13 低功耗模式与唤醒

STM32 学习13 低功耗模式与唤醒 一、介绍1. STM32低功耗模式功能介绍2. 常见的低功耗模式(1)**睡眠模式 (Sleep Mode)**:(2)**停止模式 (Stop Mode)**:(3)**待机模式 (Standby Mode)**: 二、睡眠模式1. 进入…

MongoDB数据恢复—拷贝MongoDB数据库文件后无法启动服务的数据恢复案例

服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分…

图像处理之Retinex算法(C++)

图像处理之Retinex算法(C) 文章目录 图像处理之Retinex算法(C)前言一、单尺度Retinex(SSR)1.原理2.代码实现3.结果展示 二、多尺度Retinex(MSR)1.原理2.代码实现3.结果展示 三、带色…

探索ChatGPT在提高人脸识别与软性生物识准确性的表现与可解释性

概述 从GPT-1到GPT-3,OpenAI的模型不断进步,推动了自然语言处理技术的发展。这些模型在处理语言任务方面展现出了强大的能力,包括文本生成、翻译、问答等。 然而,当涉及到面部识别和生物特征估计等任务时,这些基于文…

STM32,复位和时钟控制

外部时钟 HSE 以后需要用到什么就这样直接拿去配就行了

用户中心 -- 插件使用 插件使用思路

易错注意点 1 5.1启动类 & 入口类 需保持一致 网址: 第一节课,用户管理--后端初始化,项目调通。二次翻工2-CSDN博客 一、 用户管理 框架 网址: 用户管理 --汇总 -- 明细-CSDN博客 1.2 更改路径,并生效 网址…

使用linux,c++,创作一个简单的五子棋游戏

#include <iostream> #include <vector> #include <unordered_map> using namespace std; // 棋盘大小 const int BOARD_SIZE 15; // 棋子类型 enum ChessType { EMPTY, BLACK, WHITE }; // 棋盘类 class ChessBoard { private: vect…

【Transformer】detr之decoder逐行梳理(三)

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 detr之decoder逐行梳理 1. 整体 decoder由多个decoder layer串联构成 输入 tgt: query是一个shape为(n,bs,embed),内容为0的tensormemory: encoder最…