博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux文件系统学习草稿篇(一)
阅读量:6896 次
发布时间:2019-06-27

本文共 788 字,大约阅读时间需要 2 分钟。

hot3.png

Linux系统下文件系统工作原理简介

文件系统通过为每个文件分配文件块的方式把数据存储在存储设备中。这样就要维护每一个文件的文件块的分配信息,而分配信息本身也要存在磁盘上。Dos和Windows的用户可能还记得FAT这种文件系统吧。不同的文件系统用不同的方法分配和读取文件块。

有两种常用的文件系统的分配策略:块分配(block allocation)和扩展分配(extent allocation)。块分配当文件变大的时候每一次都为这个文件分配磁盘空间,而扩展分配则是当某个文件的磁盘空间不够的时候,一次性为它分配一连串连续的块。

传统的Unix文件系统使用的块分配的机制提供了一个灵活而高效的文件块分配策略。磁盘上的文件块根据需要分配给文件,这样可以减少存储空间的浪费。当一个文件慢慢变大的时候,就会造成文件中文件块的不连续。这就导致了过多的磁盘寻道时间,当读取一个文件的时候有可能要随机而不是连续地读取文件块,这样的效率很低。

可以通过优化文件块的分配策略(尽可能为文件分配连续的块)来避免文件块的随机分配。通过使用聪明的块分配策略,可以实现块的连续分配。这样就可以减少磁盘的寻道时间。但是,当整个文件系统的文件块的分配形成碎片的时候,就再也不可能连续分配了。

每一次当文件扩展的时候,块分配的算法就要写入一些关于新分配的块所在位置的信息。如果每一次文件扩展的时候只增加一个块,那么就需要很多额外的磁盘I/O用来写入文件块的结构信息。文件块的结构信息也就是上面说的meta-data。meta-data总是一起同时地写入存储设备的,这就意味着改变文件大小的操作要等到所有的meta-data的操作都完成之后才能进行。因此,meta-data的操作会显著地降低整个文件系统的性能。

转载于:https://my.oschina.net/pzh0819/blog/97643

你可能感兴趣的文章
建筑的永恒之道 (C·亚历山大 著)
查看>>
网络I/O模型
查看>>
移动web问题小结
查看>>
递归排序(如:1,1,2,3,5,8,13,21,34....求第i个数)
查看>>
MAC OS环境下搭建基于Python语言的Selenium2自动化测试环境
查看>>
HumanActivitySystemParameterSetting
查看>>
golang 编辑器选择
查看>>
ThinkCMF-如何收藏
查看>>
怎么判断一个服务器的服务器性能
查看>>
Linux下pipe使用注意事项
查看>>
WCF系列教程之WCF服务配置工具
查看>>
Linux网络命令
查看>>
浅谈JavaScript的函数的call以及apply
查看>>
BZOJ 2666: [cqoi2012]组装
查看>>
System 这四个单元多用用(近期)
查看>>
Html5使用history对象history.pushState()和history.replaceState()方法添加和修改浏览历史记录...
查看>>
SVN 钩子 允许用户修改Subversion日志的钩子脚本(转)
查看>>
算法学习一
查看>>
像素PX厘米转换
查看>>
webpack使用babel
查看>>