目录
一、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 4月 8 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系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | (紧急) | 会导致主机系统不可用的情况。 |
1 | ALERT | (警告) | 必须马上采取措施解决的问题。 |
2 | CRIT | (严重) | 比较严重的情况。 |
3 | ERR | (错误) | 运行出现错误。 |
4 | WARNING | (提醒) | 可能影响系统功能,需要提醒用户的重要事件。 |
5 | NOTICE | (注意) | 不会影响正常功能,但是需要注意的事件。 |
6 | INFO | (信息) | 一般信息。 |
7 | DEBUG | ( 调试) | 程序或系统调试信息等。 |
③日志记录的一般格式
保存了用户登录、退出系统等相关信息
/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)