亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2391 | 回復: 4
打印 上一主題 下一主題

[文件系統(tǒng)] 關于ext2文件系統(tǒng) [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-10-10 20:32 |只看該作者 |倒序瀏覽
大家好:
       最近看了看文件系統(tǒng)的相關知識,發(fā)現(xiàn)一些不一致的信息。比如http://linux.alai.net/viewblog.php?id=20706在這篇文章中說:每個塊組重復保存著一些有關整個文件系統(tǒng)的關鍵信息,以及真正的文件和目錄的數(shù)據(jù)塊。而參考鳥哥上講的ext2文件系統(tǒng)上面所畫的圖也是反映了每個block group 中都有superblock的記錄。但是我在參考源碼時,看到的ext2_group_desc結構體定義如下:
  1. 138 struct ext2_group_desc
  2. 139 {
  3. 140     __u32   bg_block_bitmap;        /* Blocks bitmap block */
  4. 141     __u32   bg_inode_bitmap;        /* Inodes bitmap block */                                                                     
  5. 142     __u32   bg_inode_table;     /* Inodes table block */
  6. 143     __u16   bg_free_blocks_count;   /* Free blocks count */
  7. 144     __u16   bg_free_inodes_count;   /* Free inodes count */
  8. 145     __u16   bg_used_dirs_count; /* Directories count */
  9. 146     __u16   bg_flags;
  10. 147     __u32   bg_reserved[3];
  11. 148 };
復制代碼
里面并沒有關于superblock的記錄,而http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/這篇文章中也沒有說明沒事不是每個block group中都會記錄superblock 等信息。求解......

還有個問題,大家對inode table 這個東西的認識是什么?怎么我看了幾篇文章之后感覺inode table 就是inode節(jié)點啊....求大神指教。

論壇徽章:
0
2 [報告]
發(fā)表于 2012-10-13 12:32 |只看該作者
正好前些天也把EXT2文件系統(tǒng)看完了,大神談不上,不過可以嘗試回答你的問題,ext2_group_desc是塊組描述符,每個sb中都包含了若干個塊組描述符,所以每個sb中都包含有塊組描述符的信息,具體請看:
super_block-》ext2_sb-》s_group_desc,其中s_group_desc就是存放在磁盤前幾個block中的塊組描述符數(shù)組,所以通過super block可以找到塊組,但是從塊組描述符中確實找不到super block的信息,而且也沒有這個必要吧。

第二個問題,我以下面的例子來回答,
gdp = (struct ext2_group_desc *) bh->b_data;//找到了inode對應的塊組描述符保存在磁盤上的block的buffer,
        /*
         * Figure out the offset within the block group inode table
         */
        offset = ((inode->i_ino - 1) % EXT2_INODES_PER_GROUP(inode->i_sb)) *EXT2_INODE_SIZE(inode->i_sb); //計算該inode在塊組內的offset(單位byte)。
        block = le32_to_cpu(gdp[desc].bg_inode_table) +(offset >> EXT2_BLOCK_SIZE_BITS(inode->i_sb)); //計算該inode所在塊組中的block位置
        if (!(bh = bread (inode->i_dev, block, inode->i_sb->s_blocksize))) {              //讀出該block
                ext2_error (inode->i_sb, "ext2_write_inode",
                            "unable to read inode block - "
                            "inode=%lu, block=%lu", inode->i_ino, block);
                return -EIO;
        }
        offset &= EXT2_BLOCK_SIZE(inode->i_sb) - 1;  //計算出該inode在一個block內的offset。
        raw_inode = (struct ext2_inode *) (bh->b_data + offset);//讀出該inode在磁盤上的對應物 raw_inode。
從上面的流程,應該可以看出bg_inode_table的作用吧,就是在塊組中用來查找raw inode的,bg_inode_table本身的含義是塊組中第一個inode所對應的block位置。
也許有些地方用詞不是太準確,請見諒。

論壇徽章:
0
3 [報告]
發(fā)表于 2012-10-14 11:30 |只看該作者
回復 2# ljzbq123
很感謝你的回復。
在后面的學習中關于第一個問題我看到了一些解釋是這樣的:因為super_block記錄了關于文件系統(tǒng)的特別重要的信息,所以會被復制幾分分別放在每個block_group前面,所以就有了如下的結構示意圖


雖然在struct ext2_group_desc中沒有super_block的相關記錄,但是在邏輯結構上還是存在的,而后面?zhèn)浞莸膕uper_block可以根據(jù)block_group的大小找到,所以沒有必要記錄下來它的位置。

關于第二個問題,inode_tabel是指所有inode聚集在一起形成的表,而不是存在一個確定的表來記錄各個inode的位置。

個人意見,歡迎討論......再次感謝你的精彩回復.....

論壇徽章:
0
4 [報告]
發(fā)表于 2012-10-14 17:04 |只看該作者
inode_table. 是在建立文件系統(tǒng)的時候就建立好了.  所以一個文件系統(tǒng)能夠存儲多少個文件, 這個數(shù)值已經(jīng)決定了. 所有的inode都存儲在inode_table 中.

http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 這個鏈接中, 對 inode 做了一個比較詳細的解釋.

論壇徽章:
0
5 [報告]
發(fā)表于 2012-10-15 12:14 |只看該作者
回復 4# hk2305621


    非常感謝....
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP