文件系统仅仅是文件夹的布局吗?


56

我从小就开始使用Windows,当我听到“ Windows文件系统”一词时,我想到目录中的目录(文件夹),一个名为SYSTEM的文件夹,一个名为PROGRAM FILES的文件夹等。这是系统吗?只是文件夹的布局?

然后我最近开始使用Linux,我的参考书说在linux文件系统中,一切都始于根,然后从那里分支。与Windows有什么真正的不同?我的意思是,看来linux系统和Windows系统只是设置目录树的两种方式。这是文件系统的意思吗?


3

2
仅供参考,没有“ Linux文件系统”。这本书的意思是linux目录树。而且,是的,目录树只是文件夹的布局。
user606723 2011年

2
Linux缺少驱动器的概念,因此所有东西都安装在下面/。在Windows中,情况并非如此,因为它缺少UNIX样式的挂载(如果我在这里错了,请纠正我),因此一切都围绕驱动器进行组织。
new123456 2011年

1
@ new123456感觉已更正。Windows支持挂载(由于W2k或NT),尽管很少使用该功能。
kubanczyk

Answers:


130

只是文件夹的布局?

听起来好得令人难以置信...

让我们以FAT32文件系统为例。我可以在其上安装Windows XP,但也可以在存储卡上使用它。在存储卡上,没有汇总的文件夹。

所以...不要将一系列操作系统的目录布局与文件系统混淆。

这是文件系统的意思吗?

否...它是指使目录结构正常工作的基础位和字节。

基础位和字节?给我看看FAT32!

让我们看一下FAT32的外观,它具有:

  • 开始时有一些标头扇区,例如卷ID和保留扇区
  • 两个文件分配表,使我们能够确定文件的位置。
  • 包含我们所有目录和文件数据的集群。
  • 一些我们无法使用的非常小的未使用空间。

FAT表由许多看起来像这样的条目组成,使我们能够确定目录或文件在群集空间中的存储位置以及一些属性和大小。

目录条目将指向目录/文件条目的列表...

在集群空间中,我们现在可以移动集群以查找所需的数据。群集本质上包含数据和信息,下一个片段位于

在此处输入图片说明

其他文件系统是否有所不同?给我看NTFS!

我将向您展示一张图片,以便您可以注意到它们之间的差异,其余内容供读者阅读:可以在此Blog存档或Google 上找到更多信息。

主要思想是NTFS是对FAT32的巨大改进,它更加健壮/高效。通过使用位图进一步帮助防止碎片,更好地了解(未使用的)空间。等等...

http://thinkdifferent.typepad.com/photos/uncategorized/04ntfsfilesystem.png

Linux上的文件系统呢?告诉我ext2 / 3!

这个想法是ext2 / ext3使用超级块和inode。这样就可以实现软链接和硬链接,作为文件的目录,具有多个名称的文件等等。主要要点正在抽象化,以使文件系统能够执行更多的元操作

http://thinkdifferent.typepad.com/photos/uncategorized/03extfilesystem.png


@Shadok:稍后我可能会改进后面的部分,尽管这些天我很忙...谢谢。
Tamara Wijsman

2
如果可以的话,我会+2。现在为什么不能再有更多文档和规格看起来像这样!
greatwolf 2011年

也许您应该写一篇有关@TomWijsman ;-)的博客文章
Ivo Flipse

@IvoFlipse:一个“数据存储:它如何工作?” 系列可能是可能的,这是另一个答案。大的&$#图片讲的不只是话... :)
Tamara Wijsman

绝对,这听起来像个好主意
Ivo Flipse

14

Linux和Windows之间的最大区别在于,至少在文件系统和目录树方面,它们的区别在于Linux中的“一切都是文件”,并且一切都源于一个根。这也适用于几乎所有基于Unix的操作系统,例如BSD,OS X,Solaris等,但是我只是说“ Linux”是通用的(如果不完全准确的话)。

但是,这实际上意味着什么?

Windows允许为其文件系统使用多个命名根。您将这些理解为驱动器号:C: D: E:依此类推。每个人都有一个根(\)和一棵从该根下降的树。Windows的最新版本允许进行诸如卷挂载点之类的操作,其中可以将卷(您认为是分区)挂载到现有的空文件夹中。因此,可以代替D:\代表光盘驱动器(CD / DVD / BR)的根目录,C:\Optical而可以将其安装在该目录中。这更类似于Linux。Windows中的所有内容都有一个底层的单根对象名称空间,类似于Linux使用的对象并由对象管理器管理,但大多数用户很少看到它引用,因为它主要用于内核。

Linux有一个根目录:/一切都源于此,它不一定需要代表您的硬盘。硬盘驱动器,光盘驱动器,存储卡,网络共享,打印机,扫描仪,CPU,RAM,进程,...所有内容都表示在该单个名称空间内的某个位置,并且可以由任何具有标准文件管理API的进程访问,前提是您拥有足够高的访问权限级别。仅仅因为您可以读取或写入它,并不意味着它是Linux中硬盘上的文件。例如,设备通常安装在其中/dev,因此访问其中的内容通常意味着您正在与设备对话-可能是声卡,扫描仪或照相机等。这些被称为设备文件工艺一个特殊的“文件系统”这是正常安装/proc,并有每个正在运行的进程“目录”,在涉及到的是,象调用该进程的命令行,内存映射,打开文件等每个目录中的文件 SYSFS被另一特殊文件系统(安装在上/sys)用于公开有关正在运行的内核对象的大量信息,还可以用于通过简单地写入特定文件来微调正在运行的内核。


2
请注意,从用户的角度来看,很容易将文件系统与目录布局混淆。虽然“文件系统”一词的真正含义是与文件系统的内部有关;例如。FAT和NTFS之间的差异,以及ext2和ext3之间的差异...
Tamara Wijsman

4
@Tom:看来,OP确实是在询问Linux和Windows之间各种对象层次结构的差异,而不是在磁盘上如何布置位。udev,procfs,sysfs,tmpfs等文件系统与Linux中的ext2或NTFS一样多,尽管它们不涉及磁盘上的内容。
afrazier 2011年

这只是他的问题“文件系统是否只是文件夹的布局?”的一部分,您回答问题的方式只会使问题更加混乱,并且无法解决该问题。因此,我给读者留下了通知...
Tamara Wijsman

在Linux中,“一切都是文件” +1。对我来说,这是Linux和Windows之间的最大区别。
Rabarberski 2012年

3

文件系统不仅涉及如何设置目录树,而且还涉及如何在媒体上编码此信息。Linux有几种文件系统:ext3,xfs,raiserfs等。


3

您可以将文件系统视为用于存储文件和文件夹的不同格式,有点类似于MS Word和PDF是用于存储文档的不同格式,或者MP3和WAV是用于存储音频的不同格式。

给定几个文件和文件夹,文件系统就是将它们存储到磁盘的格式和代码,以便可以再次读取它们。

就像并非所有视频播放器都可以播放所有视频格式一样,并非所有操作系统都可以读取所有文件系统。例如,如果您将Linux中的文件存储在ext3格式的USB记忆棒上,则Windows无法读取该文件,因为它不知道如何处理ext3文件系统。

常见文件系统包括

  • FAT和NTFS(Windows,NTFS是较新的Windows版本的标准配置)
  • ext3和ext4(Linux)
  • HFS plus(OS X)
  • ISO 9660和UDF(CD,DVD和蓝光)

有关文件系统比较,请参见Wikipedia 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.