linux文件系统与日志文件

一、inode和block概述

1、文件、扇区

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

2、块(block)

●一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位,文件数据存储在“块”中。

3、文件数据

●文件数据包括实际数据与元信息(类似文件属性)。
●文件数据存储在“块”中,文件元信息存储在inode中。

4、inode(索引节点)

●inode不包含文件名。文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
●inode是存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域。

Linux 系统文件有三个主要的时间属性,分别是ctime(change time), atime(access time), mtime(modify time)。

ctime(change time) 是最后一次改变文件或目录(属性)的时间,例如执行 chmod, chown 等命令;

atime(access time)是最后一次访问文件或目录的时间;

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

inode 的大小

inode 也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是 inode 区,存放 inode 所包含的信息。每个 inode 的大小,一般是 128 字节或 256 字节。通常情况下不需要关注单个 inode 的大小,而是需要重点关注 inode 总数。inode 的总数在格式化时就给定了,执行“df -i”命令即可查看每个硬盘分区对应的的 inode 总数和已经使用的 inode 数量。

inode 的特殊作用

由于 inode 号码与文件名分离,导致一些 Unix/Linux 系统具备以下几种特有的现象。
文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;

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

打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。

inode删除命令
find ./ -inum inodo号 -delete

一个文件对应一个inodo号,inodo号被删除,文件也被删除,反之一样

5、结论

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

●查看文件的inode信息

ls -i 文件
stat 文件

二、模拟inode节点耗尽实例

步骤

fdisk /dev/sdb               #管理磁盘
mkfs.xfs /dev/sdb1           #格式化磁盘
mkdir /sdb1                  #创建/目录下sdb1目录,用于挂载
mount /dev/sdb1 /sdb1        #挂载
df -i                        #查询可用inode号
模拟inode节点耗尽 
for ((i=1;i<=7700;i++));do touch /sdb1$i;done

1、编辑虚拟机设置,添加新硬盘,重启虚拟机。
2、查看磁盘列表
3、管理磁盘,创建磁盘
4、进行挂载之前需先确定文件系统类型,进行格式化,格式华为ext3
5、在根目录下创建一个子目录/sdb1用于挂载
6、查看挂载表,确认文件系统类型更改成功
7、查看inode号
8、使用for循环创建文件,超出inode号范围是否会无法创建
9、经过查看挂载表,发现已用容量仅561k,却无法再创建文件
如果想再创建文件,将内部文件删除或解除inode占用

实验可得:磁盘内可用inode号使用完后,即使磁盘还剩余空间也无法再创建文件。

详细代码:

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+30M
分区 1 已设置为 Linux 类型,大小设为 30 MiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@node ~]# 
[root@node ~]# 
[root@node ~]# 
[root@node ~]# 
[root@node ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
7680 inodes, 30720 blocks
1536 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=31457280
4 block groups
8192 blocks per group, 8192 fragments per group
1920 inodes per group
Superblock backups stored on blocks: 
	8193, 24577

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (1024 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@node ~]# ls /home
a                a.txt  backup  chaiq  e    h     messages  sdb1     wujun  yr
abc123.tar.bz2   b      bang    cl     er   i     passwd    wang     yi     z
abc123.tar.bz.2  baby   c       d      gou  ky19  san       wangcai  yiyi
[root@node ~]# rm -rf /home/sdb1
[root@node ~]# ls /home
a                a.txt  backup  chaiq  e    h     messages  wang     yi    z
abc123.tar.bz2   b      bang    cl     er   i     passwd    wangcai  yiyi
abc123.tar.bz.2  baby   c       d      gou  ky19  san       wujun    yr
[root@node ~]# mkdir sdb1
[root@node ~]# mount /dev/sdb1 /sdb1
mount: 挂载点 /sdb1 不存在
[root@node ~]# mount /dev/sdb1  ./sdb1
[root@node ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        56G  5.4G   51G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1       497M  167M  330M   34% /boot
tmpfs           378M   12K  378M    1% /run/user/42
tmpfs           378M     0  378M    0% /run/user/0
/dev/sdb1        29M  376K   27M    2% /root/sdb1
[root@node ~]# mount -a
[root@node ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        56G  5.4G   51G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1       497M  167M  330M   34% /boot
tmpfs           378M   12K  378M    1% /run/user/42
tmpfs           378M     0  378M    0% /run/user/0
/dev/sdb1        29M  376K   27M    2% /root/sdb1
[root@node ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs        56G  5.4G   51G   10% /
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/sda1      xfs       497M  167M  330M   34% /boot
tmpfs          tmpfs     378M   12K  378M    1% /run/user/42
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1      ext3       29M  376K   27M    2% /root/sdb1
[root@node ~]# df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda3      29152768  162597 28990171       1% /
devtmpfs         478742     407   478335       1% /dev
tmpfs            482688       1   482687       1% /dev/shm
tmpfs            482688    1421   481267       1% /run
tmpfs            482688      16   482672       1% /sys/fs/cgroup
/dev/sda1        256000     341   255659       1% /boot
tmpfs            482688       9   482679       1% /run/user/42
tmpfs            482688       1   482687       1% /run/user/0
/dev/sdb1          7680      11     7669       1% /root/sdb1
[root@node ~]# ls
aaa.tar.gz  error.txt  sdb1  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@node ~]# cd /sdb1
-bash: cd: /sdb1: 没有那个文件或目录
[root@node ~]# cd sdb1
[root@node sdb1]# touch {1..7700}.txt
touch: 无法创建"7696.txt": 设备上没有空间
touch: 无法创建"7697.txt": 设备上没有空间
touch: 无法创建"7698.txt": 设备上没有空间
touch: 无法创建"7699.txt": 设备上没有空间
touch: 无法创建"7700.txt": 设备上没有空间
[root@node sdb1]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        56G  5.4G   51G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1       497M  167M  330M   34% /boot
tmpfs           378M   12K  378M    1% /run/user/42
tmpfs           378M     0  378M    0% /run/user/0
/dev/sdb1        29M  558K   27M    3% /root/sdb1
[root@node sdb1]# df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda3      29152768  162597 28990171       1% /
devtmpfs         478742     407   478335       1% /dev
tmpfs            482688       1   482687       1% /dev/shm
tmpfs            482688    1421   481267       1% /run
tmpfs            482688      16   482672       1% /sys/fs/cgroup
/dev/sda1        256000     341   255659       1% /boot
tmpfs            482688       9   482679       1% /run/user/42
tmpfs            482688       1   482687       1% /run/user/0
/dev/sdb1          7680    7680        0     100% /root/sdb1
[root@node sdb1]# touch a.txt
touch: 无法创建"a.txt": 设备上没有空间
[root@node sdb1]# rm -rf ./*
[root@node sdb1]# touch 33.txt
[root@node sdb1]# ls
33.txt
[root@node sdb1]# df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda3      29152768  162597 28990171       1% /
devtmpfs         478742     407   478335       1% /dev
tmpfs            482688       1   482687       1% /dev/shm
tmpfs            482688    1421   481267       1% /run
tmpfs            482688      16   482672       1% /sys/fs/cgroup
/dev/sda1        256000     341   255659       1% /boot
tmpfs            482688       9   482679       1% /run/user/42
tmpfs            482688       1   482687       1% /run/user/0
/dev/sdb1          7680      11     7669       1% /root/sdb1
[root@node sdb1]# 

三、EXT类型文件恢复实例

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

在上个实例基础上进行操作:
1、使用fdisk创建分区/dev/sdb2,格式化ext3文件系统

fdisk /dev/sdb
mkfs.ext3 /dev/sdb2
mkdir /sdb2
mount /dev/sdb2 /sdb2

yum -y install e2fsprogs-devel e2fsprogs-libs        #安装依赖包

cd /sdb2                                             #拖入压缩包
tar jxvf extundelete-0.2.4.tar.bz2                   #进行解压缩
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/

2、模拟删除并执行恢复操作

cd /sdb1
echo a>a
echo a>b
echo a>c
echo a>d
ls

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

extundelete /dev/sdb1 --inode 2			
rm -rf a b
cd ~
umount /sdb2
extundelete /dev/sdb2 --restore-all		恢复/dev/sdb2文件系统下的所有内容

在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES

①、管理磁盘sdb,创建分区2,将剩余大小全部分配给分区2,并partprobe刷新分区
②、新磁盘使用记得挂载,挂载需要挂载点,提前确定文件系统类型,格式化
③、下载压缩包,下载好后将压缩包拖入Xshell中,在哪个目录下执行的,压缩包就在哪个目录下
④、将压缩包复制到/sdb2中并切换到/sdb2进行解压缩,再切换进入extundelete目录中将configure进行编译安装
⑤、创建软链接,在/sdb2中创建文件写入内容,并查询inode号
⑥、模拟删除,并使用工具恢复内容,恢复之前需解挂载,恢复的是磁盘内的内容

详细代码:

[root@node ~]# fdisk /dev/sdb
欢迎使用 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):
起始 扇区 (63488-20971519,默认为 63488):
将使用默认值 63488
Last 扇区, +扇区 or +size{K,M,G} (63488-20971519,默认为 20971519):
将使用默认值 20971519
分区 2 已设置为 Linux 类型,大小设为 10 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@node ~]# umount /root/sdb1
[root@node ~]# mount -a 
[root@node ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        56G  5.4G   51G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1       497M  167M  330M   34% /boot
tmpfs           378M   12K  378M    1% /run/user/42
tmpfs           378M     0  378M    0% /run/user/0
[root@node ~]# mkfs.ext3 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
无法对 /dev/sdb2 进行 stat 调用 --- 没有那个文件或目录

The device apparently does not exist; did you specify it correctly?
[root@node ~]# fdisk -l

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6eeced73

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       63487       30720   83  Linux
/dev/sdb2           63488    20971519    10454016   83  Linux

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b746e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048     9218047     4096000   82  Linux swap / Solaris
/dev/sda3         9218048   125829119    58305536   83  Linux
[root@node ~]# 
[root@node ~]# 
[root@node ~]# mkfs.ext3 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
无法对 /dev/sdb2 进行 stat 调用 --- 没有那个文件或目录

The device apparently does not exist; did you specify it correctly?
[root@node ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 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):
起始 扇区 (63488-20971519,默认为 63488):
将使用默认值 63488
Last 扇区, +扇区 or +size{K,M,G} (63488-20971519,默认为 20971519):
将使用默认值 20971519
分区 2 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@node ~]# mkfs.ext3 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
654080 inodes, 2613504 blocks
130675 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2680160256
80 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@node ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@node ~]# 
[root@node ~]# 
[root@node ~]# mkdir sdb2
[root@node ~]# mount /dev/sdb2 ./sdb2
[root@node ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        56G  5.4G   51G   10% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1       497M  167M  330M   34% /boot
tmpfs           378M   12K  378M    1% /run/user/42
tmpfs           378M     0  378M    0% /run/user/0
/dev/sdb2       9.7G   23M  9.2G    1% /root/sdb2
[root@node ~]# mount -a 
[root@node ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs        56G  5.4G   51G   10% /
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/sda1      xfs       497M  167M  330M   34% /boot
tmpfs          tmpfs     378M   12K  378M    1% /run/user/42
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb2      ext3      9.7G   23M  9.2G    1% /root/sdb2
[root@node ~]# yum -y install e2fsprogs-devel e2fsprogs-libs
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
base                                                                              | 3.6 kB  00:00:00     
extras                                                                            | 2.9 kB  00:00:00     
updates                                                                           | 2.9 kB  00:00:00     
updates/7/x86_64/primary_db                                                       |  15 MB  00:00:02     
正在解决依赖关系
--> 正在检查事务
---> 软件包 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 需要
---> 软件包 e2fsprogs-libs.x86_64.0.1.42.9-13.el7 将被 升级
--> 正在处理依赖关系 e2fsprogs-libs(x86-64) = 1.42.9-13.el7,它被软件包 e2fsprogs-1.42.9-13.el7.x86_64 需要
---> 软件包 e2fsprogs-libs.x86_64.0.1.42.9-19.el7 将被 更新
--> 正在处理依赖关系 libcom_err(x86-64) = 1.42.9-19.el7,它被软件包 e2fsprogs-libs-1.42.9-19.el7.x86_64 需要
--> 正在检查事务
---> 软件包 e2fsprogs.x86_64.0.1.42.9-13.el7 将被 升级
---> 软件包 e2fsprogs.x86_64.0.1.42.9-19.el7 将被 更新
--> 正在处理依赖关系 libss = 1.42.9-19.el7,它被软件包 e2fsprogs-1.42.9-19.el7.x86_64 需要
---> 软件包 libcom_err.x86_64.0.1.42.9-13.el7 将被 升级
---> 软件包 libcom_err.x86_64.0.1.42.9-19.el7 将被 更新
---> 软件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 将被 安装
--> 正在检查事务
---> 软件包 libss.x86_64.0.1.42.9-13.el7 将被 升级
---> 软件包 libss.x86_64.0.1.42.9-19.el7 将被 更新
--> 解决依赖关系完成

依赖关系解决

=========================================================================================================
 Package                       架构                版本                          源                 大小
=========================================================================================================
正在安装:
 e2fsprogs-devel               x86_64              1.42.9-19.el7                 base               73 k
正在更新:
 e2fsprogs-libs                x86_64              1.42.9-19.el7                 base              168 k
为依赖而安装:
 libcom_err-devel              x86_64              1.42.9-19.el7                 base               32 k
为依赖而更新:
 e2fsprogs                     x86_64              1.42.9-19.el7                 base              701 k
 libcom_err                    x86_64              1.42.9-19.el7                 base               42 k
 libss                         x86_64              1.42.9-19.el7                 base               47 k

事务概要
=========================================================================================================
安装  1 软件包 (+1 依赖软件包)
升级  1 软件包 (+3 依赖软件包)

总计:1.0 M
总下载量:105 k
Downloading packages:
(1/2): libcom_err-devel-1.42.9-19.el7.x86_64.rpm                                  |  32 kB  00:00:00     
(2/2): e2fsprogs-devel-1.42.9-19.el7.x86_64.rpm                                   |  73 kB  00:00:00     
---------------------------------------------------------------------------------------------------------
总计                                                                     327 kB/s | 105 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libcom_err-1.42.9-19.el7.x86_64                                                     1/10 
  正在更新    : e2fsprogs-libs-1.42.9-19.el7.x86_64                                                 2/10 
  正在安装    : libcom_err-devel-1.42.9-19.el7.x86_64                                               3/10 
  正在更新    : libss-1.42.9-19.el7.x86_64                                                          4/10 
  正在更新    : e2fsprogs-1.42.9-19.el7.x86_64                                                      5/10 
  正在安装    : e2fsprogs-devel-1.42.9-19.el7.x86_64                                                6/10 
  清理        : e2fsprogs-1.42.9-13.el7.x86_64                                                      7/10 
  清理        : e2fsprogs-libs-1.42.9-13.el7.x86_64                                                 8/10 
  清理        : libss-1.42.9-13.el7.x86_64                                                          9/10 
  清理        : libcom_err-1.42.9-13.el7.x86_64                                                    10/10 
  验证中      : e2fsprogs-libs-1.42.9-19.el7.x86_64                                                 1/10 
  验证中      : e2fsprogs-devel-1.42.9-19.el7.x86_64                                                2/10 
  验证中      : libcom_err-1.42.9-19.el7.x86_64                                                     3/10 
  验证中      : e2fsprogs-1.42.9-19.el7.x86_64                                                      4/10 
  验证中      : libcom_err-devel-1.42.9-19.el7.x86_64                                               5/10 
  验证中      : libss-1.42.9-19.el7.x86_64                                                          6/10 
  验证中      : libss-1.42.9-13.el7.x86_64                                                          7/10 
  验证中      : libcom_err-1.42.9-13.el7.x86_64                                                     8/10 
  验证中      : e2fsprogs-1.42.9-13.el7.x86_64                                                      9/10 
  验证中      : e2fsprogs-libs-1.42.9-13.el7.x86_64                                                10/10 

已安装:
  e2fsprogs-devel.x86_64 0:1.42.9-19.el7                                                                 

作为依赖被安装:
  libcom_err-devel.x86_64 0:1.42.9-19.el7                                                                

更新完毕:
  e2fsprogs-libs.x86_64 0:1.42.9-19.el7                                                                  

作为依赖被升级:
  e2fsprogs.x86_64 0:1.42.9-19.el7   libcom_err.x86_64 0:1.42.9-19.el7   libss.x86_64 0:1.42.9-19.el7  

完毕!
[root@node ~]# rz -E
rz waiting to receive.
[root@node ~]# ls
aaa.tar.gz  extundelete-0.2.4.tar.bz2  sdb2  模板  图片  下载  桌面
error.txt   sdb1                       公共  视频  文档  音乐
[root@node ~]# cp extundelete-0.2.4.tar.bz2 /sdb2
[root@node ~]# cd sdb2
[root@node sdb2]# ls
lost+found
[root@node sdb2]# ll
总用量 16
drwx------. 2 root root 16384 48 21:48 lost+found
[root@node sdb2]# cd ../
[root@node ~]# ls 
aaa.tar.gz  extundelete-0.2.4.tar.bz2  sdb2  模板  图片  下载  桌面
error.txt   sdb1                       公共  视频  文档  音乐
[root@node ~]# cp extundelete-0.2.4.tar.bz2 sdb2
[root@node ~]# ls
aaa.tar.gz  extundelete-0.2.4.tar.bz2  sdb2  模板  图片  下载  桌面
error.txt   sdb1                       公共  视频  文档  音乐
[root@node ~]# cd sdb2
[root@node sdb2]# tar -jvxf extundelete-0.2.4.tar.bz2 
extundelete-0.2.4/
extundelete-0.2.4/acinclude.m4
extundelete-0.2.4/missing
extundelete-0.2.4/autogen.sh
extundelete-0.2.4/aclocal.m4
extundelete-0.2.4/configure
extundelete-0.2.4/LICENSE
extundelete-0.2.4/README
extundelete-0.2.4/install-sh
extundelete-0.2.4/config.h.in
extundelete-0.2.4/src/
extundelete-0.2.4/src/extundelete.cc
extundelete-0.2.4/src/block.h
extundelete-0.2.4/src/kernel-jbd.h
extundelete-0.2.4/src/insertionops.cc
extundelete-0.2.4/src/block.c
extundelete-0.2.4/src/cli.cc
extundelete-0.2.4/src/extundelete-priv.h
extundelete-0.2.4/src/extundelete.h
extundelete-0.2.4/src/jfs_compat.h
extundelete-0.2.4/src/Makefile.in
extundelete-0.2.4/src/Makefile.am
extundelete-0.2.4/configure.ac
extundelete-0.2.4/depcomp
extundelete-0.2.4/Makefile.in
extundelete-0.2.4/Makefile.am
[root@node sdb2]# ls
extundelete-0.2.4  extundelete-0.2.4.tar.bz2  lost+found
[root@node sdb2]# cd extundelete-0.2.4/
[root@node 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@node extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make install
Configuring extundelete 0.2.4
Writing generated files to disk
Making install 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};
                             ^
  /usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@node extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin
[root@node extundelete-0.2.4]# cd /sdb2
-bash: cd: /sdb2: 不是目录
[root@node extundelete-0.2.4]# cd sdb2
-bash: cd: sdb2: 没有那个文件或目录
[root@node extundelete-0.2.4]# cd /root/sdb2
[root@node sdb2]# ls
extundelete-0.2.4  extundelete-0.2.4.tar.bz2  lost+found
[root@node sdb2]# echo a>a
[root@node sdb2]# echo a>b
[root@node sdb2]# echo a>c
[root@node sdb2]# echo a>d
[root@node sdb2]# ls
a  b  c  d  extundelete-0.2.4  extundelete-0.2.4.tar.bz2  lost+found
[root@node sdb2]# cat a
a
[root@node sdb2]# cat b
a
[root@node sdb2]# extundelete  /dev/sdb2 --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
Loading filesystem metadata ... 80 groups loaded.
Group: 0
Contents of inode 2:
0000 | ed 41 00 00 00 10 00 00 c5 42 50 62 c3 42 50 62 | .A.......BPb.BPb
0010 | c3 42 50 62 00 00 00 00 00 00 04 00 08 00 00 00 | .BPb............
0020 | 00 00 00 00 06 00 00 00 81 04 00 00 00 00 00 00 | ................
0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 c8 30 bb 50 c8 30 bb 50 e8 33 29 d8 | .....0.P.0.P.3).
0090 | 19 3d 50 62 00 00 00 00 00 00 00 00 00 00 00 00 | .=Pb............
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1649427141
Creation time: 1649427139
Modification time: 1649427139
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 4
Blocks count: 8
File flags: 0
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 1153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
extundelete-0.2.4.tar.bz2                         12
extundelete-0.2.4                                 49057
a                                                 13
b                                                 14
c                                                 15
d                                                 16
[root@node sdb2]# rm -rf a b
[root@node sdb2]# ls
c  d  extundelete-0.2.4  extundelete-0.2.4.tar.bz2  lost+found
[root@node sdb2]# extundelete  /dev/sdb2 --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
Loading filesystem metadata ... 80 groups loaded.
Group: 0
Contents of inode 2:
0000 | ed 41 00 00 00 10 00 00 56 43 50 62 54 43 50 62 | .A......VCPbTCPb
0010 | 54 43 50 62 00 00 00 00 00 00 04 00 08 00 00 00 | TCPb............
0020 | 00 00 00 00 08 00 00 00 81 04 00 00 00 00 00 00 | ................
0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 f0 7b ca 25 f0 7b ca 25 7c 95 4d e9 | .....{.%.{.%|.M.
0090 | 19 3d 50 62 00 00 00 00 00 00 00 00 00 00 00 00 | .=Pb............
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1649427286
Creation time: 1649427284
Modification time: 1649427284
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 4
Blocks count: 8
File flags: 0
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 1153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
extundelete-0.2.4.tar.bz2                         12
extundelete-0.2.4                                 49057
a                                                 13             Deleted
b                                                 14             Deleted
c                                                 15
d                                                 16
[root@node sdb2]# cd
[root@node ~]# umount /root/sdb2
[root@node ~]# extundelete  /dev/sdb2 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 80 groups loaded.
Loading journal descriptors ... 97 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@node ~]# ls
aaa.tar.gz  extundelete-0.2.4.tar.bz2  sdb1  公共  视频  文档  音乐
error.txt   RECOVERED_FILES            sdb2  模板  图片  下载  桌面
[root@node ~]# cd RECOVERED_FILES/
[root@node RECOVERED_FILES]# ls
a  b
[root@node RECOVERED_FILES]# cat a
a
[root@node RECOVERED_FILES]# cat b
a
[root@node RECOVERED_FILES]# 

四、xfs类型文件修复实例

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

●xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径

●xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

1、 使用fdisk创建分区/dev/sdb1,格式化xfs文件系统

fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs  /dev/sdb1
mkdir /sdb1
mount /dev/sdb1 /sdb1
cd /sdb1
cp /etc/passwd ./
mkdir test
touch test/a

2、使用 xfsdump 命令备份整个分区

xfsdump -f /opt/dump _sdb1 /dev / sdb1 (有交互界面)
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1(无交互)

3、模拟数据丢失并使用 xfsrestore 命令恢复文件

cd /sdb1
rm -rf ./*
xfsrestore -f /opt/dump_sdb1 /sdb1

详细步骤:

[root@node ~]# fdisk -l

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b746e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048     9218047     4096000   82  Linux swap / Solaris
/dev/sda3         9218048   125829119    58305536   83  Linux

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@node ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x1c5656d0 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
将使用默认值 20971519
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@node ~]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655296 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621184, 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@node ~]# mkdir sdb1
[root@node ~]# mount /dev/sdb1 sdb1
[root@node ~]# cd sdb1
[root@node sdb1]# cp /etc/passwd ./
[root@node sdb1]# ls
passwd
[root@node sdb1]# mkdir abc
[root@node sdb1]# 
[root@node sdb1]# touch abc/abc.txt
[root@node sdb1]# tree
.
├── abc
│   └── abc.txt
└── passwd

1 directory, 2 files
[root@node sdb1]# yum install xfsdump -y
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
base                                                                              | 3.6 kB  00:00:00     
extras                                                                            | 2.9 kB  00:00:00     
updates                                                                           | 2.9 kB  00:00:00     
updates/7/x86_64/primary_db                                                       |  15 MB  00:00:02     
软件包 xfsdump-3.1.7-1.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@node sdb1]# xfsdump -f /opt/dum_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
xfsdump: 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 node:/root/sdb1
xfsdump: dump date: Sun Apr 10 17:45:41 2022
xfsdump: session id: 1a1ddf3c-9093-4ae7-8238-40d7845b8bd2
xfsdump: session label: "dump_sdb1"
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: 25856 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 25560 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dum_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
[root@node sdb1]# cd /opt
[root@node opt]# ls
dum_sdb1  etc
[root@node opt]# cd -
/root/sdb1
[root@node sdb1]# rm -rf ./*
[root@node sdb1]# ls
[root@node sdb1]# xfsrestore  -f /opt/dump_sdb1 ./
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: ERROR: stat of /opt/dump_sdb1 failed: 没有那个文件或目录
xfsrestore: Restore Status: ERROR
[root@node sdb1]# xfsrestore  -f /opt/dum_sdb1 ./
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description: 
xfsrestore: hostname: node
xfsrestore: mount point: /root/sdb1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Sun Apr 10 17:45:41 2022
xfsrestore: level: 0
xfsrestore: session label: "dump_sdb1"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 2c8f36a7-958a-4b77-9d1d-6ee0ebe971e7
xfsrestore: session id: 1a1ddf3c-9093-4ae7-8238-40d7845b8bd2
xfsrestore: media id: 5b9120a9-c3ee-432e-86b8-895b8b7366d1
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 2 directories and 3 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/dum_sdb1 OK (success)
xfsrestore: Restore Status: SUCCESS
[root@node sdb1]# ls
abc  passwd
[root@node sdb1]# tree
.
├── abc
│   └── abc.txt
└── passwd

1 directory, 2 files
[root@node sdb1]# 

五、日志文件

1、日志的功能

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

2、日志文件的分类

①内核及系统日志
由系统服务 rsyslog 统一进行管理,日志格式基本相似
②用户日志
记录系统用户登录及退出系统的相关信息
日志记录内容包括
历史事件:时间,地点,人物,事件
日志级别

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

3、日志保存位置

日志的主配置文件为 /etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的**日志文件都默认放在目录 /var/log/目录下。**

4、常见的主要日志文件介绍

日志路径作用
内核及公共消息日志/var/log/messages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、To错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
计划任务日志/var/log/cron记录crond计划任务产生的事件信息。
系统引导日志/var/log/dmesg记录Linux系统在引导过程中的各种事件信息。
邮件系统日志/var/log/maillog记录进入或发出系统的电子邮件活动。

用户登录日志:

日志路径作用
①/var/log/lastlog记录每个用户最近的登录事件。二进制格式
②/var/log/secure记录用户认证相关的安全事件信息。
③/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件。二进制格式
④/var/run/btmp记录失败的、错误的登录些试及验证事件。二进制格式

tail -f /var/log/messages 追踪日志

journalctl工具是Centos-7才有的工具
Systemd 统一管理所有Unit 的启动日志。带来的好处就是﹐可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。
日志的配置文件/etc/systemd/journald.conf

ps -ef l grep journald

journalctl -b //查看本次启动的日志
journalctl -k //查看内核日志
journalctl -xe 经常用来查看最近报错的日志
-e:从结尾开始看
-x:提供问题相关的网址

vim /var/log/messages 也可以指定查询某个特定日期或者时间点的系统日志
查询系统内核日志配置文件:/etc/rsyslog.conf

 *.info;写入日志信息里面   (mail.none;    authpriv.none;     cron.none)不写入日志信息里面       /var/log/messages

*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)

authpriv.*       写入                        /var/log/secure
mail.*           写入                       -/var/log/maillog
cron.*           写入                        /var/log/cron
local7.* 启动     写入                        /var/log/boot.log

5、内核及系统日志

①由服务rsyslog统一管理
软件包:rsyslog-7.4.7-16.el7.x86_64
   主要程序:/sbin/rsyslogd
   配置文件:/etc/rsyslog.conf

②Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)

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

③日志记录的一般格式
在这里插入图片描述

保存了用户登录、退出系统等相关信息
/var/log/lastlog:查看最近的用户登录和未登录信息
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件

分析工具
users:指示命令输出当前登录的用户名称
who:命令用于报告登录每个人的用户信息
w :显示当前系统进程信息
last命令用于查询成功登录到系统的用户记录
lastb命令用于查询登录失败的用户记录
lastlog可以查看登录和未登录信息

lsof -i: 80 查看80端口运行的服务

6、程序日志分析

①由相应的应用程序独立进行管理
▶Web服务: /var/log/httpd/
◆access_ log
//记录客户访问事件
◆error_ log
//记录错误事件
▶代理服务: Ivar/log/squid/
◆access.log(登录)、cache.log(缓存)
▶FTP服务:/var/log/xferlog

② 分析工具
■ 文本查看、grep过滤检索、Webmin管理套件中查看
■ awk、sed等文本过滤、格式化编辑工具
■ Webalizer、Awstats等专用日志分析工具

7、日志管理策略
① 及时作好备份和归档
② 延长日志保存期限
③ 控制日志访问权限
• 日志中可能会包含各类敏感信息,如账户、口令等

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

rsyslog服务
ps -ef l grep rsyslogd //查看服务是否开启
vim /etc/rsyslog.conf //rsyslog服务配置文件
mail.* ―代表比*等级高的都记录,*代表任何,也就是说任何日志都记录
.none 代表不记录日志
日志存放位置为 *: 所有日志高于疼痛这个等级就会对所有在线用户广播
.=代表只记录=后面级别的日志
.!代表除了!后面级别的日志不记录其他的都记录
存放路径之前有"-“代表先放入缓存足够大之后再存放在路径
也可以自定义日志
vim /etc/rsyslog.conf加入一行内容
*.info/var/ log/ info.log
systemctl restart rsyslog //重启服务之后/var/log下面就生成了info.log了

工作原理
服务端工作:
1、接收日志协议两种TCP和UDP
2、根据需求或是服务类型来开启相应协议类型,对外端口514
3、开启后需要重启服务并且去查看对外端口是否存在

客户端的工作:
1、定义发送日志的两种协议类型TCP和UDP
2、发送协议类型必须跟服务端保持—致注: rsyslog协议类型:
@代表UDP
@@代表TCP
3、需要配置本机发送端到服务端的IP地址和端口
4、重启rsyslog服务并且测试验证数据

六、总结

▶ block与inode
▶硬链接与软链接
▶ 恢复误删除的文件
▶ Linux主要包含的日志文件
▶ Linux系统的日志消息级别
▶ Linux系统中用户日志的查询命令
(who、W、users、 last、 lastb)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值