第十一章、深入理解Linux文件系统与日志分析

第十一章、深入理解Linux文件系统与日志分析

一、inode与block

1、inode与block概述

1.1 文件数据包括元信息与实际数据
1.2 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
1.3 block块

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

1.3.2是文件存储的最小单位

1.4 inode(索引节点)

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

1.4.2 用于存储文件元信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.5 一个独立的文件必须占用一个inode,但至少占用一个block
1.6 inode包含文件的元信息

1.6.1 文件的字节数

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

1.6.3 文件的Group ID

1.6.4 文件的读、写、执行权限

1.6.5 文件的时间戳

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

示例:

[root@xiaolei AA]# stat 1.txt
  File: ‘1.txt’
  Size: 11              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 101145967   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-08-12 13:34:43.190299652 +0800
Modify: 2024-08-12 13:28:32.398292004 +0800
Change: 2024-08-12 13:36:48.711302241 +0800
 Birth: -

1.8 Linux系统文件三个主要的时间属性

1.8.1ctime(change time)——最后一次改变文件或目录(属性)的时间

1.8.2 atime(asscee time)——最后一次访问文件或目录的时间

1.8.3 mtime(modify time)——最后一次修改文件或目录(内容)的时间

1.9 inode的内容

1.9.1 目录文件的结构

①目录也是一种文件

②目录文件的结构

1.9.2 每个inode都有一个号码,操作系统用inode号码来识别不同的文件

1.9.3 Linux系统内部不使用文件名,而使用inode号码来识别文件

1.9.4 对于用户,文件名只是inode号码便于识别的别称

1.10 inode的号码

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

①系统找到这个文件名对应的inode号码
②通过inode号码,获取inode信息
③根据inode信息,找到文件数据所在的block,读出数据

1.10.2 查看inode号码的方法

①ls -i 命令:查看文件名对应的inode号码

[root@xiaolei AA]# ls -i 1.txt
101145967 1.txt

②stat命令:查看文件inode信息中的inode号码

[root@xiaolei AA]# stat 1.txt
  File: ‘1.txt’
  Size: 11              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 101145967   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-08-12 13:34:43.190299652 +0800
Modify: 2024-08-12 13:28:32.398292004 +0800
Change: 2024-08-12 13:36:48.711302241 +0800
 Birth: -

1.11 硬盘分区后的结构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

主要是位置不同

1.12 访问文件的简单流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.13 inode的大小

1.13.1 inode也会消耗硬盘空间

①每个inode的大小

②一般是128字节或256字节

1.13.2 格式化文件系统时确定inode的总数

1.13.3 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的量

示例:

[root@xiaolei AA]# df -i
Filesystem                 Inodes IUsed     IFree IUse% Mounted on
devtmpfs                   995745   505    995240    1% /dev
tmpfs                      998758     1    998757    1% /dev/shm
tmpfs                      998758  1453    997305    1% /run
tmpfs                      998758    16    998742    1% /sys/fs/cgroup
/dev/mapper/centos-root  26214400 29039  26185361    1% /
/dev/sda1                  524288   327    523961    1% /boot
/dev/mapper/centos-home 126414848     8 126414840    1% /home
tmpfs                      998758     1    998757    1% /run/user/0

1.14 inode的特殊作用

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

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

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

③打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

二、硬链接与软连接

1、链接文件

1.1 为文件或目录建立链接文件

1.2 链接文件分类

软链接(符号链接)硬链接
删除原始文件后失效正常使用
使用范围文件或目录只可用于文件
保存位置与原始文件可以位于不同的文件系统中必须与原始文件在同一个文件系统中

1.2.1 硬链接

ln +源文件+目标位置

1.2.2 软连接

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

三、恢复误删除的文件

1、EXT类型文件恢复

1.1 extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)

2、EXT类型文件恢复示例

2.1 环境准备

2.1.1 准备一块磁盘或分区sdb1

2.2 详细步骤

2.2.1准备一块50GB的备份磁盘sdb

[root@xiaolei ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   300G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   299G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 241.1G  0 lvm  /home
sdb               8:16   0    50G  0 disk              ###50GB备份磁盘
sr0              11:0    1   4.4G  0 rom

2.2.2 创建磁盘分区sdb1

[root@xiaolei ~]# fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599):
Using default value 104857599
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help): p
 Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   104857599    52427776   83  Linux
Command (m for help): w
The partition table has been altered!
[root@xiaolei ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   300G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   299G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 241.1G  0 lvm  /home
sdb               8:16   0    50G  0 disk
└─sdb1            8:17   0    50G  0 part           ###创建50GB备份磁盘分区sdb1
sr0              11:0    1   4.4G  0 rom

2.2.3 使用mkfs -t ext3 /dev/sdb1命令创建一个新的ext3文件系统

这条命令的作用是在第二个硬盘的第一个分区上创建一个新的ext3文件系统。在执行这条命令之前,请确保/dev/sdb1这个设备没有被挂载,否则可能会导致数据丢失。如果需要挂载这个设备,请先卸载(umount)它,然后再执行这条命令。

[root@xiaolei ~]# mkfs -t ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13106944 blocks
655347 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
400 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,
        4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

2.2.4 创建一个ABC目录用于挂载/dev/sdb1设备文件

[root@xiaolei ~]# mkdir /ABC
[root@xiaolei ~]# ls /
ABC  boot  etc   lib    media  opt   root  sbin  sys  usr
bin  dev   home  lib64  mnt    proc  run   srv   tmp  var

2.2.5 将设备文件/dev/sdb1挂载到/ABC/目录下

[root@xiaolei ~]# mount /dev/sdb1 /ABC/
[root@xiaolei ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G   1% /run
tmpfs                   tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  1.6G   49G   4% /
/dev/sda1               xfs      1014M  151M  864M  15% /boot
/dev/mapper/centos-home xfs       241G   33M  241G   1% /home
tmpfs                   tmpfs     781M     0  781M   0% /run/user/0
/dev/sdb1               ext3       50G   52M   47G   1% /ABC   ###文件类型为ext3

2.2.6 安装依赖包

[root@xiaolei ~]# yum install -y e2fsprogs-devel e2fsprogs-libs
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Transaction test succeeded
Running transaction
  Installing : libcom_err-devel-1.42.9-19.el7.x86_64                                   1/2
  Installing : e2fsprogs-devel-1.42.9-19.el7.x86_64                                    2/2
  Verifying  : libcom_err-devel-1.42.9-19.el7.x86_64                                   1/2
  Verifying  : e2fsprogs-devel-1.42.9-19.el7.x86_64                                    2/2

Installed:
  e2fsprogs-devel.x86_64 0:1.42.9-19.el7

Dependency Installed:
  libcom_err-devel.x86_64 0:1.42.9-19.el7

Complete!

2.2.7 编译安装

[root@xiaolei ~]# yum install -y wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
[root@xiaolei ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
--2024-08-14 07:59:42--  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
Resolving nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)... 140.110.96.69, 2001:e10:ffff:1f02::17
Connecting to nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:80... connected.

2.2.8 安装bzipp2

[root@xiaolei ~]# yum install -y bzip2

2.2.9 解压缩——最好将文件移动到opt/目录下再解压缩

[root@xiaolei ~]# tar -jxvf extundelete-0.2.4.tar.bz2
[root@xiaolei ~]# ls
anaconda-ks.cfg  extundelete-0.2.4  extundelete-0.2.4.tar.bz2
[root@xiaolei ~]# cd extundelete-0.2.4
[root@xiaolei 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

2.2.10 安装依赖环境

[root@xiaolei ~]# yum install -y gcc* pcre*

2.2.11 进入到extundelete-0.2.4,执行configure文件

[root@xiaolei ~]# cd extundelete-0.2.4
[root@xiaolei 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@xiaolei extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
extundelete.cc: In function ‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’:
extundelete.cc:1272:29: warning: narrowing conversion of ‘search_flags’ from ‘int’ to ‘ext2_ino_t {aka unsigned int}’ inside { } [-Wnarrowing]
    buf, match_name2, priv, 0};
                             ^
Making install in src
  /usr/bin/install -c extundelete '/usr/local/extundelete/bin'

2.2.12建立软链接

[root@xiaolei extundelete-0.2.4]# cd /usr/local/
[root@xiaolei local]# ls
bin  etc  extundelete  games  include  lib  lib64  libexec  sbin  share  src
[root@xiaolei local]# cd extundelete/
[root@xiaolei extundelete]# ls
bin
[root@xiaolei extundelete]# ln -s /usr/local/extundelete/bin/* /usr/bin/
[root@xiaolei extundelete]# ls bin/
extundelete

2.2.13 将a数据分别写入到a、b、c、d里面

[root@xiaolei ~]# cd /ABC/
[root@xiaolei ABC]# echo a > a
[root@xiaolei ABC]# ls
a  lost+found
[root@xiaolei ABC]# echo a > b
[root@xiaolei ABC]# echo a > c
[root@xiaolei ABC]# echo a > d
[root@xiaolei ABC]# ls *
a  b  c  d

2.2.14 查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录

[root@xiaolei ABC]# extundelete /dev/sdb1 --inode 2
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
a                                                 12
b                                                 13
c                                                 14
d                                                 15

2.2.15 删除a和b

[root@xiaolei ABC]# rm -rf a b
[root@xiaolei ABC]# ls
c  d  lost+found
[root@xiaolei ABC]# extundelete /dev/sdb1 --inode 2
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
a                                                 12             Deleted
b                                                 13             Deleted
c                                                 14
d                                                 15
显示a和b被删除

2.2.16 回到家目录,解挂载——数据恢复需要解挂载

[root@xiaolei ~]# umount /dev/sdb1 /ABC/
umount: /ABC/: not mounted
[root@xiaolei ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G   1% /run
tmpfs                   tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  3.6G   47G   8% /
/dev/sda1               xfs      1014M  151M  864M  15% /boot
/dev/mapper/centos-home xfs       241G   33M  241G   1% /home
tmpfs                   tmpfs     781M     0  781M   0% /run/user/0

2.2.17 恢复数据

[root@xiaolei ~]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 400 groups loaded.
Loading journal descriptors ... 34 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@xiaolei ~]# ls
anaconda-ks.cfg  extundelete-0.2.4  extundelete-0.2.4.tar.bz2  RECOVERED_FILES
[root@xiaolei ~]# cd RECOVERED_FILES/
[root@xiaolei RECOVERED_FILES]# ls
a  b
###丢失文件已找回

2.3、补充:重新刷新yum列表

yum clean all

yum makecache fast

yumlist

yum repolist

2、XFS类型文件备份和恢复

2.1 CentOS7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。

2.2 xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。xfsdump 的备份级别默认为 0。

2.3 xfsdump命令格式:

xfsdump -f +备份文件存放位置+要备份的路径或设备文件

2.4 常用选项

选项说明
xfsdump -f指定备份文件目录
xfsdump -L指定标签session label
xfsdump -M指定设备标签 media label
xfsdump -s备份单个文件,-s后面不能直接跟路径

2.5 xfsdump使用限制

①只能备份已挂载的文件目录
②必须使用root权限才能操作
③只能备份XFS文件系统
④备份后的数据只能让xfsrestore解析
⑤不能备份两个具有相同UUID的文件系统(可用blkid命令查看)

3、XFS类型文件备份示例

3.1 环境准备

3.1.1 准备一块磁盘或分区sdb1

3.1.2 安装xfsdump和xfsrestore工具

3.2 详细步骤

3.2.1准备一块50GB的备份磁盘sdb

[root@xiaolei ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   300G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   299G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 241.1G  0 lvm  /home
sdb               8:16   0    50G  0 disk              ###50GB备份磁盘
sr0              11:0    1   4.4G  0 rom

3.2.2 创建磁盘分区sdb1

[root@xiaolei ~]# fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599):
Using default value 104857599
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help): p
 Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   104857599    52427776   83  Linux
Command (m for help): w
The partition table has been altered!
[root@xiaolei ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   300G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   299G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 241.1G  0 lvm  /home
sdb               8:16   0    50G  0 disk
└─sdb1            8:17   0    50G  0 part           ###创建50GB备份磁盘分区sdb1
sr0              11:0    1   4.4G  0 rom

3.2.3 格式化备份磁盘分区sdb1

[root@xiaolei ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=3276736 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=13106944, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3.2.4 “/”目录下创建一个data目录用于挂载设备文件/dev/sdb1

[root@xiaolei ~]# mkdir /data
[root@xiaolei ~]# ls /
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var

3.2.5 将设备文件/dev/sdb1挂载到/data目录下

[root@xiaolei ~]# mount /dev/sdb1 /data/
[root@xiaolei ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G   1% /run
tmpfs                   tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  1.6G   49G   4% /
/dev/sda1               xfs      1014M  151M  864M  15% /boot
/dev/mapper/centos-home xfs       241G   33M  241G   1% /home
tmpfs                   tmpfs     781M     0  781M   0% /run/user/0
/dev/sdb1               xfs        50G   33M   50G   1% /data

3.2.6 将/etc/passwd/目录文件复制到/data/目录里

[root@xiaolei ~]# cd /data/
[root@xiaolei data]# cp /etc/passwd ./
[root@xiaolei data]# ls
passwd

3.2.7 在data/目录里创建一个子目录ABC,子目录里新建一个1.txt文件

[root@xiaolei data]# mkdir ABC
[root@xiaolei data]# ls
ABC  passwd
[root@xiaolei data]# cd ABC/
[root@xiaolei ABC]# touch 1.txt
[root@xiaolei ABC]# ls
1.txt

3.2.8 安装插件——yum install -y gcc* pcre*

[root@xiaolei ~]# yum install gcc* pcre* -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package pcre-8.32-17.el7.x86_64 already installed and latest version

3.2.9 安装xfsdump和xfsrestore工具

[root@xiaolei ~]# yum install -y xfsdump
[root@xiaolei ~]# yum install -y xfsrestore

3.2.10 在“/”目录下创建一个目录/dump_xfs作为备份目录,并在备份目录里创建一个备份文件dump_data

[root@xiaolei /]# mkdir dump_xfs
[root@xiaolei /]# ls
bin   data  dump_xfs  home  lib64  mnt  proc  run   srv  tmp  var
boot  dev   etc       lib   media  opt  root  sbin  sys  usr
[root@xiaolei /]# cd dump_xfs/
[root@xiaolei dump_xfs]# touch dump_data
[root@xiaolei dump_xfs]# ls
dump_data

3.2.10使用xfsdump命令备份整个分区

[root@xiaolei /]# xfsdump -f /dump_xfs/dump_data /dev/sdb1 -L dump_data -M /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
…………省略…………
xfsdump: Dump Summary:
xfsdump:   stream 0 /dump_xfs/dump_data OK (success)
xfsdump: Dump Status: SUCCESS

验证——模拟数据丢失

3.2.11 将目录/data那里面的数据删除,注意不要删除目录,不需要解挂载

[root@xiaolei /]# cd data/
[root@xiaolei data]# ls
1.txt  ABC  passwd
[root@xiaolei data]# rm -rf *
[root@xiaolei data]# ls

3.2.12 使用使用xfsrestore命令恢复文件

[root@xiaolei data]# xfsrestore -f /dump_xfs/dump_data /data/
xfsrestore: using file dump (drive_simple) strategy
…………省略…………
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /dump_xfs/dump_data OK (success)
xfsrestore: Restore Status: SUCCESS               ###恢复成功

3.2.13 查看data/目录下文件恢复情况

[root@xiaolei /]# cd data/
[root@xiaolei data]# ls
1.txt  ABC  passwd                      ###文件恢复成功

4、补充

4.1 rsync——通常来说针对的对象是文件,实现复制动作

4.2 extundelete / ext3/ext4 /xfsdump——是文件系统自带的有关于数据丢失后恢复的工具

四、分析日志文件

1、日志的功能

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

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

2、日志文件的分类

2.1 内核及系统日志

2.1.1 由系统服务rsyslog统一进行管理,日志格式基本相似

2.1.2 由配置文件/etc/rsyslog.conf

2.2 用户日志

2.2.1 记录系统用户登录及退出系统的相关信息

2.3 程序日志

2.3.1 由各种应用程序独立管理的日志文件,记录格式不统一

2.4 日志保存位置

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

2.5 主要日志文件介绍

日志类型位置
内核及公共消息日志/var/log/messages
计划任务日志/var/log/cron
系统引导日志/var/log/dmesg
邮件系统日志/var/log/maillog
用户登录日志/var/log/lastlog
/var/log/secure
/var/log/wtmp
/var/run/btmp

3、内核及系统日志

3.1 由系统服务rsyslog统一管理

3.1.1 软件包——rsyslog-7.4.7-16.el7.x86_64

3.1.2 主要程序——/sbin/rsyslogd

3.1.3 配置文件——/etc/rsyslog.conf

3.2 日志消息的级别

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

3.3 日志记录的一般格式

3.3.1 配置日志输出内容的时候,可以指定告警级别

3.3.2 基本格式:时间戳—用户/来源—警戒级别—描述信息

4、用户日志分析

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

4.1.1 /var/log/lastlog——最近的用户登录事件

4.1.2 /var/log/wtmp——用户登录、注销及系统开、关机事件

4.1.3 /var/run/utmp——当前登录的每个用户的详细信息

4.1.4 /var/log/secure——与用户验证相关的安全性事件

4.2 分析工具

4.2.1 users、who、w、last、lastb

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

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

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

4.3.1 Web服务:/var/log/httpd/
①access_log——记录客户访问事件
②error_log——记录错误事件

4.3.2 代理服务:/var/log/squid/
①access.log
②cache.log

4.3.3 分析工具

4.3.4 文本查看、grep过滤检索、格式化编辑工具

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

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

4.4 日志管理策略

4.4.1 及时做好备份和归档

4.4.2 尽量延长日志保存期限

4.4.3 控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等

4.4.4集中管理日志
①将服务器的日志文件发到统一的日志文件服务器
②便于日志信息的统一收集、整理和分析
③杜绝日志信息的意外丢失、恶意篡改或删除

5、 补充:日志类型

5.1 系统相关日志

①rsyslog☆☆
②内核及公共消息日志
③计划任务日志
④系统引导日志
⑤邮件系统日志
⑥用户登录日志

5.2应用程序日志

①错误日志
②告警日志
③调试日志
1 保存了用户登录、退出系统等相关信息

4.1.1 /var/log/lastlog——最近的用户登录事件

4.1.2 /var/log/wtmp——用户登录、注销及系统开、关机事件

4.1.3 /var/run/utmp——当前登录的每个用户的详细信息

4.1.4 /var/log/secure——与用户验证相关的安全性事件

4.2 分析工具

4.2.1 users、who、w、last、lastb

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

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

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

4.3.1 Web服务:/var/log/httpd/
①access_log——记录客户访问事件
②error_log——记录错误事件

4.3.2 代理服务:/var/log/squid/
①access.log
②cache.log

4.3.3 分析工具

4.3.4 文本查看、grep过滤检索、格式化编辑工具

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

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

4.4 日志管理策略

4.4.1 及时做好备份和归档

4.4.2 尽量延长日志保存期限

4.4.3 控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等

4.4.4集中管理日志
①将服务器的日志文件发到统一的日志文件服务器
②便于日志信息的统一收集、整理和分析
③杜绝日志信息的意外丢失、恶意篡改或删除

5、 补充:日志类型

5.1 系统相关日志

①rsyslog☆☆
②内核及公共消息日志
③计划任务日志
④系统引导日志
⑤邮件系统日志
⑥用户登录日志

5.2应用程序日志

①错误日志
②告警日志
③调试日志
④访问日志

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值