目录
前言
处理Linux系统各种故障是,故障的症状是最易发现的,熟悉Linux常见的日志文件,有助于我们及时解决各种系统问题。
一、inode与liock概述
文件数据包括源信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是扇区,每个扇区521字节
block
连续的8个扇区组成一个block
文件是存取最小单位
inode
中文译名索引节点,也叫i节点
用于存储文件元信息
二、inode的内容
inode包含的元信息
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读,写,执行权限
文件的时间戳
查看文件对应的inode两种方式
ls -i
stat 文件名
Linux系统文件三个主要时间属性
ctime:最后一次改变文件目录的时间
atime:最后一次访问时间
mtime:最后一次修改文件时间
当我用vim修改文件三个时间都会改变
三、inode号码
用户通过文件名打开文件,系统内部的过程
1系统通过这个文件名对应indoe号码
2 通过inode号码,获取inode的信息
3 根据inode信息,找到文件数据所在的bloak,读出数据
当遇到有特殊字符文件名无法删除时,可以通过inode删除文件
模拟inode节点耗尽处理
使用fdisk创建分区/dev/sdb1
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1 设置文件格式
mkdir /test 创建文件
mount /dev/sdb1 /test 挂载文件
df -i
模拟inode节点耗尽故障
for ((i=1; i<=5680; i++)) ;do touch /test/file$i;done
touch {1..5680}.txt 循环创建5680个txt文件
结束后我们在创建一个文件会发现明明还有硬盘容量却无法创建因为节点耗尽了
四 、 ext3的文件恢复
extundelete 是一一个开源的Linux 数据恢复工具,支持ext3、 ext4文件系统。 ( ext4只能在centos6版本恢复)
1 fdisk创建分区/dev/sdc1, 格式化ext3文件系统
fdisk /dev/sdc
partprobe /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1/test
df -hT
2 安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++
3 编译安装extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete
/0.2.4/extundelete-0.2.4.tar.bz2tar jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4/
./configure --prefix=/usr/1ocal/extundelete && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/
4 模拟删除并执行恢复操作
cd /test
echo a>a
echo a>becho a>c
echo a>d
ls
extundelete /dev/sdc1 --inode 2 #查看文件系统/dev/sdc1下存在哪些文件,
i节点是从2开始 的,2代表该文件系统最开始的目录。
rm -rf a b
extundelete /dev/sdc1 --inode 2
cd ~
umount /test
extundelete /dev/sdc1 --restore-all #恢复/dev/sdc1 文件系统下的所有内容
在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED FILES/
五、 日志功能与消息
日志的功能
记录系统,程序发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
日志文件分类
内核及系统日志:由系统服务rsylog统一管理
用户日志:记录系统用户登陆及退出相关信息
程序日志:由各种程序独立管理的日志文件
日志保存位置 /var/log目录下
常见的一些日志文件
1、内核及公共消息日志:
/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。
2、计划任务日志:
/var/1og/cron: 记录crond计划任务产生的事件信息。
3、系统引导日志:
/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息
4、邮件系统日志:
/var/log/maillog: 记录进入或发出系统的电子邮件活动。
Linux系统内核消息级别
0 EMERG(紧急) | 会导致主机系统不可用的情况 |
1 ALERT(警告) | 必须马上采取措施解决的问题 |
2 CRIT(严重) | 比较严重的情况 |
3 ERR (错误) | 运行出现错误 |
4 WARNING(提醒) | 可能影响系统功能,需要提醒用户的重要事件 |
5 NOTICE (注意) | 不会影响正常功能,但是需要注意的事件。 |
6 INFO(信息) | 一般信息 |
7 DEBUG(调试) | 程序或系统调试信息等。 |
数字等级越小,优先级越高,消息越重要
公共日志文件的记录格式
时间标签:消息发出的日期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。
程序自己维护日志记录,httpd 网站服务程序使用两个日志文件:
access_log : #记录客户访问事件
error_log #记录错误事件。
详细日志分析命令
users:命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数
who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。
w:命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的输出内容要丰富一些
last:命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。
lastb:命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。
总结
在Linux系统中每次故障报错都会生成日志,快速查看日志分析日志才能尽快解决故障。