日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

深入解析ext2文件系统之mke2fs

發布時間:2024/1/17 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入解析ext2文件系统之mke2fs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 上一遍博文的重點其實將ext2整體的組織框架,我們知道了ext2文件系統由塊組組成,每個塊組里面的組織形式。我們甚至直接把超級塊和組描述符里面的內容,用十六進制形式展現了出來。這篇博文主要講述如何mke2fs生成合適需要的ext2 文件系統,基本就是參數選擇的問題。 ? ? ? ?mke2fs 常用的幾個參數有: ? ? ? 1) ? ?-b ? ? block-size . ? ? ??塊大小是ext2文件系統比較重要的一個參數,目前只支持1024、2048和4096。上篇博文講到了其中的一點,就是塊大小決定了每個塊組最多管理多少個block塊。因為塊組中用1個block作為位圖來之時該塊組的某一塊是否空閑。 ? ? ? ? 1024----最多有8K個塊----------塊組大小為8M字節 ? (1024字節/block*8K塊) ? ? ? 2048----最多有16K個塊---------塊組大小為32M字節 ? ? ? 4096----最多有32K個快----------塊組大小為128M字節 ? ? ? 說block-size重要,不光是因為他決定了塊組的一些屬性,她還決定了一個ext2文件的屬性(最大長度)。我們知道Inode中有個長度為15的數組指向文件的數據存儲的塊。前12個為直接指針,指向了數據所在的block塊。第13 個數組元素是1級間接指針,第14個數組元素為二級間接指針,第15個元素為三級間接指針,通過間接指針,ext2支持的文件最大長度獲得了極大的擴展。 ? ? 文件的組織形式不是這篇博文的重點,我們掠過不細講
表 1. 各種數據塊對應的文件尋址范圍
塊大小直接尋址間接尋址二次間接尋址三次間接尋址
102412KB268KB64.26MB16.06GB
204824KB1.02MB513.02MB265.5GB
409648KB4.04MB4GB~ 4TB
?? 默認情況下為1024。blocksize決定了,總的塊數也就決定了(在磁盤空間一定的情況下。比如我們空間就是500MB)
  • linux-tods:/mnt/bean # mke2fs?/dev/loop0
  • mke2fs 1.41.9?(22-Aug-2009)
  • Filesystem label=
  • OS type:?Linux
  • Block size=1024 (log=0)
  • Fragment size=1024?(log=0)
  • 128016 inodes,?512000 blocks
  • 25600 blocks?(5.00%)?reserved?for?the super user
  • First data block=1
  • Maximum filesystem blocks=67633152
  • 63 block groups
  • 8192 blocks per group,?8192 fragments per group
  • 2032 inodes per group
  • Superblock backups stored?on?blocks:?
  • ????8193,?24577,?40961,?57345,?73729,?204801,?221185,?401409
  • Writing inode tables:?done?
  • Writing superblocks?and?filesystem accounting information:?done
  • This filesystem will be automatically checked every 26 mounts?or
  • 180 days,?whichever comes first.?Use tune2fs?-c?or?-i?to?override.
  • ? 或者 linux-tods:/mnt/bean # tune2fs -l /dev/loop0 tune2fs 1.41.9 (22-Aug-2009) Filesystem volume name: ? <none> Last mounted on: ? ? ? ? ?<not available> Filesystem UUID: ? ? ? ? ?8feecddf-756d-427f-9018-7993119aced5 Filesystem magic number: ?0xEF53 Filesystem revision #: ? ?1 (dynamic) Filesystem features: ? ? ?ext_attr resize_inode dir_index filetype sparse_super Filesystem flags: ? ? ? ? signed_directory_hash? Default mount options: ? ?(none) Filesystem state: ? ? ? ? clean Errors behavior: ? ? ? ? ?Continue Filesystem OS type: ? ? ? Linux Inode count: ? ? ? ? ? ? ?128016 Block count: ? ? ? ? ? ? ?512000 Reserved block count: ? ? 25600 Free blocks: ? ? ? ? ? ? ?493526 Free inodes: ? ? ? ? ? ? ?128005 First block: ? ? ? ? ? ? ?1 Block size: ? ? ? ? ? ? ? 1024 Fragment size: ? ? ? ? ? ?1024 ? ? ?用戶可以修改成4096,這樣的話,總塊數一會跟著變化從512000變成了128000.
  • linux-tods:/mnt/bean # mke2fs?-b 4096?/dev/loop0
  • mke2fs 1.41.9?(22-Aug-2009)
  • Filesystem label=
  • OS type:?Linux
  • Block size=4096 (log=2)
  • Fragment size=4096?(log=2)
  • 128000 inodes,?128000 blocks
  • 6400 blocks?(5.00%)?reserved?for?the super user
  • First data block=0
  • Maximum filesystem blocks=134217728
  • 4 block groups
  • 32768 blocks per group,?32768 fragments per group
  • 32000 inodes per group
  • Superblock backups stored?on?blocks:?
  • ????32768,?98304
  • Writing inode tables:?done?
  • Writing superblocks?and?filesystem accounting information:?done
  • This filesystem will be automatically checked every 39 mounts?or
  • 180 days,?whichever comes first.?Use tune2fs?-c?or?-i?to?override.
  • --------------------------------------------------------------------------------------------------- 2) ?-m reserved-blocks-percentage ?? ? ? 為超級用戶保留的塊的比例。為了防止所有的塊都被用光,某些情況下啟動不起來,必須要為超級用戶保留一定比例的塊,這個值默認是5%。下面是上篇博文中默認參數中的保留塊。 ? ? ? ? ? ? ?block總數*%5 = 保留塊的塊數。 ? ? ? ? ? ?Block count:?512000 ? ? ? ? ? ?Reserved block count:?25600 ? ? ??下面看下我將它參數修改成10%:可以看到,Reserved block count變成了51200 。 一般來說這個參數不需要改變。
  • linux-tods:/mnt/bean # mke2fs -m 10 /dev/loop0
  • mke2fs 1.41.9 (22-Aug-2009)
  • Filesystem label=
  • OS type: Linux
  • Block size=1024 (log=0)
  • Fragment size=1024 (log=0)
  • 128016 inodes, 512000 blocks
  • 51200 blocks (10.00%) reserved for the super user
  • First data block=1
  • Maximum filesystem blocks=67633152
  • 63 block groups
  • 8192 blocks per group, 8192 fragments per group
  • 2032 inodes per group
  • Superblock backups stored on blocks:?
  • ????8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
  • ?
  • Writing inode tables: done?
  • Writing superblocks and filesystem accounting information: done
  • ?
  • This filesystem will be automatically checked every 23 mounts or
  • 180 days, whichever comes first. Use tune2fs -c or -i to override.
  • ------------------------------------------------------------------------------------------------------- ? ??? ?3 ? ?-i bytes-per-inode ? ? ??? ? ? ?這個參數是我認為是比較重要的一個參數。這個參數乍一看看不懂是干嘛的,深入理解linux內核講到mke2fs的時候,說缺省選項是每8192個字節的組分配一個inode。第一次看,沒看懂啥意思。畢竟不如blocksize這么通俗易懂。后來我才明白了。(另外,這個參數ULK是錯的,我測試了,我mke2fs默認為4096字節每inode) ? ? ? 這個參數的含義是多少個字節分配一個inode。這個參數反映的是,我們對儲存在我們文件系統上的每個文件大小的期許。換句話說,我們期待,每個文件都是4096個字節左右,每個文件需要一個inode。所以我們一共需要500M/4096=12800個inode。 ? ? ? 舉例說明,如果我打算在我這個ext2存儲的文件都很小,比如說大多數文件都小于1K。那么如果這個-i的值為8192的話,就會出現下面的情況:總共有512000個塊卻只有64008個inode。 如果你還沒體會到我的意思,那么看Group 0 ,1000個左右的free inode,但是有近8000個free block 。根據我的設定,我的文件大多數比較小,那么,當我的文件個數達到1000個時 free inode先用完了,Group 0 還有近7000個塊空閑。 也就是說選錯了 -i參數使我的inode先用完了。那么就算有大把的free block,你也無法創建文件了。 ? ? ? OK,這個參數的取值范圍是 1024~65536 。設定原則為:考慮下你的大多數文件有多大,就設為多大。有意思的是,你不設成1024的整數倍也是可以的。

    點擊(此處)折疊或打開

  • linux-tods:/mnt/bean # mke2fs -i 8192 /dev/loop0
  • mke2fs 1.41.9 (22-Aug-2009)
  • Filesystem label=
  • OS type: Linux
  • Block size=1024 (log=0)
  • Fragment size=1024 (log=0)
  • 64008 inodes, 512000 blocks
  • 25600 blocks (5.00%) reserved for the super user
  • First data block=1
  • Maximum filesystem blocks=67633152
  • 63 block groups
  • ......
  • linux-tods:/mnt/bean # dumpe2fs /dev/loop0
  • Group 0: (Blocks 1-8192)
  • Primary superblock at 1, Group descriptors at 2-3
  • Reserved GDT blocks at 4-259
  • Block bitmap at 260 (+259), Inode bitmap at 261 (+260)
  • Inode table at 262-388 (+261)
  • 7790 free blocks, 1005 free inodes,?2 directories
  • Free blocks: 403-8192
  • Free inodes: 12-1016
  • Group 1: (Blocks 8193-16384)
  • Backup superblock at 8193, Group descriptors at 8194-8195
  • Reserved GDT blocks at 8196-8451
  • Block bitmap at 8452 (+259), Inode bitmap at 8453 (+260)
  • Inode table at 8454-8580 (+261)
  • 7804 free blocks, 1016 free inodes, 0 directories
  • Free blocks: 8581-16384
  • Free inodes: 1017-2032
  • ? ? ? ?設成1524居然也可以,呵呵
  • linux-tods:/mnt/bean # mke2fs?-i 1524?/dev/loop0
  • mke2fs 1.41.9?(22-Aug-2009)
  • Filesystem label=
  • OS type:?Linux
  • Block size=1024?(log=0)
  • Fragment size=1024?(log=0)
  • 344232 inodes, 512000 blocks
  • 25600 blocks?(5.00%)?reserved?for?the super user
  • First data block=1
  • Maximum filesystem blocks=67633152
  • 63 block groups
  • 8192 blocks per group,?8192 fragments per group
  • 5464 inodes per group
  • Superblock backups stored?on?blocks:
  • ? ?? 最后一個PROBLEM,我想了很久也沒想明白,請路過的高手如果知道答案,不吝賜教: ? ? ? 下面是mke2fs的默認選項 ,發現Inode count總數多出來了16個,默認-i為4096字節每inode,本來應該是:500MB/4096B = 128000,可是dumpefs的結果為128016。多出來的16個inode我是百思不得其解。昨天看了部分e2fsprogs的代碼,也沒看出來。
  • Inode count:?128016
  • Block count:?512000
  • Reserved block count:?25600
  • Free blocks:?493526
  • Free inodes:?128005
  • First block:?1
  • Block size:?1024
  • 其他的參數也可指定,但是我覺得沒多少必要,比如說inode size,你可以指定但是我覺128字節就挺好,既不浪費,而且也比較適合cache line的大小,你非要設成256有點浪費空間。再比如block per group,前面根據blocksize可以算出最大值,比如1024的就能支持最大8192個block per group, 你非要設定成4096 blocks per group ,其實也沒多大必要。 ? 參考文獻 1 ULK 2 Linux man page 3 e2fsprogs 4如何恢復 Linux 上刪除的文件,第 1 部分

    ?

    總結

    以上是生活随笔為你收集整理的深入解析ext2文件系统之mke2fs的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。