inode节点与文件恢复

一、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 --> 回车 --> 回车 --> w
mkfs -t ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data/

(2)模拟故障

df -i /dev/sdb1
touch /data/{1..65269}

(3)测试

touch /data/ab      //报错,磁盘空间不足
rm -rf /data/1
touch /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.bz2
cd ~/extundelete-0.2.4/
./configure --prefix=/usr/local/ex && make && make install
cd /usr/local/ex/bin

3.使用

touch /data/11111
mkdir /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-->quit
chroot /mnt/sysimage   //进入原系统环境
grub-install /dev/sda           //重新安装grub引导程序
reboot

原文地址:http://blog.51cto.com/13770206/2134221

时间: 2024-10-12 22:51:18

inode节点与文件恢复的相关文章

inode节点

inode(index node):索引节点 作用:用于存贮文件和目录基本信息 理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4K

linux extundelete 删除文件恢复

extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3,ext4文件系统下被误删除的文件. [问题案例]最近看到群里提到如何恢复LINUX下ext4误删的文件,之前听说过ext3分区恢复工具ext3grep,但是恢复ext4一直没有概念,而且目前线上的系统分区格式都是ext4,SO网上找到了一款叫extundelete的文件恢复工具,该工具最给力的一点就是支持ext3/ext4双格式分区恢复,对我

Ubuntu 16.04使用rm -rf误删文件恢复方法收集

说明:不一定有效,需要不断尝试 一.lsof 文件刚刚被删除,想要恢复,先尝试lsof. lsof |grep data.file1 cp /proc/xxx/xxx/xx /dir/data.file1 如果lsof不能看到文件,那么就需要使用恢复软件进行恢复. 要做的第一件事是立刻卸载被误删除文件所在的分区,或者重新以只读方式挂载此分区. umount /dev/part 或 mount -o remount,ro /dev/part 删除一个文件,就是将文件inode(inode 是操作系

误删linux文件恢复

Linux下文件误删除,使用extundelete恢复测试过程 extundelete下载官网地址:https://pkgs.org/download/extundelete 给虚拟主机添加一块磁盘,磁盘为/dev/sdb [[email protected] bin]# cat /proc/scsi/scsi Attached devices: Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk R

linux中的inode节点

一.背景 传统的磁盘与文件系统的应用中,一个分区就只能够被格式化成一个文件系统,所以我们可以说一个文件系统就是一个分区.但是由于新技术的利用,例如我们常听到的LVM与软磁盘阵列(software raid),这些技术可以将一个分区格式化为多个文件系统(例如LVM),也能够将多个分区合成一个文件系统(LVM,RAID),通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区. 那么文件系统是怎么运行的呢?这与操作系统的数据有关.较新的操作系统的文件数据除了文件实际内容外,通常含有非常多的属

云服务器 ECS Linux 误删除文件恢复方法介绍

云服务器 ECS Linux 下,rm -rf  意味着一旦删除的文件是无法挽回的.但如果在没有文件覆盖操作的前提下,可以先尝试相关方式进行文件恢复. 本文对此进行简要说明. https://help.aliyun.com/knowledge_detail/41197.html?spm=5176.7841174.2.6.uqC1as 通过 extundelete 尝试数据恢复 说明: 下文以 CentOS 6.5 ext4 文件系统为实验环境,工具为 extundelete. 在实际线上恢复过程

inode节点与硬链接概念详解

一.inode节点理解 inode(索引节点):存储文件元信息的区域 扇区:在linux系统中,最小的存储单位,通常为512字节(0.5kb) block:linux系统中文件最小的存取区域(操作系统读取硬盘时,一次性连续读取多个扇区,即一次性读取一个块),每个块中通常包含8个扇区,大小为4k 1.看完上面三个名词的解释后,再来看看inode的作用: 1.1.文件数据在块中(一次性可占用多个扇区,且最小占用一个块),那么文件的元信息(创建者.创建日期.大小等)需要找一个地方来储存,这个储存区域就

Linux文件系统中的inode节点详细介绍

这篇文章主要介绍了Linux文件系统中的inode节点,详细讲解了inode是什么.inode包含的信息.inode号码的相关资料等. 一.inode是什么? 理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块&q

使用lsof处理文件恢复、句柄以及空间释放问题

曾经在生产上遇到过一个df 和 du出现的结果不一致的问题,为了排查到底是哪个进程占用了文件句柄,导致空间未释放,首先在linux上面,一切皆文件,这个问题可以使用lsof这个BT的命令来处理(这个哈还可以来查询文件句柄泄露问题,应用程序的进程未关闭文件句柄) 1.文件句柄以及空间释放问题 注:在生产环境常见的问题就是,有维护人员或者开发同事使用tail命令实时查看日志.然后另外的人使用rm命令删除,这有就好导致磁盘空间不会真正的释放,因为你要删除的文件,还有进程在使用,文件句柄没有释放,即ta