[OS][FS]查看ext3文件系统分区的superblock

简介: 本文将介绍怎样读取一个分区的superblock:1. 首先我们查看一下在磁盘上有哪些分区,通过fdisk -l这里有三个分区,我们下面查看/dev/sda3(这是一个device file)2. 从/dev/sda3拷贝1024B-2048B(这就是superblock的位置)到一个叫superblock的文件这里我们用到了dd这个工具,它在对磁盘进行这样读写操作时非常有用,具体请见man。

本文将介绍怎样读取一个分区的superblock:

1. 首先我们查看一下在磁盘上有哪些分区,通过fdisk -l

image

这里有三个分区,我们下面查看/dev/sda3(这是一个device file)

2. 从/dev/sda3拷贝1024B-2048B(这就是superblock的位置)到一个叫superblock的文件

image

这里我们用到了dd这个工具,它在对磁盘进行这样读写操作时非常有用,具体请见man。

bs=1k 每次读写的块大小

skip=1 偏移多少块开始读(这里块为bs=1k,偏移1,表示从1k开始读)

count=1 读的大小(这里表示读1k)

if,of 分别表示从哪里读和写到哪里去。

这里你也许会问为什么要从1k处开始读,并且就读1k的大小呢?下图就是一个分区的物理存储结构:

Partition_Structure

从图中我们可以看到第一个Block的第一个1k处是存储的Boot Block,而superblock是从1k开始,大小为1k。

 

3. 查看superblock文件

用vim打开我们刚才从/dev/sda3复制出来的superblock文件,由于是二进制文件,我们在用vim打开之后要用:%!xxd转换成16进制形式。

image

到这里其实我们已经看到了在磁盘上superblock的形式了。下面我想验证一个这个superblock的正确性。

首先,通过查看/usr/include/linux/ext3_fs.h头文件中的struct ext3_super_block:

image

我们可以知道在superblock的头上记录着inodes的个数和block的个数,它们分别是32位。

那从superblock中可以看出:

inodes_count: 0000 3a04(注意:这里是小数端) –> 043a0000 = 70909952

blocks_count: fdc4 3904 –> 0439c4fd = 70894845

那么该如何验证这个结果呢?linux为我们提供了dumpe2fs这个工具:

dumpe2fs /dev/sda3 |less
我们可以看到如下的输出(一部分)

 

 

 

 

 

 

image

到这里,有关如果看superblock的方法,这里就全部都讲完了,同样我们可以用dd查看磁盘上任意的部分。

目录
相关文章
|
3月前
|
Linux 固态存储
linux ext4-fs error,[求助]EXT4-fs error (device sdb4) ext4_find_entry
linux ext4-fs error,[求助]EXT4-fs error (device sdb4) ext4_find_entry
linux ext4-fs error,[求助]EXT4-fs error (device sdb4) ext4_find_entry
|
3月前
|
存储 Linux Android开发
Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
189 0
|
3月前
|
缓存 自然语言处理 Linux
xv6(12) 文件系统:Inode&Directory&Path
文件系统:Inode&Directory&Path
62 0
7.1.5 EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能
7.1.5 EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能
83 0
|
存储 Linux 索引
Ext 文件系统
Ext 文件系统
121 0
Ext 文件系统
|
Linux 存储
深入解析ext2文件系统之mke2fs
上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式。我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来。这篇博文主要讲述如何mke2fs生成合适需要的ext2 文件系统,基本就是参数选择的问题。
1039 0