[OS][FS]查看ext3文件系统分区的superblock
本文將介紹怎樣讀取一個(gè)分區(qū)的superblock:
1. 首先我們查看一下在磁盤上有哪些分區(qū),通過fdisk -l
這里有三個(gè)分區(qū),我們下面查看/dev/sda3(這是一個(gè)device file)
2. 從/dev/sda3拷貝1024B-2048B(這就是superblock的位置)到一個(gè)叫superblock的文件
這里我們用到了dd這個(gè)工具,它在對(duì)磁盤進(jìn)行這樣讀寫操作時(shí)非常有用,具體請(qǐng)見man。
bs=1k 每次讀寫的塊大小
skip=1 偏移多少塊開始讀(這里塊為bs=1k,偏移1,表示從1k開始讀)
count=1 讀的大小(這里表示讀1k)
if,of 分別表示從哪里讀和寫到哪里去。
這里你也許會(huì)問為什么要從1k處開始讀,并且就讀1k的大小呢?下圖就是一個(gè)分區(qū)的物理存儲(chǔ)結(jié)構(gòu):
從圖中我們可以看到第一個(gè)Block的第一個(gè)1k處是存儲(chǔ)的Boot Block,而superblock是從1k開始,大小為1k。
?
3. 查看superblock文件
用vim打開我們剛才從/dev/sda3復(fù)制出來的superblock文件,由于是二進(jìn)制文件,我們?cè)谟胿im打開之后要用:%!xxd轉(zhuǎn)換成16進(jìn)制形式。
到這里其實(shí)我們已經(jīng)看到了在磁盤上superblock的形式了。下面我想驗(yàn)證一個(gè)這個(gè)superblock的正確性。
首先,通過查看/usr/include/linux/ext3_fs.h頭文件中的struct ext3_super_block:
我們可以知道在superblock的頭上記錄著inodes的個(gè)數(shù)和block的個(gè)數(shù),它們分別是32位。
那從superblock中可以看出:
inodes_count: 0000 3a04(注意:這里是小數(shù)端) –> 043a0000 = 70909952
blocks_count: fdc4 3904 –> 0439c4fd = 70894845
那么該如何驗(yàn)證這個(gè)結(jié)果呢?linux為我們提供了dumpe2fs這個(gè)工具:
dumpe2fs /dev/sda3 |less 我們可以看到如下的輸出(一部分)?
?
?
?
?
?
到這里,有關(guān)如果看superblock的方法,這里就全部都講完了,同樣我們可以用dd查看磁盤上任意的部分。
總結(jié)
以上是生活随笔為你收集整理的[OS][FS]查看ext3文件系统分区的superblock的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS自动化打包之重签名导出不同证书ip
- 下一篇: Linux共享内存(二)