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