Linux文件系统与日志文件(节点inode、块block、恢复误删文件)

    技术2022-07-10  165

    Linux文件系统与日志文件

    文章目录

    Linux文件系统与日志文件一、inode与block详解【1】概述【2】inode的内容【3】inode号码【4】inode的大小【5】inode耗尽故障处理1、案例说明11】案例描述2】故障原因3】解决问题 2、模拟inode耗尽故障 二、硬链接与软连接详解【1】硬链接ln【2】软连接ln -s 三、恢复误删文件步骤1、ext文件类型【1】安装依赖包【2】模拟删除【3】模拟恢复2、xfs文件类型【1】格式化磁盘【2】创建目录,挂载磁盘,写入数据【3】模拟备份磁盘,删除数据【4】模拟恢复 四、日志文件分析【1】日志文件的分类【2】日志文件的分析1、内核及系统日志:优先级越小越重要2、用户日志:user、who、w、last、lastb3、程序日志:由程序自己维护日志记录

    一、inode与block详解

    【1】概述

    块(block):8个扇区一个块,一个扇区512字节,8一个块4096字节相当于4k。 i节点(inode):每个文件都对应一个节点,叫索引节点,是储存元信息的区域,元信息包括:文件的创建者、文件的创建日期、文件的大小。

    【2】inode的内容

    使用命令stat查看某个文件的inode信息 1、文件的字节数 2、文件拥有者的UID 3、文件的组ID号 4、文件的读、写、执行权限 5、文件的时间戳 1】最后一次改变的时间ctime:change time 2】最后一次访问的时间atime:access time 3】最后一次修改的时间mtime:modify time

    【3】inode号码

    使用命令ls -i可以查看文件名对应的inode号码,也可以使用stat命令查看文件的inode信息找到inode号。 1、系统找到这个文件对应的inode号 2、通过inode号获取inode信息 4、根据inode信息,找到文件数据所在的block,读出数据。

    【4】inode的大小

    1、对于无法删除的文件,直接删除i节点就可以删除这个文件:rm -rf 128016 2、移动和重命名文件只改变文件的名称,不改变inode号 3、打开一个文件以后系统只看inode号,不管文件名。

    【5】inode耗尽故障处理

    1、案例说明1
    1】案例描述

    在配置内存、硬盘比较小的服务器的/data分区内创建文件时,系统提示磁盘空间不足,但是用df -hT查看磁盘使用情况发现/data只是用了50%,还有足够的空间可以使用。

    2】故障原因

    (1)使用df -i查看/data下面inode就已经满了,导致系统无法创建新的文件和目录。 (2)/data/cache下面有缓存文件,虽然站的block不多,但占用了大量的inode。

    3】解决问题

    删除/data/cache下面不许要的文件就好。

    2、模拟inode耗尽故障

    步骤: 【1】新建ext4类型的文件系统(/dev/sdb2),并将其挂载到/data目录下。并使用df -i查看是否挂载成功。

    [root@localhost~]#mkdir /data [root@localhost~]#mount /dev/sdb2 /data [root@localhost~]#df -i /data

    【2】新建一个测试shell脚本,运行,查看i节点的使用情况。

    [root@localhost~]#vi killinode,sh [root@localhost~]#sh killinode.sh [root@localhost~]#df -i /data 这时会显示i节点使用100% [root@localhost~]#touch testfile 无法创建,设备上没有空间 [root@localhost~]#df -hT 但是block使用才6%说明系统分配的inode使用完了。

    【3】解决方案

    删除/data下面的缓存文件。 [root@localhost~]#rm -rf /data/file*

    二、硬链接与软连接详解

    链接使用命令ln Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,链接又可分为两种 : 硬链接与软链接,硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

    ln -b 删除,覆盖以前建立的链接 ln -d 允许超级用户制作目录的硬链接 ln -f 强制执行 ln -i 交互模式,文件存在则提示用户是否覆盖 ln -n 把软链接视为一般目录 ln -s 软链接(符号链接)

    【1】硬链接ln

    硬链接,以文件副本的形式存在。但不占用实际空间。 不允许给目录创建硬链接 硬链接只有在同一个文件系统中才能创建,使用-d可以给目录创建硬链接 格式:ln 原文件名 链接文件名

    【2】软连接ln -s

    软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式 可以 跨文件系统 ,硬链接不可以 可以对一个不存在的文件名进行链接 可以对目录进行链接 格式:ln -s 原文件名 链接文件名

    三、恢复误删文件步骤

    1、ext文件类型

    【1】安装依赖包

    [root@localhost~]#rpm -ivm e2fsprogs-libs-1.41.12......64.rpm [root@localhost~]#rpm -ivm e2fsprogs-devel1.41.12....64.rpm 安装完依赖包之后通过xftp上传exdundelete软件包解压、配置、编译、安装。 [root@localhost~]#tar jxvf extundelete-0.2.4.tar.bz2 [root@localhost~]#ls [root@localhost~]#cd extundetele-0.2.4 [root@localhost extundetele-0.2.4]#./configure configuring extundetele-0.2.4 [root@localhost extundetele-0.2.4]#make && make instal

    【2】模拟删除

    [root@localhost ~]#mount /dev/sdb1 /tmp/ [root@localhost tmp]#echo a >a [root@localhost tmp]#echo a >b [root@localhost tmp]#ls a b lost+found [root@localhost tmp]#rm -rf a [root@localhost tmp]#ls b lost+found

    【3】模拟恢复

    [root@localhost ~]#umount /tmp/ [root@localhost ~]#extundelete /dev/sdb1 --restore-all //恢复命令 在当前目录下会出现recovered_file目录,里面会有删除的a。

    2、xfs文件类型

    【1】格式化磁盘

    [root@localhost data]# mkfs -t xfs -f /dev/sdb1 mkfs.xfs: cannot open /dev/sdb1: 设备或资源忙

    这是旧磁盘,显示设备忙,说明在使用,无法格式化,这样就先结束有关它的进程再格式化

    [root@localhost ~]# yum install epel-release –y [root@localhost ~]# yum install -y psmisc [root@localhost data]# which fuser /usr/sbin/fuser [root@localhost data]# fuser -km /dev/sdb1(结束与设备相关的进程) /dev/sdb1: 7418c [root@localhost data]# mkfs -t xfs -f /dev/sdb1 mkfs.xfs: cannot open /dev/sdb1: 设备或资源忙

    发现还是资源忙,查看设备信息

    [root@localhost ~]# fdisk /dev/sdb(查看磁盘类型) 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 8e Linux LVM

    之前做过逻辑卷,所以这个磁盘被使用,从卷组中删除,在删除物理卷,并修改设备类型为83即可。

    [root@localhost ~]#vgremove vg0 /dev/sdb1(把磁盘移除卷组) Do you really want to remove volume group "vg0" containing 1 logical volumes? [y/n]: y Do you really want to remove active logical volume vg0/lv0? [y/n]: y Logical volume "lv0" successfully removed Volume group "vg0" successfully removed [root@localhost ~]# pvremove /dev/sdb1(删除物理卷) Labels on physical volume "/dev/sdb1" successfully wiped. [root@localhost ~]# mkfs -t xfs -f /dev/sdb1(格式化磁盘) meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242624, 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

    【2】创建目录,挂载磁盘,写入数据

    [root@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/sdb1 /data [root@localhost ~]# cd /data [root@localhost data]# mkdir xfstest01 [root@localhost data]# cp /etc/shadow ./ [root@localhost data]# ll 总用量 4 ----------. 1 root root 645 7月 4 10:34 shadow drwxr-xr-x. 2 root root 6 7月 4 10:33 xfstest01

    【3】模拟备份磁盘,删除数据

    [root@localhost data]# xfsdump -f /opt/data.bak /dev/sdb1(备份磁盘到另一磁盘下面) please enter label for this dump session (timeout in 300 sec) -> /opt/data.bak(备份到路径) please enter label for media in drive 0 (timeout in 300 sec) -> /dev/sdb1 (备份的磁盘) [root@localhost data]# rm -rf ./*(删除原有数据) [root@localhost data]# ll 总用量 0

    【4】模拟恢复

    [root@localhost ~]# xfsrestore -f /opt/data.bak /data(恢复数据) [root@localhost ~]# cd /data [root@localhost data]# ll 总用量 4 ----------. 1 root root 645 7月 4 10:34 shadow drwxr-xr-x. 2 root root 6 7月 4 10:33 xfstest01

    四、日志文件分析

    【1】日志文件的分类

    /var/log/messages记录内核消息及各种应用程序的公共日志信息 /var/log/cron记录crond计划任务产生的事件信息 /var/log/dmesg引导过程事件信息 /var/log/maillog邮件活动 /var/log/lastlog最近登录信息 /var/log/secure认证安全信息 /var/log/wtmp登录、注销、启动、停机 /var/log/btmp失败,错误的登录尝试及验证事件

    【2】日志文件的分析

    1、内核及系统日志:优先级越小越重要
    0紧急emerg 1警告alert 2严重crit 3错误err 4提醒warning 5注意notice 6信息info 7调试debug
    2、用户日志:user、who、w、last、lastb
    user命令输出当前登录的用户名称 who命令报告当前登录用户的信息 w命令显示当前登录的用户进程信息 last命令查询成功登录到系统的用户 lastb命令查询登录失败的用户记录
    3、程序日志:由程序自己维护日志记录

    例如http使用access_log记录客户访问事件,error_log记录访问错误事件。

    Processed: 0.050, SQL: 9