Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> linux文件系統中inode的相關概念

linux文件系統中inode的相關概念

日期:2017/2/7 14:36:50      編輯:Linux教程
 

一.inode size 定義
單位:Byte

inode table是data area的索引表。

Inode分為內存中的inode和文件系統中的inode,我們這裡說的是文件系統中的inode。

1. linux FS 可以簡單分成 inode table與data area兩部份。inode table上有許多的inode, 每個inode分別記錄一個檔案的屬性與這個檔案分布在哪些datablock上(也就是我們說的指針)。
inode兩個功能:記錄檔案屬性和指針

2. inode table中紅色區域即inode size,是128Byte,在liunx系統上通過命令我們可以看到,系統就是這麼定義的。
Inode size是指分配給一個inode來記錄文檔屬性的磁盤塊的大小。

dumpe2fs -h /dev/hda6 | grep nodeInode size:128
3. data ares中紫色的區域block size,就是我們一般概念上的磁盤塊。這塊區域是我們用來存放數據的地方。

4. 還有一個邏輯上的概念:FS中每分配2048 byte給data area, 就分配一個inode。但一個inode就並不一定就用掉2048 byte, 也不是說files allocation的最小單位是2048 byte, 它僅僅是代表filesystem中inode table/data area分配空間的比例是128/2048,也就是1/16。

mkfs.ext3 -i 2048 這條命令中的-i參數就是我們所說的邏輯概念,它的大小決定inode count的大小,redhat5默認-i最小為可設置為1024.

網上很多介紹關於inode的文章,把inode size的定義搞錯了,他們把-i參數這個值或block size解讀為inode size 所以很多文章令人費解。

5. inode參數是可以通過mkfs.ext3命令改變的:

mkfs.ext3 -i 2048 -b 8192 -f 1024 /dev/sdb2
-i 2048更改inode為每2KB創建一個
-b 8192設置block size的大小為8kB
-f 1024設置fragments的大小為1KB

mkfs.ext3 –N 2939495 /dev/sdb2

–N 2939495更改inode count。

二.更改一個分區inode參數的完整操作過程:

1. 卸載硬盤分區:

[root@localhost ~]# umount /dev/hda7
2. 調整inode參數

[root@localhost ~]# mkfs.ext3 -i 1024 -b 8192 /dev/hda7mke2fs 1.39 (29-May-2006)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)2048256 inodes, 512064 blocks25603 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=52525056063 block groups8240 blocks per group, 8240 fragments per group32512 inodes per groupSuperblock backups stored on blocks: 8240, 24720, 41200, 57680, 74160, 206000, 222480, 403760Writing inode tables: done Creating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 30 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
3.修改/etc/fstab
修改前

[root@localhost ~]# vi /etc/fstabLABEL=/ / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2devpts /dev/pts devpts gid=5,mode=620 0 0tmpfs /dev/shm tmpfs defaults 0 0LABEL=/opt /opt ext3 defaults 1 2proc /proc proc defaults 0 0sysfs /sys sysfs defaults 0 0LABEL=/usr /usr ext3 defaults 1 2LABEL=/var /var ext3 defaults 1 2LABEL=SWAP-hda8 swap swap defaults 0 0~
修改後:

[root@localhost ~]# vi /etc/fstab LABEL=/ / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2devpts /dev/pts devpts gid=5,mode=620 0 0tmpfs /dev/shm tmpfs defaults 0 0/dev/hda7 /opt ext3 defaults 1 2proc /proc proc defaults 0 0sysfs /sys sysfs defaults 0 0LABEL=/usr /usr ext3 defaults 1 2LABEL=/var /var ext3 defaults 1 2LABEL=SWAP-hda8 swap swap defaults 0 0
4.掛載分區

mount -a
5.完成後,參數-i 最小值是1024,這個值的大小決定inode count的大小,他們之間的對應關系是:

i=2048 Inode count:1025024
i=1024 Inode count:2048256

inode size的值在這是沒有變化的,這也可以證明我上面定義的inode size。
讓我們更加清晰的這幾個定義之間的關系。
Inode size
Block size
Inode conut

[root@localhost ~]# dumpe2fs -h /dev/hda7dumpe2fs 1.39 (29-May-2006)Filesystem volume name: <none>Last mounted on: <not available>Filesystem UUID: 440696ad-80e7-4810-8648-a9efda177ea9Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_superDefault mount options: (none)Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 2048256Block count: 1024128Reserved block count: 51206Free blocks: 873767Free inodes: 2048245First block: 0Block size: 2048Fragment size: 2048Reserved GDT blocks: 512Blocks per group: 8176Fragments per group: 8176Inodes per group: 16256Inode blocks per group: 1016Filesystem created: Fri Jul 11 18:10:33 2008Last mount time: Fri Jul 11 18:11:02 2008Last write time: Fri Jul 11 18:11:02 2008Mount count: 1Maximum mount count: 34Last checked: Fri Jul 11 18:10:33 2008Check interval: 15552000 (6 months)Next check after: Wed Jan 7 18:10:33 2009Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 128Journal inode: 8Default directory hash: teaDirectory Hash Seed: ad1b7c40-6978-49e9-82f6-2331c5cac122Journal backup: inode blocksJournal size: 32M
由於時間關系:關於mkfs.ext3 -i 2048 -b 8192 -f 1024 /dev/sdb2中這個-i參數的定義,我是根據對應關系推斷,給了它只是個邏輯概念的定義。

歡迎大蝦們有更有力的論據來解釋一下,或推翻我的觀點。

三.讀取一個樹狀目錄下的文件/etc/crontab 的流程

Copyright © Windows教程網 All Rights Reserved