怎么样理解文件系统呢?

yfl8640 2010-12-29 11:53:02
我最近在看linux的文件系统,但是越看越迷糊,因为我对文件系统没有一个整体的认识。

打个比方说:文件系统应该是和存储介质没有任何关系(硬盘和FLASH),那么不同格式的文件系统到底区别在哪里呢?在linux中,存在VFS,对所有的具体的文件系统提供统一的接口,那么对于windows下面的fat的文件格式怎么能够赋值给VFS中的超级块,索引节点呢,请指教!谢谢
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
marven 2010-12-31
  • 打赏
  • 举报
回复
这个问题我也弄了很久 还是看了内核前景分析的文件系统一章才基本弄懂了。在内核编译的时候将FAT文件支持选上,就会支持FAT格式的磁盘了,至于这么知道磁盘时FAT文件格式,来源于mount的参数。你问的这个问题最主要的是一个file_system_type和super_block这两个结构体来实现的,你可以着重的看一下。希望对你有点用。
leafsoar 2010-12-29
  • 打赏
  • 举报
回复
仅仅使用文件的时候需要知道是哪个索引节点吗》。。
无非都是资源的分配问题,提供给你可存储数据的地方,这个可以是本地磁盘,网络文件系统
你只需要知道怎么打开这个文件,怎么修改以及操作这个文件就行了
至于节点之类的,就是深入到某一种文件系统的实现去了

“fat的文件格式怎么能够赋值给VFS中的超级块”
所以有些操作是不能跨文件系统的...只从资源分配考虑,接口越简单越好(优化是另一方面了)
leafsoar 2010-12-29
  • 打赏
  • 举报
回复
文件系统的区别

例如一个普通硬盘,一个固态硬盘,那么区别在哪里,相同的地方在哪里?
两种硬盘的本质不一样,操作的驱动也都一定是不一样的,而可以用相同的API,不同的内部实现
普通硬盘对柱面进行了优化,固态硬盘对读写进行了优化,存储使用不同的位置,以便提升使用寿命

这是硬件上的不同导致内部实现不同

好吧在相同的硬盘上,比如zfs是128位的文件系统,FAT32使用的32位,NTFS使用的64位
这样他们的内部处理也都不一样...但你用同一个系统却都能够访问,这就是它们相同的地方(API
,即便少量的不一样,可以进一步封装,对应相对的操作)
例如还有日志文件系统和非日志文件系统,网络文件系统等等》。。
dfysy 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yfl8640 的回复:]
谢谢!
不过我还是没有得到我要的答案呢,因为在linux中所有关于文件的操作都是由VFS进行封装,对于用户来讲都是一样的。

那么,不同的文件系统之间的具体区别在哪里呢?
比方说就是说JFFS和ext2的两种不同的文件系统的区别在哪里呢?是储存的格式不一样,还是。。。?
[/Quote]
不同的文件系统肯定存储的格式不一样,其它的包括其中的垃圾回收,如何找到需要的数据的算法,效率等等都是不一样的。比如JFFS的存储格式和回收方式就比较适合FLASH介质,ext2就不太适合,当然ext2也是可以用在Flash上的,只是不太好而已。
至于VFS,只是屏蔽了文件系统的差异,为内核提供一套统一的借口。就像我们在网上买东西,我们的动作都是点鼠标货到付款,但是卖家到底是走公路运输,还是铁路,还是空运,或者从杭州跑到北京亲自送货上门,那是他的事情,我们只管收货就OK了
yfl8640 2010-12-29
  • 打赏
  • 举报
回复
谢谢!
不过我还是没有得到我要的答案呢,因为在linux中所有关于文件的操作都是由VFS进行封装,对于用户来讲都是一样的。

那么,不同的文件系统之间的具体区别在哪里呢?
比方说就是说JFFS和ext2的两种不同的文件系统的区别在哪里呢?是储存的格式不一样,还是。。。?

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧