免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: llm308
打印 上一主题 下一主题

关于索引结点中nbpi的疑问 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-06-26 16:41 |只看该作者

关于索引结点中nbpi的疑问

我也有些不理解,建fs时可以指定nbpi这个参数,是不是这个参数只是用来确定这个fs里inode的数量?但有人说nbpi是指一个inode可以控制的数据块的大小,我知道nbpi的值可以是512,1024,2048,4096,192,16384,32768,65536,131072。但是通过一个inode是可以寻址大到64G大小的文件啊!那么nbpi是一个inode可以控制的最小的数据块大小吗?

论坛徽章:
0
12 [报告]
发表于 2004-06-26 17:41 |只看该作者

关于索引结点中nbpi的疑问

[quote]原帖由 \"llm308\"]谢谢大家的回复,可是我还是没有搞明白,既然inode的大小是128个字节了,那nbpi是干什么的呢?书上说是每个inode拥有的字节数,可是inode的大小不是已经定了吗?128个字节啊[/quote 发表:\n\r\n\r\n一个inode就是128B大小,但一个inode能代表多大的data area空间不同,是在创建文件系统时确定的,就是nbpi, 如果一个文件系统中共有128k inode空间,则可以最多有1024个inode, 而实际的文件系统最大则根据nbpi的大小,可能是4M (4k nbpi),.... 128k (131072 nbpi)\r\n\r\n所以,文件系统最大的空间大小和两个参数有关,inode number和nbpi\r\nnbpi是选定的,那么inode number是多少?2^24=16M\r\n\r\n这样,一旦nbpi选定,文件系统的最大范围也就定了,是nbpi*16M\r\n\r\n另外为了索引一个文件,最少要用掉一个inode,但如果文件大于一个nbpi,就要至少用掉2个,以此类推。如果文件很大,inode使用很有效率,但是如果文件比较小, 一个文件至少占用一个inode,如果一大堆小文件,则占用了很多inode,结果空间没占多少,文件系统却没有inode了。\r\n\r\n可能你会疑惑,16M的inode还不够用?因为这是最大值,而真正文件系统的可用inode数可没有那么大,它是和allocation group配合的。如果选了8M allocation group,则每次文件系统扩大,以8M为单位,假设nbpi为4k,则每个allocation group 可以扩出来8M/4k=2k 个inode, 最多才2000个文件!假设文件系统为64M,则有64M/8M=8个allocation group, 只有8*2048=1万六千个inode, 如果每个文件只有那么一大点,比如几个字节,则空间可能只占了几十k, 一万多个文件就把文件系统的inode占光了。。\r\n\r\n说得够清楚了吧?\r\n\r\n\r\n以上都是32bit aix的实现,64bit的aix 中,都有相应的扩大

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2004-06-26 20:46 |只看该作者

关于索引结点中nbpi的疑问

[quote]原帖由 \"llm308\"]既然inode中已经存了实际的物理地址,那nbpi指定的data area还有什么用呢?好多的疑问,想了好久也没想通 [/quote 发表:\n\r\norain老大写得已经很全了。我再只对这个问题多说一句:\r\n有的时候df -k时,你看到%iused 接近100% 而%used 可能连50%都不到,这就说明了你的文件系统中有大量的小文件把inode给用光了。如何解决这样的空间浪费的问题呢?——把nbpi改小。——我想这应该是设定nbpi大小的一个具体应用吧。

论坛徽章:
0
14 [报告]
发表于 2004-06-28 08:57 |只看该作者

关于索引结点中nbpi的疑问

谢谢orian,beginner-bj  的回复,我自己再好好想想。再次感谢!

论坛徽章:
0
15 [报告]
发表于 2004-06-29 12:31 |只看该作者

关于索引结点中nbpi的疑问

orain 老大说:\"但如果文件大于一个nbpi,就要至少用掉2个,以此类推。\"但不是一个inode可以寻址2g,大文件fs里可以寻址64g吗?那一个800M的文件在一个4g的fs、nbpi和alloc group参数缺省时是怎样存储的呢?举例讲讲吧,能让我们这些初学者更好的理解存储

论坛徽章:
0
16 [报告]
发表于 2004-06-30 09:56 |只看该作者

关于索引结点中nbpi的疑问

我说的不确切,但您也好好想想如果让你做,你会怎么做好么?另外建议把大学里什么操作系统原理,数据结构什么的再拿出来看看。\r\n\r\n1. 文件大于nbpi, 就要占2个inode的索引项去索引文件所在的磁盘位置。inode里放的就是房间号,一个inode里可以放多个房间号(但有限的几个)。你知道你gf的住址是8,9号,占了两间房,但房子的大小不知道,大小是nbpi。如果她要过于fat, 要占100间房,就得留出100个inode的索引项告诉你她的各部位都存放在那一间房子里。\r\n\r\n2. inode本身的结构是个树(看数据结构去),在jfs2里改成了B+ tree\r\n\r\n3. 目录里放的是文件信息和该文件第一个inode所在位置。\r\n\r\n4. 由第一个inode的位置里面的数据(inode结构),可以找到下几个inode的位置。\r\n\r\n5. 所有的inode都找到了,也就找到了所有的磁盘分配位置。\r\n\r\n6. inode一部分放的是磁盘索引项(直接索引),而最后一部份是二次索引,二次索引就是如何找其他inode。也就是说这个地方所指的磁盘空间不是存放的文件数据,而是inode.\r\n\r\n7. 如果二次索引不够,则可以三次索引。即二次索引多对应的磁盘空间里存放的各个inode的数据的最后索引里面还是inode\r\n\r\n8. 一个inode的索引项和一块磁盘空间是一一对应的。\r\n\r\n具体计算您还是看完以上提到的两本书自己算一算吧。我可实在没有精力给您再当一回大学老师了。哈哈,对不起

论坛徽章:
0
17 [报告]
发表于 2004-07-03 19:46 |只看该作者

关于索引结点中nbpi的疑问

那么nbpi不同,可以生成的最大文件大小应该不同吧?\r\n有一个疑惑,间接寻址里inode指针指向数据块的大小\r\n根据nbpi还是fragment size?

招聘 : 系统集成
论坛徽章:
0
18 [报告]
发表于 2006-10-09 12:29 |只看该作者
nbpi不代表1个i节点所能够管理的空间大小,它只是在创建文件系统的时候,用来确定i节点的数量,从而确定该文件系统中所能够建立的文件/目录数量,1个i节点所能时间管理的空间/文件大小取决于寻址方式^_^^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP