设备 vs 分区 vs 文件系统 vs 卷:这些概念之间如何相互关联,准确地说?

25

从Java开发人员的角度来看,这些概念如何相互关联?

我的问题:有人能提供简单准确/普遍接受的定义的解释或链接吗?谢谢。

参考文献,我找到了一些但对我不清楚:

http://arxiv.org/ftp/cs/papers/0508/0508063.pdf http://arxiv.org/ftp/cs/papers/0508/0508063.pdf

在谷歌上运气不太好。

我的最初假设:

  • 物理设备及其驱动程序是最开始的。
  • 分区是由驱动程序提供的设备部分视图,与文件系统概念无关。
  • 卷是给一些以某种方式组织的分区集合赋予的名称(例如 RAID)。
  • 文件系统安装在卷之上,以文件单元存储数据。
  • 文件系统通常提供卷的树状视图。
  • 文件系统树可能会使用文件系统连接/链接功能而默默地包含其他文件系统树。
3个回答

27

让我们从一些基础知识开始:

  • 数据:数据只是有序的一组比特。内容的解释取决于您用于读取数据的应用程序。例如1:您使用文本编辑器尝试打开文件,则该应用程序可能将8位捆绑在一起并将它们解释为ASCII字符。例如2:您尝试使用音频播放器打开文件,则它将尝试将12位组合在一起以获得播放音频中的一个振幅。

  • 存储设备:设备是物理存储位置,您可以在其中存储数据。这些通常可以通过“随机访问”方式访问,例如获取第1337个比特 -> 1(简化)。这些设备的示例包括:硬盘驱动器、固态磁盘、USB闪存驱动器、CD、DVD,还有您计算机的内存。

这两件事是您所需的全部内容:1. 存储/读取数据的设备 2. 处理数据的规则

例如:假设您要将二进制文件复制到硬盘驱动器的开头,并告诉计算机从此硬盘驱动器启动。计算机将读取第一个命令并执行它,然后读取下一个命令,以此类推。这就是引导加载程序所做的事情。在这个早期阶段,没有涉及任何文件系统、分区等。

在软件开发开始时,您不需要“打开文件”,只需“读取100到180字节”并使用该数据(也许80个字节是字符串或音频数据)。使用数字变得很麻烦(我的字符串从哪里开始?是40吗?它有多长?这是哪个字符串?),因此发明了文件系统:

  • 文件系统:文件系统只是为了让比特获得一些含义而设置的一层。文件系统中的文件只是信息,其中包括数据的起始位置、长度以及更简单的地址方式(“diary.txt”比“从第500个字节开始的4000个字节”更容易处理)。路径和树形视图只是一种使查找和组织文件更加方便的方式。

    基本上,文件系统使用数据并将其解释为文件系统。此外,它允许用户(或其他应用程序)以简单的方式访问这些数据的块。文件系统不关心数据存储在哪里,可以来自任何设备。您也可以创建一个。

    例如:文件系统获取数据([---Data---]),处理它,并允许访问数据块([D])。

    [---Data---] -> 文件系统 -> [D][D][D][D]

    由于文件只是从文件系统接收的数据,因此可以在文件中安装文件系统。没问题:

    `HDD ---> 文件系统 ---> 文件 ---> 文件系统 ---> 文件

这些是我认为的主要概念。您谈到了一些其他事情,例如分区、(逻辑)卷、卷组、(加密)容器等。不要被这些东西所迷惑,这些只是为了组织数据而采取的其他层次。仔细看看,你会发现这些基本上就是文件系统。让我们以分区为例:分区包含有关底层数据的起始位置、长度以及寻址方式的信息(例如第2个分区)。听起来很熟悉吧?

那么,Java开发人员对此有什么看法呢?大多数情况下,您将通过File访问数据。尽管直接写入/读取硬盘驱动器可能是完全合理的,但我认为最好的方法是:使用最适合应用程序的数据源:

例如:

  • 组织化数据? -> 数据库
  • 文本? -> 文件
  • 分区组织工具 -> 直接从设备读取,例如/dev/sd0

希望这有助于澄清一些事情。


@mins 这个回答对您有帮助吗?还是我漏掉了什么重要的信息? - Absurd-Mind

17

总体概述(类似于Windows)

输入图像说明
图标来源:vector.me


磁盘、驱动器、分区、卷

磁盘或驱动器:用于存储数据的物理设备。驱动器似乎比磁盘更通用,它与存储技术有关,例如硬盘驱动器、软盘驱动器和USB闪存驱动器。

磁盘被划分为扇区,每个扇区包含相同数量的字节。扇区有一个扇区号,可以用来单独引用它们。

分区和卷:常常互换使用,但并不相同,一个分区中可以有多个卷

  • 分区是磁盘的一块具有特定大小的区域(例如硬盘的特定扇区范围)。磁盘分区是将磁盘分成多个块的操作,就好像有多个磁盘一样。某些分区可能会进一步分成多个单独的逻辑块,这必须由所使用的分区方案支持。

  • 有效的块(无论是物理的还是逻辑的)称为。原始卷可以随后格式化以包含文件系统,该文件系统本身可以存储实际数据。

操作系统需要跟踪系统中的卷。这是文件和目录存储的地方。

分区可以使用两种主要的分区方案进行:

MBR

MBR与传统BIOS固件一起使用。 MBR可以在驱动器上创建最多4个分区,可以是主分区或扩展分区。驱动器上的可见空间限制为2 TB,超出的空间无法用于分区。

每个驱动器只能有一个扩展分区,此分区最多可以分成128个逻辑卷。

一个主分区可以被选为活动分区,并用于启动计算机。

GPT

GPT支持大于2TB的驱动器,每个驱动器最多可有128个分区。GPT不兼容BIOS,计算机必须配置有EFI固件。
GPT在其空间的开头包含一个虚假的MBR。这个MBR显示驱动器为单个MBR分区,以应对无法识别GPT的工具。 镜像是卷(文件和其他数据)的快照,存储在单个文件中,类似于zip文件。来自卷的图像可以在另一个卷上扩展,也可以“挂载”或“附加”到任何其他卷,或出现为现有卷的目录。
可以从镜像文件创建其他卷而不连接到实际物理单元(除了存储镜像文件的单元)。

文件系统

文件系统用于控制卷上数据的存储和检索。它是将数据组织成文件和目录的实际方式,而不是无序和无关的字节。

文件系统负责文件内容和结构(树)。目录和文件被赋予属性(如只读)和访问权限。

DOS操作系统使用过遗留FAT文件系统。现代设备仍然支持FAT以便于兼容和交换。FAT版本:FAT12、FAT16、FAT32对应于文件条目中使用的位数,决定了可以引用的扇区数。FAT32可以引用232 = 4,294,967,296个扇区。对于512字节的扇区,FAT32因此可以管理2TB。

现代Windows版本使用NTFS。NTFS增加了对元数据、访问控制列表(权限)和日志记录的支持。

  • MacOS使用APFS

  • Linux通常默认使用ext4

  • Android使用ext4。

  • 光盘(CD、DVD、蓝光)通常使用UDF

Windows上的磁盘、分区、卷和文件系统(MBR):

enter image description here
来源

碎片整理

当文件系统无法为文件分配连续的扇区时,文件内容存储在远离的扇区中,这会碎片化机械设备中的数据访问。

HFS+和ext4具有碎片整理控制机制,但为了限制碎片化,大多数文件系统通过完整的块/簇来分配文件空间,一个块包含一定数量的连续扇区。例如,NTFS可以配置为分配4KB的簇。一些文件系统能够减少有效未使用空间大小,但一个文件通常拥有比实际存储数据所需更多的空间。

启动支持

当BIOS/EFI固件启动计算机时,操作系统的文件系统是不可用的。相反,BIOS/EFI会寻找在分区和/或操作系统安装期间写入引导驱动器上的引导扇区(PC上的主引导记录)。这段代码是一个引导程序,能够从活动分区加载和执行适当的代码以启动主要的操作系统组件,其中包括提供加载文件功能的文件系统。然后操作系统接管计算机。


其他资源:

https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2003/cc787202(v=ws.10)https://zh.wikiversity.org/wiki/IT_Fundamentals/2014/File_Systemshttps://www.howtogeek.com/school/using-windows-admin-tools-like-a-pro/lesson4/?PageSpeed=noscripthttps://www.lifewire.com/volume-vs-partition-2260237https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%A0%B4%E7%A2%8E


这个答案基于Windows。 - Chris Bao
@ChrisBao:对于Unix和forks,有一个关于“卷、分区和驱动器之间的差异”的问题(https://unix.stackexchange.com/questions/87300/differences-between-volume-partition-and-drive)。我不确定它们之间是否存在很大的差异。 - mins
分区和卷之间的区别在于它们的关系。 - Chris Bao
@ChrisBao:除了措辞和工具使用之外,我看不出任何大的区别。卷仍然是在分区中创建的。与Unix卷一样,Windows卷可以跨越不同的分区并且可以被挂载到另一个文件系统的部分以出现为整体的可能性,这些功能在服务器上更常用。如果有实际差异,则有答案解释将会很有趣。 - mins

2
  • 设备,物理存储设备
  • 分区,在分区表中定义的存储空间的切片
  • 文件系统,用于将文件映射到存储地址的表格
  • 卷,任何带有位于开头的文件系统(文件表)的存储

因此,操作系统中普通用户使用的是卷:

  • C:,D:,E:是Windows卷(也称为驱动器)
  • 在Linux中,任何被挂载的东西都是一个卷

在大容量存储选项出现之前,没有分区。例如,软盘没有分区。文件系统直接位于存储空间的开头。

当新设备的存储能力大大扩展时,需要将设备逻辑地分成较小的部分以服务不同的目的。因此,创建分区表来将设备分割成分区。

每当在分区(或旧设备)开头创建文件系统并向用户提供时,它就变成了一个卷。在分区上创建文件系统称为格式化。


导致混淆的一件事是,Amazon EBS使用“卷”来指代(虚拟)设备。您需要挂载EBS卷,然后创建分区和文件系统才能使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接