【问题标题】:Device vs Partition vs File System vs Volume: how do these concepts relate to each other, accurately设备 vs 分区 vs 文件系统 vs 卷:这些概念如何准确地相互关联
【发布时间】:2014-08-17 06:32:28
【问题描述】:

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

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

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

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

不是很幸运on Google

我最初的假设:

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

【问题讨论】:

    标签: filesystems storage partition volumes


    【解决方案1】:

    让我们从一些基础开始:

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

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

    这两个东西就是你所需要的:1. 一个存储/读取数据的设备 2. 如何处理数据的规则

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

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

    • 文件系统:文件系统只是一个层,以便为字节获取一些含义。文件系统中的文件只是数据开始的位置、长度以及处理它的更简单方法的信息('diary.txt' 比 '4000 Bytes started at Byte 500' 更容易处理)。路径和树视图只是为了更方便地查找和组织文件。

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

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

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

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

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

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

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

    例子:

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

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

    【讨论】:

    • @mins 这个答案对你有帮助还是我错过了一些重要的事情?
    【解决方案2】:

    整体图(Windows样)


    图标来源:vector.me


    磁盘、驱动器、分区、卷

    磁盘或驱动器:用于存储数据的物理设备。 Drive seems more generic than disk 与存储技术有关,例如有硬盘驱动器、软盘驱动器和USB闪存驱动器。

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

    分区和卷:经常互换使用,但不一样,可以有multiple volumes within a single partition

    • partition 是具有特定大小的磁盘块(例如硬盘的特定扇区范围。磁盘分区是将磁盘划分为多个块的行为,就好像有多个磁盘一样。某些分区可能依次划分为多个独立的logical chunks,必须支持所使用的分区方案。

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

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

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

    MBR

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

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

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

    GPT

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

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

    图片

    image 是将卷(文件和其他数据)快照到单个文件中,类似于 zip 文件。一个卷中的图像可以在另一个卷上展开,也可以“挂载”或“附加”一个图像,使其与任何其他卷一样,或显示为现有卷的目录。

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


    文件系统

    file system 用于控制数据在卷上的存储和检索方式。这是将数据组织成文件和目录而不是无序和不相关的字节存储的实用方法。

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

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

    现代 Windows 版本使用NTFS。 NTFS 增加了对元数据的支持,access control list(权限)和journaling

    • MacOS 使用APFS

    • Linux 通常默认为ext4

    • Android 使用 ext4。

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

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


    Source

    碎片化

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

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


    启动支持

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


    其他来源:

    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=noscripthttps://www.lifewire.com/volume-vs-partition-2260237https://en.wikipedia.org/wiki/File_system_fragmentation

    【讨论】:

      【解决方案3】:
      • 设备、物理存储设备
      • 分区,分区表中定义的存储空间切片
      • 文件系统,将文件映射到存储地址的表
      • 卷,文件系统(文件表)位于最开始的任何存储

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

      • C:、D:、E: 是 Windows 卷(也称为驱动器)
      • 任何获得mounted 的东西都是 Linux 中的卷

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

      当新设备的存储能力大大扩展时,需要在逻辑上将设备划分为更小的部分以服务于不同的目的。因此创建了一个分区表来将设备分成多个分区。

      只要文件系统在分区(或旧设备)的开头创建并可供用户使用,它就会成为一个卷。在分区上创建文件系统称为格式化。


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

      【讨论】:

        猜你喜欢
        • 2013-06-29
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        相关资源
        最近更新 更多