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

P_Q*_*P_Q 57 windows linux filesystems

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

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

Tam*_*man 131

只是文件夹的布局?

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

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

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

这是文件系统的意思吗?

不...它指的是使您的目录结构工作的底层位和字节。

底层的位和字节?给我看 FAT32!

让我们看看FAT32是什么样子的,它有:

  • 开头的一些标头扇区,例如 Volume ID 和 Reserved Sectors
  • 两个文件分配表,让我们可以找出我们的文件在哪里。
  • 包含我们所有目录和文件数据的集群。
  • 一些我们无法使用的非常小的未使用空间。

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

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

在集群空间中,我们现在可以遍历我们的集群来找到我们需要的数据。集群本质上包含数据和信息,其中下一个片段是

在此处输入图片说明

其他文件系统有区别吗?给我看看 NTFS!

我将向您展示一张图片,以便您可以注意到差异,剩下的就是读者的功课:可以在此博客存档或 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

  • 如果可以的话,我会 +2 这个。现在为什么不能有更多的文档和规范看起来更像这样!? (3认同)

afr*_*ier 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)用于公开有关正在运行的内核对象的大量信息,也可用于通过简单地写入特定文件来微调正在运行的内核。

  • @Tom:看来 OP 确实是在询问 Linux 和 Windows 之间各种对象层次结构的差异,而不是位在磁盘上的布局方式。udev、procfs、sysfs、tmpfs 等与 Linux 中的 ext2 或 NTFS 一样是文件系统,尽管它们不涉及磁盘上的内容。 (4认同)
  • 请注意,从用户的角度来看,很容易将文件系统与目录布局混淆。虽然术语文件系统实际上是指文件系统的内部结构;例如。FAT和NTFS的区别,以及ext2和ext3的区别... (2认同)