第十一章、深入理解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 用于存储文件元信息

第十一章、深入理解Linux文件系统与日志分析_第1张图片

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 硬盘分区后的结构

第十一章、深入理解Linux文件系统与日志分析_第2张图片

主要是位置不同

1.12 访问文件的简单流程

第十一章、深入理解Linux文件系统与日志分析_第3张图片

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 日志消息的级别

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

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应用程序日志

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

你可能感兴趣的:(linux,服务器,数据库)