目录
一.Inode 和 block 概述
编辑
1.inode 的内容
(1)Inode 包含文件的元信息
(2)用 stat 命令可以查看某个文件的 inode 信息
(3) Linux系统文件三个主要的时间属性
(4)目录文件的属性
(5)inode 的号码
2.查看 inode 号码的办法
3.inode 的大小
4.inode 的特殊作用
5.链接文件
6.文件存储小结
二.文件恢复
1.恢复EXT类型的文件
模拟实验步骤流程
2.恢复XFS类型的文件
(1)xfsdump 使用限制
(2)备份操作模拟实验
三.日志文件
1.日志的功能
2.日志文件的分类
3.日志的保存位置: 默认 /var/log 目录下
4.主要的日志文件
5.管理日志的系统服务-rsyslog
6.日志的级别(数字等级越小,优先级越高,消息越重要)
7.日志的一般格式
8.用户日志分析
9.程序分析日志
10.journalctl 日志管理工具
一.Inode 和 block 概述
在Linux系统中,文件名和文件数据是分开存储的
文件数据包含 元信息(即不包含文件名的文件属性) 和 实际数据
文件元信息存储在 inode(索引节点)里,文件实际数据存储在 block(块)里;文件名存储在目录块里
inode (索引节点)
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
block (块)
连续的八个扇区组成的一个 block (4K)
是文件存取的最小单位
一个文件必须占用一个inode,但至少占用一个block
1.inode 的内容
(1)Inode 包含文件的元信息
文件的字节数
文件拥有者的 User ID (不包含文件名)
文件的 Group ID
文件的读、写、执行权限
文件的时间戳
(2)用 stat 命令可以查看某个文件的 inode 信息
格式为: stat 文件名
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
rh
[root@localhost opt]# stat rh #查看/opt/目录下rh文件的元信息
文件:"rh"
大小:6 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:35246718 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:usr_t:s0
最近访问:2018-10-31 03:17:56.000000000 +0800
最近更改:2018-10-31 03:17:56.000000000 +0800
最近改动:2024-04-07 06:46:12.163932733 +0800
创建时间:-
[root@localhost opt]# cd /tmp/
[root@localhost tmp]# ls
anaconda.log
[root@localhost tmp]# stat anaconda.log #查看/tmp/目录下文件元的信息
文件:"anaconda.log"
大小:1149 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33577996 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-07 06:51:40.923956773 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800
创建时间:-
[root@localhost tmp]#
(3) Linux系统文件三个主要的时间属性
ctime (change time)
最后一次改变文件或目录(属性)的时间
atime (sccess time)
最后一次访问文件或目录的时间
mtime (modify time)
最后一次修改文件或目录(内容)的时间;当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
用 start + 文件名 查看文件的元信息和 inode 号
拓展: ls -i 文件名也可以查看文件的 inode 号
#原本文件里面显示的三个时间的信息
最近访问:2024-04-07 06:51:40.923956773 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800
[root@localhost tmp]# cat anaconda.log #查看文件内容
[root@localhost tmp]# stat anaconda.log #再次查看文件的信息,发现最近访问时间改变
文件:"anaconda.log"
大小:1149 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33577996 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-23 10:05:54.887838257 +0800
最近更改:2024-04-07 06:53:37.023947704 +0800
最近改动:2024-04-07 06:53:37.023947704 +0800
创建时间:-
[root@localhost tmp]# vim anaconda.log #修改文件内容
[root@localhost tmp]# stat anaconda.log
#再次查看文件的信息,发现最近更改和最近改动都发生改变
文件:"anaconda.log"
大小:1149 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33577996 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:tmp_t:s0
最近访问:2024-04-23 10:05:54.887838257 +0800 atime 最近的文件访问时间
最近更改:2024-04-23 10:06:16.728999744 +0800 mtime 最近的文件内容修改时间
最近改动:2024-04-23 10:06:16.729999752 +0800 ctime 最近的文件属性修改时间
创建时间:-
[root@localhost tmp]#
(4)目录文件的属性
(5)inode 的号码
用户通过文件名打开文件时,系统内部的过程
【1】系统找到这个文件名对应的 inode 号
【2】通过 inode 号码,获取 inode 信息
【3】根据 inode 信息,找到文件数据所在的 block ,读出数据
2.查看 inode 号码的办法
stat 文件名 查看 inode 信息中的 inode 号码
ls -i 文件名 可以查看指定文件的 inode 号
#ls -i 用法
[root@localhost opt]# ls -i a.txt
67414818 a.txt
3.inode 的大小
(1)inode 也会消耗硬盘空间大小
每个 inode 的大小,一般是128字节或者256字节;
(2)格式化文件系统的时候已经分配好 inode 的总数
(3)使用 df -i 命令可以查看硬盘分区的 inode 总数和已经使用的数量
[root@localhost opt]# df -i #可以查看每个硬盘上的 inode 的信息
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 478388 400 477988 1% /dev
tmpfs 482657 1 482656 1% /dev/shm
tmpfs 482657 1498 481159 1% /run
tmpfs 482657 16 482641 1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176 160273 18449903 1% /
/dev/sda1 262144 341 261803 1% /boot
tmpfs 482657 21 482636 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64
[root@localhost opt]# df -hT #可以发现在没有输入任何数据的时候,硬盘已经使用一部分容量
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.6G 31G 13% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 36K 378M 1% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/CentOS 7 x86_64
[root@localhost opt]#
4.inode 的特殊作用
(1)由于 inode 号码与文件名分离,导致一些 Unix/Linux 系统具有以下的现象
【1】当文件名包含特殊字符,可能无法正常删除文件,直接删除 inode ,也可以删除文件
[root@192 opt]# touch *123456 123456 a.txt #创建三个文件
[root@192 opt]# ls
123456 *123456 a.txt
[root@192 opt]# ls -i #查看他们的 inode 号
67415980 123456 67415977 *123456 67415994 a.txt
[root@192 opt]# find ./ -inum 67415980 -exec rm -rf {} \; #根据 inode 号删除
[root@192 opt]# ls
*123456 a.txt
[root@192 opt]# find ./ -inum 67415977 -delete #根据 inode 号删除
[root@192 opt]# ls
a.txt
[root@192 opt]# find ./ -inum 67415994 | xargs rm -f #根据 inode 号删除
[root@192 opt]# ls
[root@192 opt]#
#拓展:使用了三种删除方法
【2】移动或重命名文件时,只改变文件名,不影响 inode 号码
[root@192 opt]# touch abc.txt #创建abc.txt
[root@192 opt]# ls -i #查看文件的 inode 号
67193849 abc.txt
[root@192 opt]# mv abc.txt 123.txt #将文件进行重命名
[root@192 opt]# ls -i #查看文件的 inode 号
67193849 123.txt #文件名改了,但是 inode 号没变
[root@192 opt]# mv 123.txt /root/ #将文件移动到/root/目录下
[root@192 opt]# ls
[root@192 opt]# cd /root/
[root@192 ~]# ls -i | grep 123.txt #查看文件的 inode 号,也没有变
67193849 123.txt
拓展:直接查看、修改文件内容或者改变文件名都不会影响 inode 号;但是vim 编辑器修改文件内容保存退出后,会影响 inode 号;vim 编辑器是产生一个.swp文件去修改,然后替代掉原文件。
【3】打开一个文件后,系统通过 inode 号码来识别该文件,不在考虑文件名
5.链接文件
(1)硬链接
ln 源文件 目标位置
(2)软链接
ln -s 源文件或目录... 链接文件或目录位置
6.文件存储小结
二.文件恢复
1.恢复EXT类型的文件
(1)编译安装 extundelete 软件包
(2)模拟删除并执行恢复
注意:extundelete工具目前只能恢复ext类型的文件
模拟实验步骤流程
【1】使用fdisk创建分区/dev/sdb1,并格式化为ext3文件系统;
[root@192 ~]# fdisk /dev/sdb #对硬盘进行分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xe0dda7c8 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# fdisk -l #查看分好区的硬盘
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe0dda7c8
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
[root@192 ~]# mkfs -t ext3 /dev/sdb1 #格式化硬盘为ext3的文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
【2】创建一个目录,并挂载到硬盘上,然后安装 extundelete 软件的依赖包
[root@192 ~]# mkdir /test
[root@192 ~]# mount /dev/sdb1 /test/
[root@192 ~]# cd /opt/
[root@192 opt]# ls
abc.txt extundelete-0.2.4.tar.bz2
[root@192 opt]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@192 yum.repos.d]# yum install -y e2fsprogs-libs e2fsprogs-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 e2fsprogs-libs-1.42.9-19.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 e2fsprogs-devel.x86_64.0.1.42.9-19.el7 将被 安装
--> 正在处理依赖关系 libcom_err-devel(x86-64) = 1.42.9-19.el7,它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(com_err),它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
............中间省略....................
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : libcom_err-devel-1.42.9-19.el7.x86_64 1/2
正在安装 : e2fsprogs-devel-1.42.9-19.el7.x86_64 2/2
验证中 : libcom_err-devel-1.42.9-19.el7.x86_64 1/2
验证中 : e2fsprogs-devel-1.42.9-19.el7.x86_64 2/2
已安装:
e2fsprogs-devel.x86_64 0:1.42.9-19.el7
作为依赖被安装:
libcom_err-devel.x86_64 0:1.42.9-19.el7
【3】编译安装extundelete压缩包
[root@192 yum.repos.d]# cd /opt/
[root@192 opt]# ls
abc.txt extundelete-0.2.4.tar.bz2
[root@192 opt]# tar xf extundelete-0.2.4.tar.bz2
[root@192 opt]# ls
abc.txt extundelete-0.2.4 extundelete-0.2.4.tar.bz2
[root@192 opt]# cd extundelete-0.2.4/
[root@192 extundelete-0.2.4]# ls
acinclude.m4 autogen.sh configure depcomp LICENSE Makefile.in README
aclocal.m4 config.h.in configure.ac install-sh Makefile.am missing src
[root@192 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete
Configuring extundelete 0.2.4
Writing generated files to disk
[root@192 extundelete-0.2.4]# make && make install
make -s all-recursive
Making all in src
extundelete.cc: 在函数‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’中:
extundelete.cc:1272:29: 警告:在 {} 内将‘search_flags’从‘int’转换为较窄的类型‘ext2_ino_t {aka unsigned int}’ [-Wnarrowing]
buf, match_name2, priv, 0};
^
Making install in src
/usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@192 extundelete-0.2.4]# cd /usr/local/
[root@192 local]# ls
bin etc extundelete games include lib lib64 libexec sbin share src
[root@192 local]# cd extundelete/
[root@192 extundelete]# ls bin/
extundelete
[root@192 extundelete]# cd bin/
[root@192 bin]# ls
extundelete
[root@192 bin]# ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/
[root@192 bin]# cd
[root@192 ~]# ex
ex exempi expand exportfs extundelete
exec exit export expr
【4】创建文件,并进行查看
[root@192 bin]# cd /test/
[root@192 test]# ls
[root@192 test]# echo '123456' > 123.txt
[root@192 test]# echo 'abcdef' > abc.txt
[root@192 test]# echo 'i like games' > 456.txt
[root@192 test]# ls
123.txt 456.txt abc.txt
[root@192 test]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
...................中间省略.....................................
File name | Inode number | Deleted status
. 2
.. 2
123.txt 11
abc.txt 12
456.txt 13
【5】模拟误删,并进行恢复操作
[root@192 test]# rm -f 123.txt abc.txt
[root@192 test]# ls
456.txt
[root@192 test]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
..........................中间省略....................................
File name | Inode number | Deleted status
. 2
.. 2
123.txt 11 Deleted
abc.txt 12 Deleted
456.txt 13
[root@192 test]# umount /dev/sdb1
umount: /test:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@192 test]# cd
[root@192 ~]# umount /dev/sdb1
[root@192 ~]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 160 groups loaded.
Loading journal descriptors ... 42 descriptors loaded.
Searching for recoverable inodes in directory / ...
2 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@192 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
extundelete-0.2.4.tar.bz2 RECOVERED_FILES 模板 图片 下载 桌面
[root@192 ~]# cd RECOVERED_FILES/
[root@192 RECOVERED_FILES]# ls
123.txt abc.txt
[root@192 RECOVERED_FILES]# cat *
123456
abcdef
[root@192 RECOVERED_FILES]#
拓展:磁盘有空间,但是仍然无法写入新文件的可能原因如下所示
1.inode号被占满;
2.磁盘出现了问题
模拟 inode 号被挤满的实验
[root@192 RECOVERED_FILES]# mount /dev/sdc1 /test/
[root@192 test]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 478388 422 477966 1% /dev
tmpfs 482657 1 482656 1% /dev/shm
tmpfs 482657 1470 481187 1% /run
tmpfs 482657 16 482641 1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176 159803 18450373 1% /
/dev/sda1 262144 341 261803 1% /boot
tmpfs 482657 9 482648 1% /run/user/42
tmpfs 482657 1 482656 1% /run/user/0
/dev/sr0 0 0 0 - /mnt
/dev/sdc1 2560 10 2550 1% /test
[root@192 test]# touch file{1..2550}
[root@192 test]# ls | wc -l
2550
[root@192 test]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.4G 32G 13% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt
/dev/sdc1 ext4 8.7M 222K 7.8M 3% /test
[root@192 test]# echo 123 > 123.txt
-bash: 123.txt: 设备上没有空间
[root@192 test]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 478388 422 477966 1% /dev
tmpfs 482657 1 482656 1% /dev/shm
tmpfs 482657 1470 481187 1% /run
tmpfs 482657 16 482641 1% /sys/fs/cgroup
/dev/mapper/centos-root 18610176 159803 18450373 1% /
/dev/sda1 262144 341 261803 1% /boot
tmpfs 482657 9 482648 1% /run/user/42
tmpfs 482657 1 482656 1% /run/user/0
/dev/sr0 0 0 0 - /mnt
/dev/sdc1 2560 2560 0 100% /test
2.恢复XFS类型的文件
(1)xfsdump 使用限制
只能备份已挂载的文件系统
必须使用root的权限才能执行
只能备份XFS文件系统
备份后的数据只能让xfsrestore解析
不能备份两个具有相同UUID的文件系统
[root@192 test]# blkid #查看相关文件系统的UID号
/dev/sda1: UUID="4e61eae8-78c3-4999-9778-637a8c3c4f0c" TYPE="xfs"
/dev/sda2: UUID="dhRL0B-Mc2P-pAko-Z0Kk-pZNE-EHL9-OZ6hoe" TYPE="LVM2_member"
/dev/sdb1: UUID="c416cb69-6feb-454f-b0ae-d19aaf40f24c" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdc1: UUID="5b1728cb-d792-42d5-a6a5-aa5649b1e051" TYPE="ext4"
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="03a44f17-4dd1-425b-a9e4-832f930a4e90" TYPE="xfs"
/dev/mapper/centos-swap: UUID="25b1fdac-878c-4096-aa6e-c73d00730226" TYPE="swap"
(2)备份操作模拟实验
【1】使用fdisk创建分区/dev/sdc2,格式化xfs文件系统
[root@192 test]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (22528-41943039,默认为 22528):
将使用默认值 22528
Last 扇区, +扇区 or +size{K,M,G} (22528-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@192 test]# fdisk -l
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5330399b
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 22527 10240 83 Linux
/dev/sdc2 22528 41943039 20960256 83 Linux
[root@192 test]# mkfs -t xfs /dev/sdc2
meta-data=/dev/sdc2 isize=512 agcount=4, agsize=1310016 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5240064, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 test]# cd
[root@192 ~]# mount /dev/sdc2 /test/
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.4G 32G 13% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt
/dev/sdc2 xfs 20G 33M 20G 1% /test
【2】安装 xfsdump xfsrestore 软件,并对文件进行复制
[root@192 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
extundelete-0.2.4.tar.bz2 RECOVERED_FILES 模板 图片 下载 桌面
[root@192 ~]# cp -a * /test/
[root@192 ~]# cd /test/
[root@192 test]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
extundelete-0.2.4.tar.bz2 RECOVERED_FILES 模板 图片 下载 桌面
[root@192 test]# yum install -y xfsdump xfsrestore
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 xfsdump-3.1.7-1.el7.x86_64 已安装并且是最新版本
没有可用软件包 xfsrestore。
无须任何处理
[root@192 test]# xfsdump -f /opt/dump_sdc2 /dev/sdc2 -L /test -M sdc2
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 192.168.80.90:/test
xfsdump: dump date: Tue Apr 23 21:13:54 2024
xfsdump: session id: 6a8cb52a-0331-4eaa-92da-39c6bba188dd
xfsdump: session label: "/test"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 152256 bytes
xfsdump: /var/lib/xfsdump/inventory created
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 147488 bytes
xfsdump: dump size (non-dir files) : 117320 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/dump_sdc2 OK (success)
xfsdump: Dump Status: SUCCESS
[root@192 test]# cd /opt/
[root@192 opt]# ls
abc.txt dump_sdc2 extundelete-0.2.4 extundelete-0.2.4.tar.bz2
【3】模拟硬盘被强制格式化,并重新创建文件系统,造成数据丢失
[root@192 opt]# umount /test
[root@192 opt]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.4G 32G 13% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt
[root@192 opt]# mkfs.xfs -f /dev/sdc2
meta-data=/dev/sdc2 isize=512 agcount=4, agsize=1310016 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5240064, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 opt]# mount /dev/sdc2 /test
[root@192 opt]# cd /test/
[root@192 test]# ls
【4】使用 sfxrestore 恢复
[root@192 test]# xfsrestore -f /opt/dump_sdc2 /test
xfsrestore: using file dump (drive_simple) strategy
.........................中间省略......................................
xfsrestore: Restore Status: SUCCESS
[root@192 test]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
extundelete-0.2.4.tar.bz2 RECOVERED_FILES 模板 图片 下载 桌面
[root@192 test]#
三.日志文件
1.日志的功能
用于记录系统、程序运行中发生的事件
通过与阅读日志,有助于诊断和解决系统故障
2.日志文件的分类
(1)内核及系统日志:由系统服务 rsyslog 统一进行管理,日志格式基本相似;主配置文件 /etc/rsyslog.conf
(2)用户日志:记录系统用户登录继推出系统的相关信息
(3)程序日志:由各种程序文件独立管理的日志文件吗,记录格式不统一
3.日志的保存位置: 默认 /var/log 目录下
4.主要的日志文件
(1)内核及公共消息日志:
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
(2)计划任务日志:
/var/log/cron:记录crond计划任务产生的事件信息。
(3)系统引导日志:
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
(4)邮件系统日志:
/var/log/maillog:记录进入或发出系统的电子邮件活动。
(5)用户登录日志:
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件
/var/run/btmp:记录失败的、错误的登录尝试及验证事件
5.管理日志的系统服务-rsyslog
rsyslog还可以实现远程收集日志功能(收集多台主机的日志进行统一管理)
拓展:集中式收集管理日志方案 rsyslog 、shell/python脚本
ELK(elasticsearch+logstash+kibana) Loki+promtail+grafana
6.日志的级别(数字等级越小,优先级越高,消息越重要)
级号 | 消息 | 级别 | 说明 |
0 | EMERG | 紧急 | 会导致主机系统不可用的情况。如系统崩溃 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题。如数据库被破坏 |
2 | CRIT | 严重 | 比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能 |
3 | ERR | 错误 | 运行出现错误。不是非常紧急,尽快修复的 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件。无需处理 |
6 | INFO | 信息 | 一般信息。正常的系统信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等。包含详细开发的信息,调试程序时使用 |
none:没有优先级,不记录任何日志消息
7.日志的一般格式
vim messages 日志文件的记录格式
时间标签:主机名:子系统名称:消息
1消息发出的日期和时间。
2生成消息的计算机的名称。
3发出消息的应用程序的名称。
4消息的具体内容
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件
规则配置格式:【设备、级别、动作】
*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)
设备字段说明:
auth 用户认证时产生的日志 authpriv ssh、ftp等登录信息的验证信息
daemon 一些守护进程产生的日志 ftp FTP产生的日志
lpr 打印相关活动 mark rsyslog服务内部的信息,时间标识
console 针对系统控制台的消息 cron 系统执行定时任务产生的日志
kern 系统内核日志 local0~local7 自定义程序使用
mail 邮件日志 user 用户进程news 网络新闻传输协议(nntp)产生的消息 syslog 系统日志
mark rsyslog服务内部的信息,时间标识
uucp Unix-to-Unix Copy 两个unix之间的相关通信
8.用户日志分析
保存了用户登录、退出系统等相关信息
/var/log/secure:与用户验证相关的安全性事件(文本格式)
/var/log/lastlog:最近的用户登录事件(二进制格式)
/var/log/wtmp:用户登录、注销及系统开、关机事件(二进制格式)
/var/run/btmp:当前登录的每个用户的详细信息(二进制格式)二进制格式无法直接进行查看,要进行二进制格式转换才能查看
分析工具:users 、who、w、last、lastb
last命令用于查询成功登录到系统的用户记录
lastb命令用于查询成功登录失败的用户记录
9.程序分析日志
由相应的应用程序独立进行管理
Web服务:/var/log/httpd/
access_log //记录客户访问事件
error_log //记录错误事件
代理服务:/var/log/squid/
access.log、cache.log
分析工具
文本查看、grep过滤、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
10.journalctl 日志管理工具
journalctl是centos7上专有的日志管理工具,该工具是从messages这个文件里读取信息。
Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志);日志的配置文件是/etc/systemd/journald.conf在centos7以前系统中,读取日志信息只能通过 vim 、more、less 等方式打开 /var/log/messages文件去查看信息
journalctl常用选项
#查看所有日志(默认情况下,只保存本次启动的日志)
journalctl
journalctl -r #-r表示倒序,从尾部看(推荐)
#查看内核日志(不显示应用日志)
journalctl -k
#查看系统本次启动的日志
journalctl -b [-0]
#查看上一次启动的日志(需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志)
journalctl -b -1
#显示尾部指定行数的日志
查看的是/var/log/messages的日志,但是格式上有所调整,如主机名格式不一样而已
journalctl -n 20 [-f]
#查看某个服务的日志
journalctl -u nginx.service [-f]
#查看指定进程的日志
journalctl _PID=1
#查看指定用户的日志
journalctl _UID=0 --since today
journalctl -xe
# -x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址
#-e pager-end 从末尾开始看