仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4347|回复: 19
打印 上一主题 下一主题

[其他Linux] Linux制作之linux文件体系―inode及相干观点仓酷云

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:38:51 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本。
一.inodesize界说
单元:Byte


<br>inodetablesample

inodetable是dataarea的索引表。
Inode分为内存中的inode和文件体系中的inode,我们这里说的是文件体系中的inode。
1.linuxFS能够复杂分红inodetable与dataarea两部分。inodetable上有很多的inode,每一个inode分离纪录一个档案的属性与这个档案散布在哪些datablock上(也就是我们说的指针)。
inode两个功效:纪录档案属性和指针
2.inodetable中白色地区即inodesize,是128Byte,在liunx体系上经由过程命令我们能够看到,体系就是这么界说的。
Inodesize是指分派给一个inode来纪录文档属性的磁盘块的巨细。
  1. dumpe2fs-h/dev/hda6|grepnodeInodesize:128
复制代码
3.dataares中紫色的地区blocksize,就是我们一样平常观点上的磁盘块。这块地区是我们用来寄存数据的中央。
4.另有一个逻辑上的观点:FS中每分派2048byte给dataarea,就分派一个inode。但一个inode就其实不必定就用失落2048byte,也不是说filesallocation的最小单元是2048byte,它仅仅是代表filesystem中inodetable/dataarea分派空间的比例是128/2048,也就是1/16。
mkfs.ext3-i2048这条命令中的-i参数就是我们所说的逻辑观点,它的巨细决意inodecount的巨细,redhat5默许-i最小为可设置为1024.
网上良多先容关于inode的文章,把inodesize的界说弄错了,他们把-i参数这个值或blocksize解读为inodesize以是良多文章使人隐晦。
5.inode参数是能够经由过程mkfs.ext3命令改动的:
  1. mkfs.ext3-i2048-b8192-f1024/dev/sdb2
复制代码
-i2048变动inode为每2KB创立一个
-b8192设置blocksize的巨细为8kB
-f1024设置fragments的巨细为1KB
  1. mkfs.ext3&ndash;N2939495/dev/sdb2
复制代码

&ndash;N2939495
变动inodecount。
二.变动一个分区inode参数的完全操纵历程:
1.卸载硬盘分区:
  1. [root@localhost~]#umount/dev/hda7
复制代码
2.调剂inode参数
  1. [root@localhost~]#mkfs.ext3-i1024-b8192/dev/hda7mke2fs1.39(29-May-2006)Filesystemlabel=OStype:LinuxBlocksize=4096(log=2)Fragmentsize=4096(log=2)2048256inodes,512064blocks25603blocks(5.00%)reservedforthesuperuserFirstdatablock=0Maximumfilesystemblocks=52525056063blockgroups8240blockspergroup,8240fragmentspergroup32512inodespergroupSuperblockbackupsstoredonblocks:8240,24720,41200,57680,74160,206000,222480,403760Writinginodetables:doneCreatingjournal(8192blocks):doneWritingsuperblocksandfilesystemaccountinginformation:doneThisfilesystemwillbeautomaticallycheckedevery30mountsor180days,whichevercomesfirst.Usetune2fs-cor-itooverride.
复制代码
3.修正/etc/fstab
修正前
  1. [root@localhost~]#vi/etc/fstabLABEL=//ext3defaults11LABEL=/boot/bootext3defaults12devpts/dev/ptsdevptsgid=5,mode=62000tmpfs/dev/shmtmpfsdefaults00LABEL=/opt/optext3defaults12proc/procprocdefaults00sysfs/syssysfsdefaults00LABEL=/usr/usrext3defaults12LABEL=/var/varext3defaults12LABEL=SWAP-hda8swapswapdefaults00~
复制代码
修正后:
  1. [root@localhost~]#vi/etc/fstabLABEL=//ext3defaults11LABEL=/boot/bootext3defaults12devpts/dev/ptsdevptsgid=5,mode=62000tmpfs/dev/shmtmpfsdefaults00/dev/hda7/optext3defaults12proc/procprocdefaults00sysfs/syssysfsdefaults00LABEL=/usr/usrext3defaults12LABEL=/var/varext3defaults12LABEL=SWAP-hda8swapswapdefaults00
复制代码
4.挂载分区
  1. mount-a
复制代码
5.完成后,参数-i最小值是1024,这个值的巨细决意inodecount的巨细,他们之间的对应干系是:
i=2048Inodecount:1025024
i=1024Inodecount:2048256
inodesize的值在这是没有变更的,这也能够证实我下面界说的inodesize。
让我们加倍明晰的这几个界说之间的干系。
Inodesize
Blocksize
Inodeconut
  1. [root@localhost~]#dumpe2fs-h/dev/hda7dumpe2fs1.39(29-May-2006)Filesystemvolumename:<none>Lastmountedon:<notavailable>FilesystemUUID:440696ad-80e7-4810-8648-a9efda177ea9Filesystemmagicnumber:0xEF53Filesystemrevision#:1(dynamic)Filesystemfeatures:has_journalresize_inodedir_indexfiletypeneeds_recoverysparse_superDefaultmountoptions:(none)Filesystemstate:cleanErrorsbehavior:ContinueFilesystemOStype:LinuxInodecount:2048256Blockcount:1024128Reservedblockcount:51206Freeblocks:873767Freeinodes:2048245Firstblock:0Blocksize:2048Fragmentsize:2048ReservedGDTblocks:512Blockspergroup:8176Fragmentspergroup:8176Inodespergroup:16256Inodeblockspergroup:1016Filesystemcreated:FriJul1118:10:332008Lastmounttime:FriJul1118:11:022008Lastwritetime:FriJul1118:11:022008Mountcount:1Maximummountcount:34Lastchecked:FriJul1118:10:332008Checkinterval:15552000(6months)Nextcheckafter:WedJan718:10:332009Reservedblocksuid:0(userroot)Reservedblocksgid:0(grouproot)Firstinode:11Inodesize:128Journalinode:8Defaultdirectoryhash:teaDirectoryHashSeed:ad1b7c40-6978-49e9-82f6-2331c5cac122Journalbackup:inodeblocksJournalsize:32M
复制代码
因为工夫干系:关于mkfs.ext3-i2048-b8192-f1024/dev/sdb2中这个-i参数的界说,我是依据对应干系揣度,给了它只是个逻辑观点的界说。
接待年夜虾们有更无力的论据来注释一下,或颠覆我的概念。
三.读取一个树状目次下的文件/etc/crontab的流程
1.操纵体系依据根目次(/)的相干材料可获得/etc这个目次地点的inode,并前去读取/etc这个目次的一切相干属性;
2.依据/etc的inode的材料,能够获得/etc这个目次底下一切文件的干系数据是安排在哪个Block傍边,并前去该block读取文件的干系性容;
3.由上个步骤的Block傍边,能够晓得crontab这个文件的inode地点地,并前去该inode;
4.由上个步骤的inode傍边,能够获得crontab这个文件的一切属性,而且可前去由inode所指向的Block地区,顺遂的获得crontab的文件内容

四.硬链接

HardLink只是在某个目次下新增一个该档案的干系数据罢了!
1.举个例子来讲,我的/home/vbird/crontab为一个hardlink的档案,他保持到/etc/crontab这个档案,也就是说,实在/home/vbird/crontab与/etc/crontab是统一个档案,只是有两个目次(/etc与/home/vbird)纪录了crontab这个档案的干系数据而已!也就是说,我由/etc的Block所纪录的干系数据可晓得crontab的inode安排在A处,而由/home/vbird这个目次下的干系数据,contab一样也指到A处的inode!以是,crontab这个档案的inode与block都没有改动,有的只是有两个目次纪录了干系数据.
2.利用hardlink设定保持文件时,磁盘的空间与inode的数量都不会改动!由下面的申明来看,我们能够晓得,hardlink只是在某个目次下的block多写进一个干系数据,以是固然不会用失落inode与磁盘空间。
3.当我们修正个中一个文件的内容时,互为硬链接的文件的内容也会随着变更。假如我们删除互为硬链接干系的某个文件时,别的的文件其实不受影响.
4.因为hardlink是在统一个partition下面举行数据干系的创建,以是hardlink是无限制的:
a.不克不及跨Filesystem.
b.不克不及link目次。

五.软链接

1.软链接也叫标记链接,他和硬链接有所分歧,软链接文件只是其源文件的一个标志。当我们删除源文件后,链接文件不克不及自力存在,固然仍保存文件名,
但我们却不克不及检察软链接文件的内容了.
2.SymbolicLink与Windows的快速体例能够给他划上等号,由Symboliclink所创建的档案为一个自力的新的档案,以是会占用失落inode与block
3.以是可用利用软链接办理某个分区inodeconut不敷的成绩(软链接到另外一个inodecount充足多的分区)
本文来自:http://it.dianping.com/inode-related-conceptions-in-linux-file-system.htm

学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。
再现理想 该用户已被删除
沙发
 楼主| 发表于 2015-5-6 21:35:27 | 显示全部楼层
Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 21:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表