www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

分区里的inode号是0号和1号的block,ext3上误操作删

2019-05-31 02:42 来源:未知

  EXT3文件系统是目前LINUX平台使用最多的文件系统,原起自EXT2,在其基础上加入日志功能(主要改变),EXT3作为许多LINUX系统默认的文件系统,误操作也在所难免。最常见的,基于LINUX EXT3上误删除操作的数据恢复就非常重要了。加上现在LINUX平台通常不用作娱乐,整体而言,数据较WINDOWS平台重要;同时,基于LINUX平台的数据恢复软件及恢复原理方面的文章都较WINDOWS少得多。鉴于此,写此文章。

分区里的inode号是0号和1号的block

 

我相信大家在使用Linux的时候都遇到过误删文件系统数据的情况,不管是自己误删还是帮人家恢复误删

现在用的比较多的恢复工具大概是ext3grep 、extundelete 这两个

当然本文不是要说这两个工具的使用方法,而是介绍每个分区里的inode号为0或1号的block到底是什么

 

在使用ext3grep 、extundelete 的时候,基本上都会有这样一个步骤

在Linux下可以通过“ls-id”命令来查看某分区目录的inode值,可以输入:

[root@localhost /]#ls –id /
2 /
[root@steven ~]# ls -id /boot
2 /boot

 

可以看到,无论是哪个分区,它的inode值都是2,而不是0,也不是1

并且当你用find命令来搜索一下0或1号inode的时候也是什么也找不到

 find /  -inum 0
find: `/proc/1461/task/1461/fd/5': No such file or directory
find: `/proc/1461/task/1461/fdinfo/5': No such file or directory
find: `/proc/1461/fd/5': No such file or directory
find: `/proc/1461/fdinfo/5': No such file or directory

那么inode为0或1的block去哪里了?

 

 

boot sector 与 superblock 的关系

block 为 1024 bytes (1K) 时:

如果 block 大小刚好是 1024 的话,那么 boot sector 与 superblock 各会占用掉一个 block , 也表示boot sector 是独立于 superblock 外面的。

[root@www ~]# dumpe2fs /dev/hdc1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   /boot
....(中间省略)....
First block:              1
Block size:               1024
....(中间省略)....

Group 0: (Blocks 1-8192)
  Primary superblock at 1, Group descriptors at 2-2
  Reserved GDT blocks at 3-258
  Block bitmap at 259 ( 258), Inode bitmap at 260 ( 259)
  Inode table at 261-511 ( 260)
  511 free blocks, 1991 free inodes, 2 directories
  Free blocks: 5619-6129
  Free inodes: 18-2008

看到最后一个特殊字体的地方吗? Group0 的 superblock 是由 1  号 block 开始的

上面结果可以发现 0 号 block 是保留下来留给 boot sector 用的

新京葡娱乐场网址 1

 

block 大于 1024 bytes (2K, 4K) 时:

如果 block 大于 1024 的话,那么 superblock 将会在 0 号!

[root@www ~]# dumpe2fs /dev/hdc2
dumpe2fs 1.39 (29-May-2006)
....(中间省略)....
Filesystem volume name: /1 
....(中间省略)....
Block size: 4096
....(中间省略)....

Group 0: (Blocks 0-32767) 
Primary superblock at 0, Group descriptors at 1-1
Reserved GDT blocks at 2-626
Block bitmap at 627 ( 627), Inode bitmap at 628 ( 628)
Inode table at 629-1641 ( 629)
0 free blocks, 32405 free inodes, 2 directories
Free blocks:
Free inodes: 12-32416

可以发现 superblock 就在第一个 block (第 0 号) 上,但是 superblock 其实就只有 1024bytes 

为了怕浪费更多空间,因此第一个 block 内就含有 boot sector 与 superblock

上面结果显示,因为每个 block 占有 4K ,但是 superblock 其实就只有 1024bytes

因此在第一个 block 内 superblock 仅占有 1024-2047 ( 由 0 号起算的话),而 0-1023 就保留给 boot sector 来使用。

而后面的2048bytes 的空间保留

新京葡娱乐场网址 2

 

 

现在也明白了为什麽df命令这麽快了吧,它是读取每个分区inode为0的superblock里面的信息,

而superblock里面就保存了分区文件系统类型、大小、已使用大小、可用大小

新京葡娱乐场网址 3

 

 

 

 

我们可以使用tune2fs命令查看某一分区的块大小等信息

tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          4814e6f2-6550-4ac5-bf2d-33109fc53061
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65280
Block count:              261048
Reserved block count:     13052
Free blocks:              252525
Free inodes:              65269
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      63
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Flex block group size:    16
Filesystem created:       Thu Jun  2 12:23:23 2016
Last mount time:          Thu Jun  2 12:24:06 2016
Last write time:          Thu Jun  2 12:24:06 2016
Mount count:              1
Maximum mount count:      20
Last checked:             Thu Jun  2 12:23:23 2016
Check interval:           15552000 (6 months)
Next check after:         Tue Nov 29 12:23:23 2016
Lifetime writes:          32 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      fad5ad24-52ef-482c-a54b-367a5bb4f122
Journal backup:           inode blocks

 

通过上面的信息就可以知道superblock是在block 0还是block 1

那么上面的信息又是从哪里读取出来的

答案是:还是superblock

 

superblock如此重要,所以系统也对superblock做了一些保护措施

新京葡娱乐场网址,文件系统会有一些备用超级块,备用超级块一般创建于块 8193、16384 或 32768

ext类文件系统会把block分成一组一组来管理简称为块组,可以看到Blocks per group这一行,就是每个group都包含了32768个block

每个group都会有一个备用superblock,所以备用超级块一般创建于块 8193、16384 或 32768,根据格式化时的block size而定

tune2fs -l /dev/sda4 |grep group
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks gid: 0 (group root)

 

 

注意:非ext类文件系统是不能用tune2fs命令的,而且原理和内部格式跟ext类文件系统不相同!!

tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/sdb1
Couldn't find valid filesystem superblock.

 

 

参考资料:

EXT4是Linux kernel 自 2.6.28 开始正式支持的新的文件系统,目前已经广泛应用在新发行的LINUX版本中。移动终端方面的Android默认系统分区也已成为EXT4。随着LINUX系统的不断更新,相信EXT4将很快替代EXT3,成为下一代LINUX上的标准文件系统。
相比EXT3而言,EXT4最大的改动是文件系统的空间分配模式。默认情况下,EXT4不再使用EXT3的block mapping分配方式 ,而改为Extent方式分配。从专业的数据恢复理论看,基于block mapping的EXT3在数据删除后就很难恢复,如果基于Extent,可参考的信息就更少,如何有效的恢复EXT4误删除的数据,是个公认的技术难题。
近日,我公司经过不断地尝试和改进,终于完成了对EXT4数据误删除恢复的技术攻关,形成了一套完整的技术解决方案,并成功开发出了基于EXT4的专业数据恢复系统。
下面为北亚数据恢复中心对EXT4误删除数据的恢复方案简介。
1、关于EXT4的结构特征:
EXT4在总体结构上与EXT3相似,大的分配方向都是基于相同大小的块组,每个块组内分配固定数量的INODE,可能的超级块(或备份),及可能的块组描述表。
EXT4的INODE 结构做了重大改变,为增加新的信息,大小由EXT3的128字节增加到默认的256字节,同时块索引不再使用EXT3的12直接块 1个1次间接块 1个2次间接块 1个3次间接块的索引模式,而改为4个Extent片断流,每个片断流设定片断的起始块号及连续的块数量(有可能直接指向数据区,也有可能指向索引块区)。
2、EXT4删除数据的结构更改:
EXT4删除数据后,会依次释放文件系统bitmap空间位、更新目录结构、释放inode空间位。而INODE空间的释放不像WINDOWS NTFS或FAT一样保留数据的全部或部分索引,一个更彻底的操作是直接清除所有节点中的索引项。
清除了文件的存储索引,意味着即使可以得到文件的名称、日期等元信息,也无法直接知道文件原来存储在什么位置,而基于Extent的存储方式更紧凑,删除之后,很难保证可以很容易还原原先的存储索引。

 

块组是block group
block group包含备用super block,inode,block group description

INODE 结构做了重大改变,为增加新的信息,大小由EXT3的128字节增加到默认的256字节
Inode size:              256 byte

EXT4删除数据后,会依次释放文件系统bitmap空间位
Block bitmap at 259 ( 25, Inode bitmap at 260 ( 259)

 

以上内容针对于ext类文件系统,不对的地方欢迎拍砖

部分参考了鸟哥文章:

不经意的rm命令会让你很苦恼,因为Linux下命令删除是不走回收站的.Blinux这里介绍Linux EXT3文件系统的数据恢复方法.

  EXT3文件系统原理方面的文章很多,同时加上LINUX的开源性及EXT3本身的简洁性,通常了解EXT3文件系统并不是难事。作为误删除,我们需要了解文件的存储结构与删除所做的实际操作。

1.准备工作:首先你需要做的是,保存现场.如果有条件请直接卸下硬盘挂接到其他的电脑,这一招是最保险的,为了提高数据恢复的成功率我觉得很有必要.

  EXT3是典型的UNIX类文件系统,首先将整个分区按固定大小的BLOCK分组,再将若干固定数目的BLOCK分组为BLOCK GROUP。这个概念为了描述方便,我们先放一放。再说别的。

2.现在已经将需要恢复数据的硬盘挂接到其他的电脑(Linux系统)上,注意不用去挂载他,也不用双击这个盘符,如今Linux桌面做的很棒,一双击就挂载了.

  EXT3中的每个文件可以看成由参数+数据组成。比如一个a.tar,其文件包是数据,它的大小、日期、存储位置等。用来区别每个文件的唯一标识是这个文件的"标号",可以简单理解:一个EXT3文件系统里有N个文件,其中M号文件大小为XX,日期为XX,数据存储位置为XX,这样就可以通过存储位置得到其数据XXX。这里没有谈到名称,初步可以理解为EXT3的文件系统里没有名称。名称和目录树都是为了更人性化地解读文件系统的一个助记符。没有名称和目录树,EXT3也可以完好地存储文件(可以这样理解),但只能看到一大堆大小不同、只在标号、没有目录层的“散”文件。我们看如何在此基础上加入目录:首先我们将所有目录、文件统统看成文件。目录中可以保存其下文件(包括目录)的标号,以此类推。但只有标号,很难理解文件所代表的内容,所以可以给标号同时绑定一个人性化的名称,即文件名,使文件名与文件标号一一对应。新京葡娱乐场网址 4

3.现在请出我们的主角--ext3grep

安装这里就不多说了,如果存在依赖关系时可以考虑yum localinstall ,Blinux这里使用的版本是ext3grep-0.6.0-2mdv2008.0.

4.现在主角ext3grep该干活了

(1)fdisk -l 查出需要恢复数据的盘符,这里假设是/dev/sda7

(2)从该分区的根开始扫描,也就是第二个inode,显示出所有文件的信息.如果你知道误删除文件的文件名可以省略掉这一步.
#ext3grep /dev/sda7 --ls --inode 2

(3)还原数据了
从上一步我们可以得到恢复数据的文件名是china.txt.
ext3grep /dev/sda7 --restore-file china.txt
记住,还原的数据存放位置是在当前目录下RESTORED_FILES/目录内,也就是在pwd目录下生成一个名为RESTORED_FILES/的目录.

(4)想知道更多请访问:

扩展:如果误删除文件所在的分区是EXT4那该怎么办呢,
其实在恢复ext3文件系统数据进行分析的时候,考虑Linux下的数据恢复软件和Windows下的数据恢复软件,今天Blinux这里介绍的是Linux下ext3数据恢复软件ext3grep,其实Windows下支持ext3,ext4数据恢复的软件还是有的,他就是R-Linux .这里提一下就可以了.

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于新京葡娱乐场网址,转载请注明出处:分区里的inode号是0号和1号的block,ext3上误操作删