在处理 Linux 系统出现的各种故障时,故障的症状是容易被发现的,但是导致故障的原因才是排除故障的关键。只有熟悉了解 Linux 系统的日志文件,才能对症下药,及时的解决掉各种系统问题。
inode 包含很多文件元信息,但不包含文件名,例如
使用 stat 命令可以查看文件的 inode 信息,使用 ls 命令可以查看文件的 inode 号,他们的区别在于 stat 命令是通过查看文件的 inode 信息而查看到 inode 号码。
[root@localhost /home]#stat test.txt
文件:"test.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:102008108 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-08-22 00:05:30.122124011 +0800
最近更改:2021-08-22 00:05:30.122124011 +0800
最近改动:2021-08-22 00:05:30.122124011 +0800
[root@localhost /home]#ls -i test.txt
102008108 test.txt
Linux 系统文件有三个主要的时间属性,如下所示
格式 | 说明 |
---|---|
ctime | 最后一次改变文件或目录(属性)的时间 |
atine | 最后一次访问文件或目录的时间 |
mtime | 最后一次修改文件或目录(内容)的时间 |
inode 也会消耗硬盘空间,每个 inode 大小一般是128字节或256字节,inode 的总数在格式化时就给定。
使用“df -i”可以查看每个硬盘分区的 inode 总数和已经使用的数量
[root@localhost /home]#df -iTh #iTh能更友好的显示结果
文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root xfs 28M 145K 28M 1% /
devtmpfs devtmpfs 468K 411 468K 1% /dev
tmpfs tmpfs 472K 1 472K 1% /dev/shm
tmpfs tmpfs 472K 582 472K 1% /run
tmpfs tmpfs 472K 16 472K 1% /sys/fs/cgroup
/dev/sda1 xfs 250K 328 250K 1% /boot
tmpfs tmpfs 472K 9 472K 1% /run/user/42
tmpfs tmpfs 472K 1 472K 1% /run/user/0
由于inode号码与文件名分离,导致一些 Unix/Linux 系统具有以下的现象
通过 inode 号删除文件,命令如下
[root@localhost /home]# find ./ -inum 52305140 -exec rm -i {} \;
[root@localhost /home]# find ./ -inum 50464299 -delete
分类 | 删除原文件 | 使用范围 | 保存位置 |
---|---|---|---|
软链接 | 失效 | 文件或目录 | 与原始文件可以位于不同的文件系统 |
硬链接 | 仍然可用 | 只可用于文件 | 必须与原始文件在同一个文件系统 |
ln [源文件] [目标]
ln -s [源文件或目录] [目标文件或目录]
具体操作步骤如下
[root@localhost /home]#ls
extundelete-0.2.4.tar.bz2 #查看安装的依赖包
[root@localhost /home]#tar jxvf extundelete-0.2.4.tar.bz2 #解包
[root@localhost /home]#ls #查看是否解压成功
extundelete-0.2.4 extundelete-0.2.4.tar.bz2
[root@localhost /home]#cd extundelete-0.2.4/ #设置安装路径并且编译安装
[root@localhost /home/extundelete-0.2.4]#./configure --prefix=/usr/local/extundelete && make && make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
Making install in src
/usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@localhost /home/extundelete-0.2.4]#ln -s /usr/local/extundelete/bin/* /usr/bin/
#设置软链接来调用extundelete这个命令
[root@localhost /home/extundelete-0.2.4]#cd /test/
[root@localhost /test]#echo a>a #创建多个文件
[root@localhost /test]#echo a>b
[root@localhost /test]#echo a>c
[root@localhost /test]#echo a>d
[root@localhost /test]#extundelete /dev/sdb1 --inode 2 #查看查看文件系统/dev/sdb1下存在哪些文件
[root@localhost /test]#rm -rf * #把里面所有文件删除
[root@localhost /test]#ls
[root@localhost /]#extundelete /dev/sdb1 --inode 2 #可以看到文件已经被删除
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11 Deleted
a 12 Deleted
b 13 Deleted
c 14 Deleted
d 15 Deleted
数据被删后第一件事就是要取消挂载,防止有数据进入。
[root@localhost /]#umount /test/ #取消挂载
[root@localhost /]#df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 56G 8.9G 47G 17% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 9.0M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 497M 172M 326M 35% /boot
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
接下来进行数据的恢复,恢复后在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
[root@localhost /]#extundelete /dev/sdb1 --restore-all #恢复/dev/sdb1文件系统下的所有内容
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 160 groups loaded.
Loading journal descriptors ... 29 descriptors loaded.
Searching for recoverable inodes in directory / ...
5 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@localhost /]#ls #恢复后出现了RECOVERED_FILES/目录
bin dev home lib64 mnt proc root sbin sys tmp var
boot etc lib media opt RECOVERED_FILES run srv test usr
[root@localhost /]#cd RECOVERED_FILES/
[root@localhost /RECOVERED_FILES]#cat a
a
[root@localhost /RECOVERED_FILES]#cat b #删掉的数据被成功恢复
a
[root@localhost /RECOVERED_FILES]#cat c
a
日志文件是用于记录 Linux 系统中各种运行消息的文件,相当于 Linux主机的“日记”。
在 Linux 系统中,日志数据主要包括以下三种类型
Linux 系统本身和大部分服务器程序的日志文件默认都放在目录 /var/log/ 下
日志文件 | 说明 |
---|---|
/var/log/messages | 内核及公共消息日志:记录 Linux 内核消息及各种应用程序的公共日志信息 |
/var/log/cron | 计划任务日志:记录crond计划任务产生的事件信息 |
/var/log/dmesg | 系统引导日志:记录Linux 系统在引导过程中的各种事件信息 |
/var/ log/maillog | 邮件系统日志:记录进入或发出系统的电子邮件活动 |
/var/log/secure | 用户登录日志:记录用户认证相关的安全事件信息 |
/var/log/lastlog | 记录每个用户最近的登录事件 |
/var/log/wtmp | 记录每个用户登录、注销及系统启动和停机事件 |
/var/run/btmp | 记录失败的、错误的登录尝试及验证事件 |
级别 | 说明 |
---|---|
0 EMERG(紧急) | 会导致主机系统不可用的情况 |
1 ALERT(警告) | 必须马上采取措施解决的问题 |
2 CRIT (严重) | 比较严重的情况 |
3 ERR (错误) | 运行出现错误 |
4 WARNING (提醒) | 可能影响系统功能,需要提醒用户的重要事件 |
5 NOTICE (注意) | 不会影响正常功能,但是需要注意的事件 |
6 INFO(信息) | 一般信息 |
7 DEBUG (调试) | 程序或系统调试信息等 |
对于日志的管理,总结以下几点: