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

min*_*ins 11 filesystems storage volumes partition

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

我的问题:有人可以为简单而准确/普遍接受的定义提供解释或一些链接吗?Tks。

作为参考,我找到但不清楚的文件:

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

在谷歌上不是很幸运。

我最初的假设:

  • 首先是物理设备及其驱动程序。
  • 分区是驱动程序提供的设备的一部分的视图,与文件系统概念无关
  • 卷是以某种方式组织的一组分区的名称(例如 RAID)
  • 文件系统位于卷之上,以文件为单位存储数据。
  • 文件系统通常提供卷的树视图
  • 文件系统树可以使用文件系统连接/链接功能静默地包含其他文件系统树

Abs*_*ind 16

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

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

  • 存储设备:设备是可以存储数据的物理存储器。这些通常以“随机访问”方式访问,例如获取位号 1337 -> 1(简化)。这些设备的示例包括:硬盘驱动器、固态磁盘、U 盘、CD、DVD,以及计算机的内存。

您只需要这两件事: 1. 存储/读取数据的设备 2. 如何处理数据的规则

示例:假设您要将二进制文件复制到硬盘的开头,并告诉您的计算机从该硬盘启动。计算机将读取第一个命令并执行它,然后读取下一个命令,依此类推。这就是引导加载程序的作用。在这个早期阶段,不涉及文件系统、分区等。

在软件开发开始时,您没有“打开文件”,而是“读取 100 到 180 个字节”并使用这些数据(也许 80 个字节是字符串或音频数据)。处理数字很烦人(我的字符串从哪里开始?是 40 吗?又过了多久?这是哪个字符串?),所以发明了文件系统:

  • 文件系统:文件系统只是一个层,目的是让字节具有某种意义。文件系统中的文件只是数据开始的位置、长度以及更简单的寻址方式的信息(“diary.txt”比“从第 500 字节开始的 4000 字节”更容易处理)。路径和树视图只是为了更方便地查找和组织文件。

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

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

    [---Data---] -> Filesystem -> [D][D][D][D]

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

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

这些是我认为的主要概念。你谈到了一些其他的东西,比如分区、(逻辑)卷、卷组、(加密)容器等。不要被这些东西弄糊涂了,这些只是为了组织数据的其他层。仔细观察你会发现这些基本上都是文件系统。让我们以分区为例:分区包含它在底层数据中的起始位置、长度以及寻址方式的信息(例如分区号 2)。听起来很熟悉?

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

例子:

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

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


min*_*ins 7

整体画面(Windows 类)

在此处输入图片说明
图标来源:vector.me


磁盘、驱动器、分区、卷

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

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

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

  • 分区是具有特定尺寸的盘的组块(硬盘的例如一个特定的扇区范围。磁盘分区是一种划分磁盘插入多个块,好像存在多个磁盘的行为。一些分区又可以分为多个单独的逻辑块,它必须由所使用的分区方案支持。

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

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

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

MBR

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

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

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

GPT

GPT 支持大于 2 TB 的驱动器和每个驱动器最多 128 个分区。GPT 与 BIOS 不兼容,计算机必须配置EFI固件。

GPT 在其空间的开头包含一个假 MBR。此 MBR 将驱动器显示为单个 MBR 分区,以应对无法识别 GPT 的工具。

图片

图像是体积(文件和其他数据)成单个文件的快照,类似于zip文件。一个卷中的映像可以在另一个卷上展开,并且映像也可以“挂载”或“附加”以像任何其他卷一样出现,或者作为现有卷的目录出现。

可以从映像文件创建(“挂载”)附加卷,而无需链接到实际物理单元(存储映像文件的单元除外)。


文件系统

文件系统被用来控制数据的存储和卷上进行检索。这是将数据组织成文件和目录而不是无序和不相关的字节存储的实用方法。

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

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

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

  • MacOS 使用APFS

  • Linux 通常默认为ext4

  • 安卓使用ext4。

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

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

在此处输入图片说明
来源

碎片化

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

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


引导支持

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


其他来源:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc787202(v=ws.10)https://en.wikiversity.org/wiki/IT_Fundamentals/2014/File_Systemshttps://www.howtogeek.com/school/using-windows-admin-tools-like-a-pro/lesson4/?PageSpeed=noscript ? https://www.lifewire.com/volume-vs-partition-2260237https://en.wikipedia.org/wiki/File_system_fragmentation