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

Linux文件系统与日志文件

一、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记录访问错误事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章