⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
空间的最前面,&nbsp;其他的地方放data&nbsp;block.导致浪费掉许多seek&nbsp;time.&nbsp;<BR>&nbsp;<BR>s5fs&nbsp;fragmentation的问题也没有处理得很好.用free&nbsp;block&nbsp;list的方法只能&nbsp;<BR>在档案系统刚建立的时候拥有良好的连续配置,用久了fragmentation就严重了.&nbsp;<BR>&nbsp;<BR>block&nbsp;size也有问题.&nbsp;&nbsp;block&nbsp;size大会增加效率,但是浪费空间,反之减少效率,&nbsp;<BR>但是空间利用率较高.&nbsp;<BR>&nbsp;<BR>s5fs单一的super&nbsp;block也很危险,&nbsp;super&nbsp;block&nbsp;毁了整个filesystem就完了.&nbsp;<BR>&nbsp;<BR>s5fs还有一个缺点是14个字的档名限制.&nbsp;<BR>&nbsp;<BR>FFS的出现就是解决这些问题的.&nbsp;How?&nbsp;s5fs把disk看成是一个磁带般处理,&nbsp;<BR>没有考虑实体结构,&nbsp;FFS设计的时候就面对现实,把实体结构考虑进去,也就是&nbsp;<BR>考虑了disk的head,&nbsp;track,&nbsp;cylinder等性质.&nbsp;hard&nbsp;disk由好几片platter&nbsp;<BR>(硬碟片)组成.cylinder就是不同platter下相同track所组成的圆柱体.&nbsp;<BR>&nbsp;<BR>FFS把一个disk划成好几个cylinder&nbsp;group.&nbsp;一个cylinder&nbsp;group&nbsp;<BR>由相邻的cylinder组成.简单的说,FFS就是把一个disk划成几个小&nbsp;<BR>disk&nbsp;(cylinder&nbsp;group),每个cylinder&nbsp;group&nbsp;(disk)上面放个s5fs&nbsp;<BR>就是了.&nbsp;这样子作可以让某个cylinder&nbsp;group内的资料限制在几个&nbsp;<BR>cylinder的□围内,减少seek&nbsp;time.&nbsp;<BR>&nbsp;<BR>针对fragmentation的问题则是使用bitmap来解决.&nbsp;FFS使用超大&nbsp;<BR>的data&nbsp;block以降低fragmentation带来的影响.&nbsp;<BR>&nbsp;<BR>但是对於小的档案(和大档案的尾巴,不满一个block的部份),则是把data&nbsp;block&nbsp;<BR>切成几个小块,存放好几个小档来节省浪费掉的空间.存放在fragmented&nbsp;<BR>block的资料一定要是一个档案的最尾端,而且在此block内的资料必须&nbsp;<BR>连续存放,不可以说A档的tail住在一block的第1/4,&nbsp;3/4块,&nbsp;B档比较小,&nbsp;<BR>住在同一&nbsp;block的第2/4块.这种情形要把A档的block移到另一个新的block&nbsp;<BR>上,让A的最後一个block连续存放.&nbsp;<BR>&nbsp;<BR>为了避免因为一个档案慢慢的成长导致不必要的搬移,&nbsp;FFS限制只有direct&nbsp;<BR>block可以用fragmentation.也就是档案超过一定大小就不用fragmentation&nbsp;block&nbsp;<BR>了.&nbsp;<BR>&nbsp;<BR>除了架构上的改变,&nbsp;allocation&nbsp;policy也很重要.&nbsp;FFS这样配置硬碟空间:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;同一个目录的档案(inode)都放在同一个cylinder&nbsp;group上.&nbsp;(localizing&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;policy)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;每个新的目录都和其parent位於不同的cylinder&nbsp;group上.&nbsp;(distributing&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;policy)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;档案的data&nbsp;block放在和其inode相同的cylinder&nbsp;group上(localizing&nbsp;policy)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;档案超过48kb,以及以後每增加1MB,就要换跑道,喔是cylinder&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.免得某个档案灌爆一个cylinder.&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;配置data&nbsp;block时考虑disk的interleave&nbsp;factor.(不懂?那你一定没有&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用过MS-DOS的floppy加速程式:)&nbsp;没关系,&nbsp;本书有图解)&nbsp;<BR>&nbsp;<BR>s5fs的super&nbsp;block被分成两部份.&nbsp;FFS4每个cylinder&nbsp;group都有记录&nbsp;<BR>自己的空间使用状况.&nbsp;而整个disk的super&nbsp;block只记录整体性的资料,&nbsp;<BR>如cylinder的大小位置,&nbsp;block的大小位置等等资料.每个cylinder&nbsp;group&nbsp;<BR>都有一个super&nbsp;block的备份.&nbsp;FFS把这些备份分散开来,&nbsp;使得没有单一的&nbsp;<BR>磁头,磁轨,磁柱或碟片存放这些备份.&nbsp;(没有把所有的鸡蛋放在同一篮子&nbsp;<BR>上的意思.)&nbsp;<BR>&nbsp;<BR>即使目前的SCSI硬碟并不区分head,&nbsp;cylinder,&nbsp;sector,制造商提供的资料只是&nbsp;<BR>让他乘起来和硬碟的大小相同而已,&nbsp;但是实验显示FFS的方式还是可以得到&nbsp;<BR>良好的效能.&nbsp;<BR>&nbsp;<BR>FFS还有很多chache的改进可以提高他的效能,不过要自己看书:)&nbsp;<BR>&nbsp;<BR>Temporary&nbsp;File&nbsp;System&nbsp;<BR>&nbsp;<BR>temporary&nbsp;file&nbsp;system对於需要暂时使用档案的场合可以增进效率.&nbsp;<BR>以前的方式是把一块ram划下来作ram&nbsp;disk.这样子浪费记忆体.&nbsp;BSD用memory&nbsp;file&nbsp;<BR>system&nbsp;(mfs)的方式,&nbsp;让一个io&nbsp;server用他的address&nbsp;space当作空间来提供&nbsp;<BR>temporary&nbsp;file&nbsp;system的暂存空间,不过最大的缺点是context&nbsp;switch使&nbsp;<BR>performance不好.&nbsp;Sun的方式最好,&nbsp;tmpfs整合了vnode/vfs介面和VM介面,&nbsp;<BR>让整个virtual&nbsp;memory来提供tmpfs的空间.&nbsp;整个存取的方法和一般的filesystem&nbsp;<BR>没有两样,是最理想的方法.&nbsp;另外一个方法是设定file&nbsp;system&nbsp;write&nbsp;back的时间,&nbsp;<BR>以企图延後所有档案系统的资料写入disk来达到temp&nbsp;file&nbsp;system的目的.&nbsp;(期望&nbsp;<BR>他没被写入前就杀掉了).&nbsp;<BR>&nbsp;<BR>Unix用到暂时档的地方很多(如cc).所以temporary&nbsp;file&nbsp;system的发展&nbsp;<BR>是很有价值的.&nbsp;<BR>&nbsp;<BR>Chapter&nbsp;9结束的时候提到了Buffer&nbsp;Cache.这个东西在Bach的书里是重点,但是&nbsp;<BR>目前的Unix已经不用Buffer&nbsp;Cache,改采整合file&nbsp;system和virtual&nbsp;memory的方式,&nbsp;<BR>更为有效的运用记忆体.&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>Chapter&nbsp;10&nbsp;Distributed&nbsp;File&nbsp;Systems&nbsp;<BR>&nbsp;<BR>本章介绍..NFS/RFS/AFS/DFS.&nbsp;<BR>NFS其实算蛮简单的,他只是把kernel往disk写回的动作(&amp;&nbsp;reading),换成&nbsp;<BR>network&nbsp;packet送出去而已.对kernel的介面则是藏在vnode/vfs下.&nbsp;<BR>&nbsp;<BR>NFS&nbsp;performance&nbsp;bottleneck在於NFS要求每次的write()不能够cache,一定要&nbsp;<BR>马上写回,而档案属性必须一个一个档询问,使得ls&nbsp;-l产生大量的traffic.&nbsp;<BR>当然现在已有方法改进.&nbsp;<BR>&nbsp;<BR>NFS&nbsp;version&nbsp;3於1995年公布,更正了NFS&nbsp;v2的大部份的问题.&nbsp;(security&nbsp;<BR>的问题是在RPC上面.&nbsp;RPC本来就有提供security的机制,只是少有实作而&nbsp;<BR>已...)&nbsp;由於NFS&nbsp;v3出现蛮晚的,有支援的Unix可能算很赶的上流行了:)&nbsp;<BR>&nbsp;<BR>本章提到两个dedicated&nbsp;NFS&nbsp;server.&nbsp;我比较有兴趣的是Auspex&nbsp;NS5000.&nbsp;<BR>另外一个是IBM的,&nbsp;focus在容错.&nbsp;Auspex&nbsp;NS5000有好几个CPU,&nbsp;每个CPU&nbsp;<BR>都作单一个事,分成两组,一组处理网路上的需求,另一组处理硬碟档案系&nbsp;<BR>统的IO.另外有一个CPU跑修改过的SunOS,admin用,其他的CPU都跑一个叫&nbsp;<BR>做functional&nbsp;multiprocessing&nbsp;kenel&nbsp;(FMK)的系统,彼此间用message&nbsp;&nbsp;<BR>passing交谈.&nbsp;FMK的好处是他只提供作NFS&nbsp;server所必要的function,&nbsp;&nbsp;<BR>而不提供Unix的语意/环境,使得系统省下不少负担.&nbsp;<BR>&nbsp;<BR>RFS没什麽好提的...&nbsp;<BR>&nbsp;<BR>AFS,&nbsp;Andrew&nbsp;File&nbsp;System是CMU发展的系统,&nbsp;後来成立Transarc&nbsp;<BR>Corporation.继续发展.&nbsp;後来AFS演变成OSF&nbsp;DCE的Distributed&nbsp;File&nbsp;<BR>System.本书AFS/DFS都有详细的介绍.他们太复杂了,看书比较清楚.&nbsp;<BR>结论是AFS比较不好,&nbsp;DFS作了很多改善,&nbsp;功能也比较多.&nbsp;DFS比较特&nbsp;<BR>别的是对分散式档案系统cache的改进.&nbsp;DFS&nbsp;server会给他的client&nbsp;<BR>一个(read/write/status/lock..)token,&nbsp;允许他(read/write/status&nbsp;<BR>/lock..)等等的动作而不需要与server&nbsp;synchronize,也不用&nbsp;<BR>update&nbsp;cache.也就是说该client拥有该资料的使用权(token,权杖之意).&nbsp;<BR>client拥有token直到kernel撤回这样权力为止.kernel随时可撤回&nbsp;<BR>这些token,表示有人要更改data,需要synchronize了.&nbsp;<BR>&nbsp;<BR>token的想法非常的高明,因为传统的方法所有的时间都要synchronize.但是&nbsp;<BR>token的想法则是考虑到大部份的时间内皆不会产生race&nbsp;condition,所以&nbsp;<BR>不需要每个动作都synchronize.&nbsp;<BR>&nbsp;<BR>不过文中也指出,&nbsp;DFS非常的复杂,&nbsp;不好实作就是了.&nbsp;<BR>&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -