我从小就使用 Windows,当我听到“Windows 文件系统”这个词时,我会想到目录中的目录(文件夹),一个名为 SYSTEM 的文件夹,一个名为 PROGRAM FILES 的文件夹等等。这就是系统吗?只是文件夹的布局?
然后我最近开始使用 Linux,我的参考书说在 Linux 文件系统中一切都从根开始并从那里分支。这与 Windows 有什么不同?我的意思是,Linux 系统和 Windows 系统似乎只是设置目录树的两种方式。这就是文件系统的意思吗?
答案1
只是文件夹的布局?
听起来好得令人难以置信……
以 FAT32 文件系统为例。我可以在上面安装 Windows XP,但我也可以在存储卡上使用它。在存储卡上,你没有你总结的那些文件夹。
所以...不要将操作系统系列的目录布局与文件系统混淆。
这就是文件系统的意思吗?
不...它指的是使目录结构正常工作的底层位和字节。
底层的位和字节?给我看看 FAT32!
让我们看看FAT32看起来,它有:
- 开头的一些标头扇区,如卷 ID 和保留扇区
- 两个文件分配表,让我们知道我们的文件在哪里。
- 包含我们所有目录和文件数据的集群。
- 一些我们无法使用的非常小的未使用空间。
FAT 表由许多如下所示的条目组成,使我们能够确定目录或文件在簇空间中的存储位置,以及一些属性和大小。
目录条目将指向目录/文件条目列表......
在集群空间中,我们现在可以遍历集群来查找所需的数据。集群本质上包含数据和信息,下一个片段是
其他文件系统有区别吗?给我看看 NTFS!
我将向你展示一张图片,以便你能够注意到差异,其余的是读者的作业:更多信息可以在此博客存档或谷歌。
主要思想是 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
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
每个正在运行的进程并为其设置一个“目录”,每个目录中的文件与用于调用该进程的命令行、内存映射、打开的文件等相关。 系统文件系统是另一个特殊的文件系统(安装在 上/sys
),用于公开有关正在运行的内核对象的大量信息,也可以通过简单地写入特定文件来微调正在运行的内核。
答案3
您可以将文件系统视为存储文件和文件夹的不同格式,有点类似于 MS Word 和 PDF 是存储文档的不同格式,或者 MP3 和 WAV 是存储音频的不同格式。
给定一些文件和文件夹,文件系统是将它们存储到磁盘的格式和代码,以便可以再次读取它们。
就像并非所有视频播放器都能播放所有视频格式一样,并非所有操作系统都能读取所有文件系统。例如,如果您将 Linux 上的文件存储在 ext3 格式的 USB 记忆棒上,Windows 无法读取该文件,因为它不知道如何处理 ext3 文件系统。
常见的文件系统包括
- FAT 和 NTFS(Windows,NTFS 是较新 Windows 版本的标准)
- ext3 和 ext4 (Linux)
- HFS 加 (OS X)
- ISO 9660 和 UDF(CD、DVD 和蓝光)
请参阅维基百科文件系统的比较。
答案4
文件系统不仅涉及目录树的设置方式,还涉及这些信息在介质上的编码方式。Linux 有几种文件系统:ext3、xfs、raiserfs 等。