博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
inode节点与文件恢复
阅读量:6402 次
发布时间:2019-06-23

本文共 2711 字,大约阅读时间需要 9 分钟。

一、inode和block


1.块→block

硬盘划分为磁头(Heads)、柱面(Cylinder)、扇区(Sector)。磁头(Heads):每张磁片的正反两面各有一个磁头,一个磁头对应一张磁片的一个面。因此,用第几磁头就可以                            表示数据在哪个磁面。柱面(Cylinder):所有磁片中半径相同的同心磁道构成“柱面",意思是这一系列的磁道垂直叠在一起,就形成一                          个柱面的形状。简单地理解,柱面就是磁道。扇区(Sector):将磁道划分为若干个小的区段,就是扇区。虽然很小,但实际是一个扇子的形状,故称为扇区。                          每个扇区的容量为512字节,是硬盘最小的存储单位。块(Block)是系统读取单位,一个块大小为4KB,由8个扇区组成

存储容量=磁头数×柱面数×扇区数×每扇区字节数

2.元信息→inode(一个文件/目录占用一个)

注:当磁盘有剩余空间,但inode用尽时,不能存储任何内容

inode内容

(1)文件大小(2)文件所有者(3)文件所有组(4)文件权限(5)文件创建时间

查看inode

stat 文件         //查看指定文件的inode信息;ls -i 文件也可简单查看文件对应inode号df -i               //查看硬盘所有的inode号,已使用inode等信息ls -i 文件 //查看指定文件的inode号ls -id 目录  //查看指定目录的inode号dumpe2fs -h 分区 | grep  -i "Inode size"  //查看指定磁盘分区inode号占用大小

find / -type f -empty //搜索系统中所有为空的文件

数据读取流程

(1)系统通过文件找到inode号(2)通过inode,寻找inode信息(3)根据inode信息,找到文件所对应的block位置,读取数据

注:一个文件的inode号一般不用更改,只有当删除文件时会释放

i节点耗尽

df -i               //查看硬盘IFree的inode剩余情况rm -rf 文件           //删除硬盘下文件,会自动释放inode号

案例:测试i节点耗尽

(1)新增1G硬盘分区并挂载

fdisk /dev/sdb --> n --> p --> 1 --> 回车 --> 回车 --> wmkfs -t ext4 /dev/sdb1mkdir /datamount /dev/sdb1 /data/

(2)模拟故障

df -i /dev/sdb1touch /data/{1..65269}

(3)测试

touch /data/ab      //报错,磁盘空间不足rm -rf /data/1touch /data/ab      //可正常创建touch /data/ac      //报错

二、硬链接与软链接


1.硬链接

ln 源文件 目标文件

特点

a.对其中一个内容修改,其余全部同步b.当删除其中一个文件时,不影响其余文件c.链接的大小为源文件大小d.只支持链接文件

2.软链接

ln -s 源文件 目标文件

特点

a.对其中一个内容修改,其余全部同步b.当删除源文件/目录时,目标文件/目录不能使用c.目标/文件不占用空间d.可链接文件/目录

三、案例:恢复误删除文件,恢复误删除分区


针对ext4文件系统(debugfs、ext3grep、extundelete);testdisk可恢复分区表

1.安装依赖包

yum -y install e2fsprogs-*

2.上传extundelete软件包,并编译安装

tar -jxvf extundelete-0.2.4.tar.bz2cd ~/extundelete-0.2.4/./configure --prefix=/usr/local/ex && make && make installcd /usr/local/ex/bin

3.使用

touch /data/11111mkdir /data/aa/rm -rf /data/11111          //删除文件,测试./extundelete /dev/sdb1 --restore-all   //恢复磁盘被删除内容ls RECOVERED_FILES/     //查看恢复目录下是否有恢复完成的文件./extundelete /dev/sdb1 --restore-file=11111        //只恢复名为11111的文件./extundelete /dev/sdb1 --restore-inode=12      //只恢复inode为12的文件./extundelete /dev/sdb1 --restore-directory=aa      //只恢复aa目录及其下所有文件内容./extundelete /dev/sdb1 --inode=2           //查看/dev/sdb1所有被误删除的文件名及inode号

4.testdisk恢复分区表

tar -jxvf testdisk-7.1-WIP.linux26-x86_64.tar.bz2   //解压testdisk软件包mv testdisk-7.1-WIP /data/     //移动到别的硬盘中dd if=/dev/zero of=/dev/sda bs=512 count=1    //模拟磁盘MBR引导损坏reboot    //重启,无法进入系统

放入光盘,进入恢复模式

mkdir /a && mount /dev/sdb1 /a      //新建目录/a,并挂载磁盘/dev/sdb1到/a/a/testdisk-7.1-WIP/testdisk_static /dev/sda --> Proceed(选择需恢复的磁盘)-->intel(选择磁盘分区类型)-->Analyse(分析磁盘分区情况)-->Write(回车,将搜索到的分区表写入到磁盘中)-->y-->quitchroot /mnt/sysimage   //进入原系统环境grub-install /dev/sda           //重新安装grub引导程序reboot

转载于:https://blog.51cto.com/13770206/2134221

你可能感兴趣的文章
ubuntu server 更换源
查看>>
SQL SERVER 2008安装
查看>>
EXT中的gridpanel自适应窗口的方法
查看>>
【转】CSRF 攻击的应对之道
查看>>
unary operator expected
查看>>
IPC之共享内存
查看>>
新加坡之旅
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
Mysql DBA 高级运维学习之路-索引知识及创建索引的多种方法实战
查看>>
go语言与java nio通信,解析命令调用上下文拉起ffmpeg,并引入livego做的简单流媒体服务器...
查看>>
JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)
查看>>
mysql 存储过程创建
查看>>
【数据结构】线性表(一):顺序列表
查看>>
利用Mallet工具自动挖掘文本Topic
查看>>
Windows下oracle打补丁步骤
查看>>
Python教程(一)Python简介
查看>>
asp.net forms认证
查看>>
一帧图像的两种显示器建模方式
查看>>
Hadoop 公平调度器算法调度解析
查看>>
Linux Foundation(笔记)
查看>>