• 【Windows && Linux】计算机存储 | 磁盘分区 | 文件系统


    一、计算机的存储

    我前面的文章有详细的介绍:https://blog.csdn.net/weixin_43764974/article/details/131262247

    本文再补充一些。

    计算机的存储系统主要有以下内容构成,手机、嵌入式系统类似。

    1. 硬盘(secondary memory)
    2. 内存(Primary memory)
    3. ROM(Primary memory)
    4. CPU cache(Primary memory)

    很多资料都把RAM和ROM称为Primary memory,但也有把ROM除外的。CPU的缓存(cache)也是RAM(SRAM)。

    1.1 硬盘

    通常,硬盘(磁盘是一个更加广义的概念)的功能是存储你的数据,比如:操作系统、应用程序、用户文件(文档、图片、音视频)等等,作为这些功能的载体,硬盘的一个主要特点就是断电之后数据不会消失。
    在这里插入图片描述

    硬盘的另一个容易被忽视的功能就是:虚拟内存。 就是拿出硬盘的一部分存储空间作为内存来使用。在Windows中叫做虚拟内存,在Linux中叫做交换分区或者交换文件(和交换分区不同)。

    Windows的虚拟内存是默认自动设置好的:运行(win + r)中输入msinfo32即可看到。
    在这里插入图片描述
    Linux需要在安装系统的时候手动设置一下(不设置也行)。交换分区:即拿一个完整的作为电脑的虚拟内存,这个分区的类型是Linux swap,如果要修改交换分区的大小(尤其是增大),或许比较麻烦。而交换文件,则是拿一个文件(你可以理解成一个目录)作为虚拟内存,方便修改大小。

    • 交换分区的磁盘分区类型通常是82(Linux swap),不属于任何文件系统,也不包含任何文件或目录。
    • 交换文件的磁盘分区类型和文件系统类型取决于所在的文件系统。

    查看示例:swapon -v
    (1)交换文件(服务器)

    NAME      TYPE SIZE   USED PRIO
    /www/swap file   1G 932.8M   -2
    
    • 1
    • 2

    (2)交换分区(WSL Ubuntu)

    NAME     TYPE      SIZE USED PRIO
    /dev/sdb partition   2G   0B   -2
    
    • 1
    • 2

    虚拟内存的配置,本文就不提了,不是本文重点。


    计算机使用的硬盘主要分为固态硬盘(SSD)和 机械硬盘(HDD),这两年由于技术提升、市场变化、材料价格变化等原因,固态硬盘的价格已经很低了(三星 1TB大约500上下),如果还有厂商给电脑配HDD,直接给它一记🤗。

    SSD和HDD的主要区别(平常使用的电脑):

    1. 读写速度差异巨大。传统的HDD读写速度一般是小于100M/s,而现在主流SSD速度为5000M/s上下(上下指的是增减几千M/s),速度相差了近百倍(这里说的是通常情况,速度还与接口有关,或者与价格有关)。这个速度的差异是很明显的(如果你用过HDD),假如你有一个文件夹,里面有1万个子目录,数十万个文件,大小几十G,当你在HDD上删除它时,会很慢很慢(即使使用fastcopy)。
    2. 耐用性:SSD的耐用性远高于HDD,因为SSD没有任何机械部件,而HDD有很多机械部件。SSD不会受到震动、温度、湿度等环境因素的影响,而HDD可能会因为这些因素导致磁盘损坏或数据丢失。SSD也不会产生任何噪音或热量,而HDD可能会产生一定的噪音或热量。因此,SSD可以保证数据的安全和稳定,而HDD可能需要定期备份和维护。(一般都能用到你换新电脑)
    3. 价格:都很便宜了。
    4. 容量:都够用,SSD也有8T的,一般计算机有多个插槽的,个人使用容量都够了。

    SSD和HDD的工作原理和结构不同,它们支持的接口也有所不同。以下是SSD和HDD常见的接口类型:表格中是接口的速度,一般SSD的读写速度下至500M/s左右,上至7000M/s左右。

    SSD的接口类型说明
    SATA一种串行的接口,可以提供6Gb/s的传输速率,适用于大多数的笔记本和台式机。
    PCIe一种并行的接口,可以提供更高的传输速率,达到32Gb/s,适用于高性能的服务器和工作站。
    M.2一种小型的接口,可以使用SATA或PCIe作为协议,适用于超薄的笔记本和平板电脑。
    U.2一种类似于SATA的接口,但是可以使用PCIe作为协议,适用于需要更大容量和更高速率的服务器和工作站。
    SAS一种专业的接口,可以提供12Gb/s的传输速率,适用于企业级的存储系统。
    HDD的接口类型说明
    IDE/PATA一种并行的接口,可以提供133MB/s的传输速率,适用于旧式的笔记本和台式机。
    SATA一种串行的接口,可以提供6Gb/s的传输速率,适用于大多数的笔记本和台式机。
    SCSI一种专业的接口,可以提供640MB/s的传输速率,适用于高性能的服务器和工作站。
    SAS一种专业的接口,可以提供12Gb/s的传输速率,适用于企业级的存储系统。

    拓展:

    SSD(Solid State Drive)使用Flash存储技术。具体来说,大多数现代SSD使用NAND型(逻辑门的结构)Flash存储器。以下是一些关于SSD和Flash存储的详细信息:

    1. Flash存储

      • Flash存储是一种非易失性的存储介质,这意味着它可以在断电后保持数据。
      • NAND Flash是Flash存储的一种类型,它是SSD中最常用的存储技术。
    2. SSD的优势

      • 速度:SSD提供比传统硬盘驱动器(HDD)更快的读写速度。
      • 耐用性:由于SSD没有移动部件,它们比HDD更耐用,更能抵抗震动和冲击。
      • 低功耗:SSD通常比HDD消耗更少的能量,这使得它们在笔记本电脑和其他便携式设备中特别受欢迎。
      • 快速启动:SSD可以更快地访问数据,这意味着计算机和应用程序的启动时间更短。
    3. 不同的NAND Flash类型:买SSD的时候就会看到相应的标注。

      • SLC (Single-Level Cell):每个单元存储1位数据。它提供最高的耐用性和性能,但成本也最高。
      • MLC (Multi-Level Cell):每个单元存储2位数据。它提供了良好的平衡性能和成本。
      • TLC (Triple-Level Cell):每个单元存储3位数据。它比MLC更便宜,但性能和耐用性可能较低。
      • QLC (Quad-Level Cell):每个单元存储4位数据。它提供了更高的存储密度,但性能和耐用性可能进一步降低。
    4. 控制器:SSD中的控制器负责管理Flash存储器的读写操作,并处理坏块管理、垃圾回收和穿坏平衡等任务。

      现在比较好的SSD有:Samsung 980 pro,西数Black SN850,英特尔Optane P5800X等等。

    磁盘还有其他类型,比如外部硬盘、网络驱动器。

    1.2 内存

    计算机的内存(通常指随机存取存储器,RAM)是计算机系统中非常关键的一个组件,它的主要作用如下:

    • 数据存储和缓存

      1. 临时存储数据:内存用于临时存储计算机处理的数据和指令。

      2. 缓存:内存常用作缓存,以减少从硬盘或其他慢速存储介质读取数据的时间。

    • 程序执行

      1. 加载程序:当程序运行时,它的可执行文件和相关数据会被加载到内存中。

      2. 运行时数据处理:程序运行时产生的数据(如变量、数组等)也存储在内存中。

    • 提高效率

      1. 快速读写:内存的读写速度远快于硬盘和其他存储设备,这有助于提高计算机的运行效率。

      2. 多任务处理:足够的内存容量可以让用户同时运行多个应用程序。

      3. 操作系统:操作系统使用内存作为工作区域,用于加载内核、驱动程序和其他系统级程序。

      4. 虚拟内存:当物理内存不足时,部分内存内容会被移到硬盘上的“交换空间”,以模拟更大的内存空间。

    • 其他

      1. 图形渲染:在图形密集型应用(如游戏、视频编辑等)中,内存用于存储图形数据。

      2. 网络操作:在网络传输中,内存用于缓存接收和发送的数据包。

    我前面的文章对内存有详细的介绍:https://blog.csdn.net/weixin_43764974/article/details/131262247


    💫补充内容:

    内存的“通道”是一种用于描述内存与内存控制器(通常位于CPU内)之间数据传输方式的术语。通道实际上是一条物理或逻辑的数据传输路径。多通道内存配置可以提供更高的数据传输速度和更好的性能。

    常见的内存通道配置:

    1. 单通道(Single-Channel):在这种配置中,每个内存模块独立与内存控制器通信。这是最基础的配置方式。

    2. 双通道(Dual-Channel):两条内存模块作为一对,与内存控制器进行通信。这样可以提供两倍于单通道的带宽。

    3. 三通道(Triple-Channel):三条内存模块作为一组,与内存控制器进行通信。这种配置比较少见,通常用于某些特定的服务器或高端桌面系统。

    4. 四通道(Quad-Channel):四条内存模块作为一组,与内存控制器进行通信。这种配置通常用于高端桌面和服务器系统。

    如何实现多通道配置?

    1. 相同规格:为了实现多通道配置,通常需要使用相同或相似规格(如速度、容量、时序等)的内存模块。

    2. 正确的插槽:内存模块需要插入到主板上正确的内存插槽中。主板手册通常会提供详细的指导。

    内存条和SSD一样,也有不同的接口,DDR、DDR2、DDR3、DDR4和DDR5每一代都有其独特的插槽和针脚布局,以防止用户将不兼容的内存模块插入主板。(笔记本和桌面电脑也可能有差别)

    DDR(Double Data Rate,双数据速率)是一种常用于电脑内存(RAM)的技术标准。DDR技术允许在一个时钟周期内进行两次数据传输,从而提高了数据传输速度。DDR内存有多个版本,包括DDR、DDR2、DDR3、DDR4和最新的DDR5。每个版本都有其特定的性能特点、电压需求和物理设计。

    前面加个LP,比如LPDDR5,表示低功耗,用于移动设备,比如手机。

    版本速度范围 (MHz)电压 (V)主要应用场景备注
    DDR200 - 4002.5早期桌面和笔记本电脑较早的版本
    DDR2400 - 8001.8更新一些的桌面和笔记本电脑
    DDR3800 - 2133+1.5 (低电压版本为1.35)中期桌面、笔记本和服务器
    DDR42133 - 3200+1.2现代桌面、笔记本和服务器
    DDR54800 - 8400+1.1最新的桌面、笔记本和服务器最新版本,逐渐普及

    1.3 ROM

    电脑的ROM通常位于主板上面,而移动设备、嵌入式设备、网络设备可能会嵌入到Soc中。ROM通常是可编程的,比如固件更新。

    ROM存储的是固件,这是一种嵌入式软件,用于初始化硬件组件和启动操作系统。最常见的例子是BIOS(基本输入/输出系统)或其现代替代品UEFI(统一可扩展固件接口)。

    电脑开机,首先运行这里面的代码,然后才能启动你的系统。

    BIOS(Basic Input/Output System):

    1. 硬件初始化:在计算机启动时,BIOS会检测和初始化硬件组件,如CPU、RAM、硬盘驱动器、键盘和鼠标等。

    2. POST(Power-On Self-Test):执行自我检测以确保所有硬件组件都能正常工作。

    3. 引导加载器:从存储设备(如硬盘、SSD或USB驱动器)中加载操作系统到内存。

    4. 系统设置:提供一个用户界面,通常称为BIOS设置,允许用户配置硬件设置,如启动顺序、时钟速度和电压等。

    5. 硬件管理:提供与操作系统无关的低级硬件访问。

    UEFI(Unified Extensible Firmware Interface):

    1. 硬件初始化和测试:与BIOS类似,但通常更快,更高效。

    2. 安全引导(Secure Boot):增加了一个安全层,以防止恶意软件在引导过程中加载。

    3. 图形界面:提供更现代、更直观的用户界面,以进行各种设置和配置。

    4. 网络引导:允许通过网络加载操作系统。

    5. 硬盘支持:支持更大的硬盘和更现代的文件系统格式。

    6. 模块化架构:允许添加或删除特定的功能和驱动程序,使其更加灵活和可扩展。

    7. 与操作系统交互:UEFI能够与安装在计算机上的操作系统更紧密地交互,以提供更高级的功能,如远程故障诊断和修复。

    8. 快速启动:由于更高效的硬件初始化,UEFI通常能实现比BIOS更快的启动时间。

    1.4 CPU cache

    CPU的缓存(Cache)是CPU内部的一种特殊类型的高速存储器。它用于临时存储即将被CPU处理或经常被访问的数据和指令。由于CPU缓存非常接近处理器核心,其访问速度远高于主内存(RAM)和其他外部存储设备。

    内存条的主要类型有DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器),它们的主要区别是:

    • DRAM是一种使用电容来存储数据的内存条,它需要定期刷新电荷来保持数据的稳定,更便宜。DRAM的常见型号有DDR(双倍数据速率)系列,如DDR3,DDR4等,它们可以提供不同的传输速率和容量。
    • SRAM是一种使用触发器来存储数据的内存条,它不需要刷新电荷来保持数据的稳定,更昂贵。SRAM的常见型号有L1,L2,L3等缓存,它们可以提供更快的访问速度和更低的延迟。

    缓存是一种用于加速计算机中不同层次之间的数据交换的技术,它可以将频繁访问或最近访问的数据暂时存储在更接近处理器或更快速的设备上,从而提高系统的性能和效率。

    • CPU缓存是一种用于加速处理器和内存之间的数据交换的缓存,它通常使用SRAM作为内存条,并分为多个级别,如L1,L2,L3等。CPU缓存越靠近处理器,容量越小,速度越快;越远离处理器,容量越大,速度越慢。速度很快(单位是GB/s),价格更贵。
    • 补充:
      • 硬盘缓存是一种用于加速硬盘和内存之间的数据交换的缓存,它通常使用DRAM或闪存作为内存条,并集成在硬盘控制器上。硬盘缓存可以减少硬盘的寻道时间和旋转延迟,提高硬盘的读写速度。你去买硬盘,可以看到有“带1G缓存”这样的规格选项。

      • 浏览器缓存是一种用于加速浏览器和网站之间的数据交换的缓存,它通常使用硬盘或内存作为内存条,并由浏览器软件管理。浏览器缓存可以保存网页中的图片、文字、样式等内容,减少网络流量和加载时间。


    拓展:为什么cache是多级结构,并且容量都非常小?不仅仅是价格问题

    1. 速度与距离的权衡:
      • L1缓存:最接近CPU核心,因此访问速度最快。但由于成本和空间限制,其容量通常很小。
      • L2、L3缓存:距离CPU核心稍远,访问速度相对较慢,但容量更大。这些缓存层用于存储L1缓存未命中的数据。
        通过这种多级结构,系统能够更有效地利用缓存,从而提高性能。
    2. 成本因素
      高速缓存(尤其是L1缓存)使用的存储介质成本高昂。因此,设计成容量较小以控制成本。(cache是与CPU捆绑在一起的,没有单独出售,而CPU通常是2000多,cache占据CPU面积的30%到50%,总的容量一般十几MB,换算成我们的内存条32GB,价格肯定是贵了很多的)
    3. 命中率与局部性
      程序通常访问一小部分的数据或指令集。多级缓存结构利用了这种局部性原理,即最近访问过的数据和指令有更高的再访问概率。
    4. 热点数据:
      多级缓存可以更有效地存储和管理热点数据(频繁访问的数据)。L1缓存存储最热点的数据,而L2和L3缓存存储相对较少访问的数据。
    5. 能效
      更接近CPU的缓存(如L1)由于其高速性能通常消耗更多能量。通过使用多级缓存,系统可以在性能和能效之间找到一个平衡。
    6. 复杂性和可管理性:
      多级缓存增加了硬件和软件的复杂性,但这是为了优化性能和响应时间。多级结构允许更灵活的数据管理和更高的命中率。

    因此,多级缓存结构是一种权衡各种因素(包括速度、成本、能效和性能)以达到最优系统性能的方法。虽然各级缓存的容量相对较小,但它们在提高计算机系统性能方面起着至关重要的作用。

    二、磁盘分区类型

    2.1 Windows

    2.11 术语解释

    ▶ 扇区(HDD)

    磁盘的扇区(Sector)是存储设备的基本单位,用于数据的读取和写入。扇区通常是物理硬盘或SSD(固态硬盘)上的一个固定大小的区域,最常见的扇区大小是512字节或4096字节(即4K)。

    扇区的特点:

    1. 固定大小:每个扇区通常有固定的字节数,如512字节或4096字节。

    2. 连续存储:扇区在磁盘上是连续存储的,形成一个磁道(Track)。

    3. 编号:每个扇区都有一个唯一的编号,用于数据的定位。

    4. 错误检测:扇区通常包含一些额外的信息,如ECC(Error-Correcting Code),用于错误检测和修复。

    扇区与其他存储单位的关系:

    1. 簇(Cluster):文件系统通常不直接与扇区交互,而是使用更大的单位,称为簇。一个簇通常包含多个扇区。

    2. 分区(Partition):分区是由多个连续的扇区组成的,用于存储文件系统或其他数据。

    3. 磁道(Track)和柱面(Cylinder):磁道是由多个扇区组成的一个圆环,而柱面则是由多个磁道组成的。
      在这里插入图片描述

    SSD只有逻辑扇区、簇、分区这些概念。因为它和机械硬盘物理结构很不相同。

    扇区的重要性:

    1. 数据完整性:损坏的扇区(Bad Sector)会导致数据丢失或不可读。

    2. 性能:扇区的布局和大小会影响磁盘的读写性能。

    3. 兼容性:不同的扇区大小可能会影响操作系统和应用程序的兼容性。

    ▶ 卷、分区

    在计算机存储和文件系统的上下文中,“卷”(Volume)是一个存储容器,它由一个或多个物理磁盘的一部分或全部组成,并且具有一个特定的文件系统。卷是操作系统用于组织和管理数据的逻辑单位,它可以被挂载(即分配一个驱动器字母或挂载点),以便用户和应用程序可以访问其中的文件和目录。

    卷的主要特点:

    1. 文件系统:每个卷都有一个与之关联的文件系统(如NTFS、FAT32、exFAT等),该文件系统定义了如何在卷上存储、组织和检索数据。

    2. 大小和空间:卷有一个预定义的大小,这是其可用存储空间的上限。这个大小可以是物理磁盘的一部分,也可以跨越多个物理磁盘。

    3. 独立性:卷是独立于物理磁盘的。这意味着可以在不影响其他卷的情况下,格式化、扩展或删除一个卷。

    4. 挂载点:在Windows中,卷通常通过驱动器字母(如C:、D:等)进行访问,但也可以通过文件夹挂载点进行访问。

    5. 可扩展性:某些文件系统(如NTFS)允许动态地扩展或缩小卷的大小。

    6. 权限和安全:依赖于文件系统的类型,卷可以具有复杂的权限和安全设置,如NTFS权限或BitLocker加密。

    卷的类型:

    1. 基本卷:这是最简单和最常见的卷类型,通常只占用一个物理磁盘的一部分。

    2. 扩展卷:这种类型的卷可以跨越多个物理磁盘,用于创建一个更大的逻辑存储空间。

    3. 动态卷:这是Windows中更高级的卷类型,提供了更多的灵活性和管理选项,如镜像、条带化和RAID级别。

    4. 网络卷:这是一个远程存储空间,通常通过网络文件系统(如SMB或NFS)挂载。

    动态卷:

    卷类型定义特点用途
    简单卷单一物理磁盘上的一部分或全部存储空间。基础,无容错或性能优化。基础数据存储。
    跨区卷由两个或多个物理磁盘的存储空间组成。将多个磁盘合并成一个更大的逻辑卷。需要大量存储空间但不需要容错的场景。
    带区卷由两个或多个物理磁盘的相同大小的区段组成。数据被分割成多个块,并平均分布在所有磁盘上。需要高数据吞吐量的应用,如视频编辑。
    镜像卷需要两个物理磁盘,并在两个磁盘上保存相同的数据提供数据冗余。需要数据备份或高可用性的场景。
    RAID-5卷需要至少三个物理磁盘,并使用奇偶校验技术。提供数据冗余和性能优化。需要同时考虑性能和数据安全的企业环境。

    是不是看迷糊了?卷和分区是什么关系?

    简而言之,所有分区都是卷,但并非所有卷都是分区。卷提供了更多高级和灵活的存储选项。

    • 分区(Partition

      • 定义:分区是物理硬盘上的一个连续区域,它有自己的文件系统(如NTFS、FAT32等)。
      • 特点
        • 分区是物理硬盘上的一个独立部分。
        • 通常在硬盘初始化时创建。
        • 可以包含一个操作系统、多个文件系统或者是一个特定应用程序的数据存储区。
      • 限制:一般来说,一个物理硬盘可以被分成一个或多个分区。
    • 卷(Volume

      • 定义:卷是一个存储单元,它可以由一个分区组成,也可以由多个分区跨越多个物理硬盘组成。
      • 特点
        • 卷是逻辑存储单元,可以跨越多个物理硬盘
        • 可以动态地扩展和缩小。
        • 支持更多高级功能,如镜像、条带化和容错。
      • 类型:简单卷、跨区卷、带区卷、镜像卷、RAID-5卷等。

    关键区别

    1. 物理与逻辑:分区通常是物理硬盘的一部分,而卷是一个更为逻辑的概念。
    2. 灵活性:卷通常更为灵活,支持更多高级功能。
    3. 硬盘数量:分区通常存在于单个硬盘上,而卷可以跨越多个硬盘。

    通常情况下,我们的卷是没有跨越磁盘的,理解成分区也是可以的。


    ▶ 磁盘驱动器

    在Windows下,存储设备通常被分为"物理驱动器"(Physical Drives)和"逻辑驱动器"(Logical Drives)。

    物理驱动器(Physical Drives)

    • 定义:物理驱动器是实际的硬件设备,比如一个HDD(硬盘驱动器)或SSD(固态驱动器)。
    • 特点
      • 是实体硬件。
      • 可以被分为一个或多个分区。
      • 每个分区可以有自己的文件系统(如NTFS、FAT32等)。

    逻辑驱动器(Logical Drives)

    • 定义:逻辑驱动器是物理硬盘上的一个分区或者一个卷。在Windows资源管理器中,逻辑驱动器通常被赋予一个驱动器字母(如C:、D:等)。
    • 特点
      • 是物理驱动器上的一个逻辑部分。
      • 可以是一个单独的分区,也可以是一个跨越多个物理硬盘的卷。
      • 用于存储文件和目录结构。

    关键区别

    1. 物理与逻辑:物理驱动器是实际的硬件,而逻辑驱动器是硬件上的逻辑单位。
    2. 分区与卷:逻辑驱动器可以是一个分区,也可以是一个更复杂的卷。
    3. 驱动器字母:在Windows中,逻辑驱动器通常通过驱动器字母来访问。

    这些驱动器都需要相应的驱动程序,比如物理驱动器的:SATA驱动、NVMe驱动等,逻辑驱动器的:NTFS驱动、FAT32驱动、ext4驱动等。


    ▶ 磁盘性能
    • IOPS(Input/Output Operations Per Second):每秒输入/输出操作数,用于衡量磁盘性能。
    • 吞吐量(Throughput):数据传输速率,通常以MB/s(兆字节每秒)为单位。
    • 延迟(Latency):磁盘完成操作所需的时间。

    2.12 磁盘分区方案

    磁盘分区方案是一种将磁盘划分为不同的分区以满足不同的需求和目的的方法,它可以影响磁盘的性能和管理。Windows下常见的磁盘分区方案有MBR(主引导记录)和GPT(全局唯一标识分区表),它们的主要区别如下:

    磁盘分区方案说明
    MBR(主引导记录)一种传统的磁盘分区方案,它使用一个512字节的扇区来存储磁盘的分区信息和启动代码,每个磁盘最多可以有四个主分区或三个主分区加一个扩展分区。MBR的优点是兼容性好,适用于大多数操作系统和设备,缺点是容量受限,最多只能支持2TB的磁盘,也不能支持UEFI(统一可扩展固件接口)启动
    GPT(全局唯一标识分区表)一种新型的磁盘分区方案,它使用一个保护性MBR和一个GUID分区表来存储磁盘的分区信息和启动代码,每个磁盘可以有多达128个主分区。GPT的优点是容量大,可以支持超过2TB的磁盘,也可以支持UEFI启动,缺点是兼容性差,不适用于旧式的操作系统和设备。

    特殊分区:

    • 系统保留分区(System Reserved Partition):这通常是一个小分区,用于存储启动加载程序和其他系统文件。
    • 恢复分区(Recovery Partition):这个分区包含系统恢复工具和备份的操作系统映像。
    • EFI系统分区(EFI System Partition,ESP):这是在GPT磁盘上使用UEFI启动方式时必需的一个小分区,用于存储UEFI启动加载程序和其他启动文件。

    在这里插入图片描述

    卷,可以跨越磁盘,所以不同分区方案的磁盘(一般)不能建立跨区卷、镜像卷等等。

    GPT磁盘可以支持无限数量的分区。然而,在Windows中,GPT磁盘默认限制为最多128个分区。这个限制主要是由Windows操作系统设定的,而不是GPT分区方案本身的限制。

    卷标是用于识别磁盘卷的可选文本标签。卷标不受分区数量的限制,每个分区(或卷)都可以有自己的卷标。在Windows中,NTFS和FAT文件系统的卷标最多可以包含32个字符。

    在Windows操作系统中,驱动器字母"A"和"B"通常是为历史原因保留的,用于表示第一和第二个软盘驱动器。在早期的PC计算机中,软盘驱动器是主要的数据存储和交换手段,因此"A"和"B"被默认分配给这两个驱动器。

    2.2 Linux

    2.21 Linux的磁盘管理方式

    前面已经介绍了Windows下分区和卷的概念。分区是指在磁盘上划分出一块或多块连续的物理空间,用来存储数据。卷是指在分区的基础上,通过一定的软件或硬件技术,将一个或多个分区抽象为一个逻辑的存储单元,用来提供给操作系统使用。

    Linux下也有卷和分区的概念,不过分区的概念更常用。最常用的概念是:目录、文件系统、挂载。

    Linux不像Windows那样使用盘符或者卷标(C盘、D盘)来区分不同的卷(分区),所有的磁盘、分区都挂载于以根目录(/)为起点的某个目录下。

    根目录(/)在Linux和其他Unix-like操作系统中是文件系统层次结构的起点。它是一个逻辑概念,用于组织和访问所有文件和目录。根目录通常位于一个特定的磁盘分区上,这个分区被称为“根分区”。根分区是在Linux安装过程中指定的,所有的文件和目录都是相对于这个根目录进行组织的。而根分区就是操作系统的安装位置(或者说操作系统的核心文件存储位置)。


    磁盘识别:

    • Linux通常使用/dev目录下的设备文件来识别磁盘,例如/dev/sda(第一个SATA磁盘)、/dev/nvme0n1(第一个NVMe磁盘)等。在这里插入图片描述

    分区方案:

    • 也支持MBR和GPT。
    • 与Windows的引导加载器不同,Linux主要使用GRUB(GPT使用GRUB2),Windows使用Windows Boot Manager(主要任务是初始化硬件并加载操作系统内核到内存中)。

    2.22 Linux磁盘“卷”管理方式

    Windows使用基本卷、动态卷来管理卷;Linux下使用LVM(逻辑卷管理)和RAID(冗余磁盘阵列)来管理卷。

    基础卷(Basic Volume):

    • 物理分区(Physical Partition):这是最基础的卷类型,直接对应于磁盘上的一个分区。

    LVM(Logical Volume Management):

    1. 物理卷(Physical Volume,PV:一个物理磁盘或者一个磁盘分区,用作LVM的基础构建块。

    2. 卷组(Volume Group,VG:由一个或多个物理卷组成,作为逻辑卷的存储池。

    3. 逻辑卷(Logical Volume,LV:从卷组中分配出来的存储空间,可以被格式化并挂载使用。

      • 线性逻辑卷(Linear Logical Volume):简单地将多个物理卷串联在一起。
      • 条带逻辑卷(Striped Logical Volume):数据会被分条存储在多个物理卷上,以提高性能。
      • 镜像逻辑卷(Mirrored Logical Volume):数据会被复制到多个物理卷上,以提供冗余。

    在这里插入图片描述
    1

    RAID(冗余磁盘阵列):

    1. RAID 0(条带卷):数据被分条存储在两个或更多磁盘上,以提高性能,但没有冗余。

    2. RAID 1(镜像卷):数据被复制到两个或更多磁盘上,以提供冗余。

    3. RAID 5(带奇偶校验的条带卷):使用至少三个磁盘,提供冗余和性能。

    4. RAID 6(双奇偶校验的条带卷):使用至少四个磁盘,提供更高级别的冗余。

    5. RAID 10(1+0,镜像和条带):结合了RAID 1和RAID 0,提供冗余和性能。

    其他:

    1. 网络卷(Network Volume):例如NFS(网络文件系统)或SMB(服务器消息块)卷,这些卷实际上位于网络上的其他服务器上。

    2. 循环卷(Loopback Volume):一个文件被用作块设备,通常用于创建可移动的文件系统或用于加密。

    3. 加密卷(Encrypted Volume):使用如LUKS(Linux统一密钥设置)等技术加密的卷。

    Windows和Linux下,如果你只用一块磁盘,或许不需要使用“卷”。使用卷,通常是多块磁盘的情况下。主要目的和优势是:

    • 增加数据冗余,比如使用镜像卷,一块磁盘坏掉了,另一块磁盘上还有相同的数据。
    • 充分利用存储空间
    • 备份和恢复、性能优化、数据加密。

    三、文件系统

    3.1 基本概念

    把磁盘分区或者创建卷后,这些分区或逻辑卷处于一个“未格式化”的状态。这意味着它们还没有被赋予一个文件系统,因此操作系统还不能用它们来存储和管理文件。

    格式化:

    用于在磁盘分区或逻辑卷上创建新的文件系统。格式化通常会执行以下操作:

    1. 删除原有数据:格式化通常会删除分区或逻辑卷上的所有现有数据。然而,也有一些“快速格式化”的选项,这些选项不会真正删除数据,而只是删除文件系统的元数据,使得数据看似“消失”。

    2. 初始化文件系统结构:格式化会在磁盘上创建新的文件系统结构,包括目录、索引和其他元数据。

    3. 设置初始参数:格式化还会设置文件系统的一些初始参数,如块大小、权限、标签等。

    4. 数据完整性检查:某些文件系统在格式化过程中还会进行磁盘完整性检查。

    总的来说,格式化是一个准备磁盘分区或逻辑卷以供存储和管理数据的过程。这通常会删除所有现有数据(除非进行快速格式化)并设置新的文件系统结构。所以,在格式化之前,务必备份所有重要数据。

    文件系统:

    文件系统(File System)是一种用于存储、检索和管理数据的方法。它在磁盘或其他类型的存储媒体上创建一个结构化的环境,以便用户和操作系统能够有效地组织和访问文件。

    文件系统包括:

    • 目录结构:用于组织文件和子目录。
    • 文件元数据:包括文件名、创建时间、修改时间、权限等信息。
    • 数据块:实际存储文件内容的磁盘区域。
    • 索引和表:用于快速查找文件和目录的数据结构。
    • 冗余和错误检测:某些高级文件系统(如ZFS、Btrfs)包括用于数据完整性和恢复的机制。
    • 其他特性:如软硬链接、快照、数据压缩和加密等。

    分区和卷的元数据:

    大多数文件系统都有一种标识方法,通常存储在分区或卷的元数据中。使用df、fdisk之类的命令就可以读取相应的信息。

    分区的元数据可能包括:

    • 分区类型:例如,主分区(Primary)、扩展分区(Extended)或逻辑分区(Logical)。
    • 分区标识符:通常是一个唯一标识符,用于区分不同的分区。
    • 文件系统类型:如NTFS、ext4、FAT32等。
    • 起始和结束扇区:描述分区在磁盘上的物理位置。
    • 分区大小:通常以扇区数或字节为单位。
    • 分区标签和名称:可选的描述性信息。
    • 引导标志和参数:如果分区用于引导操作系统。
    • 权限和安全设置:在某些高级设置中。

    卷(逻辑卷)的元数据可能包括:

    • 卷名称和标识符:用于在卷组(Volume Group)中唯一标识逻辑卷。
    • 文件系统类型:与分区类似,描述了用于格式化卷的文件系统。
    • 卷大小和布局:包括卷的总大小以及任何条带或镜像设置。
    • 快照和版本信息:如果卷支持快照或其他版本控制机制。
    • 数据冗余和恢复参数:例如,在RAID或其他高可用性设置中。
    • 加密设置:如果卷已经加密。
    • 其他自定义属性:如性能优化参数、压缩设置等。

    这些元数据用于多种目的,包括分区识别、文件系统挂载、数据恢复和系统引导等。因此,损坏的分区或卷元数据通常会导致严重的问题,包括数据丢失。这也是为什么强烈建议在进行任何磁盘操作之前先进行备份的原因。

    3.2 文件系统类型

    操作系统文件系统主要特点
    WindowsNTFS支持大文件、文件权限、加密和压缩;适用于Windows家族的操作系统。
    FAT32兼容性好,但不支持大于4GB的文件和文件权限。
    exFAT适用于大文件和大存储设备,但不支持文件权限。
    Linuxext4支持大文件和文件系统,具有日志功能,适用于各种Linux发行版。
    ext3ext4的前身,具有日志功能但性能稍差。
    ext2不具有日志功能,适用于小型或嵌入式系统。
    Btrfs支持文件系统快照、数据池等高级功能。
    XFS适用于大数据和并行处理,常用在高性能计算环境中。
    ZFS高级文件系统,支持数据完整性检查和自动修复等功能。

    3.3 文件系统的高级功能

    高级功能描述
    数据完整性和恢复
    - Checksums(校验和)自动检测和修复文件或元数据的损坏。
    - Snapshots(快照)在特定时间点创建文件系统的只读副本,用于数据恢复。
    性能优化
    - Caching(缓存)存储频繁访问的数据以提高读取速度。
    - Prefetching(预取)预先加载可能需要的数据。
    数据冗余和容错
    - RAID(冗余磁盘阵列)使用多个磁盘提供数据冗余。
    - Mirroring(镜像)在多个位置存储相同的数据。
    数据组织和管理
    - Quotas(配额)限制用户或组可以使用的磁盘空间。
    - ACLs(访问控制列表)精细控制文件和目录的访问权限。
    数据压缩和去重
    - Compression(压缩)在存储前压缩数据。
    - Deduplication(去重)删除重复的数据块。
    可扩展性和灵活性
    - Dynamic Resizing在不中断服务的情况下增加或减少文件系统的大小。
    - Tiering(分层存储)根据数据访问频率将数据存储在不同类型的存储介质上。
    安全性
    - Encryption(加密)对存储的数据进行加密。
    - Auditing(审计)记录文件访问和更改的历史。
    其他
    - Copy-on-Write只有在数据需要修改时才复制数据,有助于节省存储空间和提高效率。
    - Journaling(日志)记录未完成的更改,以便在系统崩溃后恢复。

    3.31 日志

    在文件系统中,“日志”(Journaling)是一种用于增强文件系统可靠性和完整性的技术。

    当文件系统进行更改(如创建、删除或修改文件和目录)时,这些更改首先会被记录在一个特殊的区域,称为"日志"(Journal)。这样做的目的是为了在系统崩溃或突然断电等异常情况下,能够更容易地恢复文件系统到一个一致的状态。

    如何工作?

    1. 开始事务:当有一个或多个更改需要应用到文件系统时,这些更改会被组合成一个"事务"。

    2. 写入日志:在更改实际应用到文件系统之前,这个事务会首先被写入到日志中。

    3. 应用更改:一旦事务被成功写入日志,它会被应用到文件系统。

    4. 标记完成:最后,日志会被更新以标记这个事务已经成功完成。

    优点

    • 快速恢复:在系统崩溃后,只需要查看未完成的事务并完成它们,而不需要检查整个文件系统。

    • 数据完整性:通过使用日志,文件系统可以确保即使在面临突然断电或系统崩溃等问题时,也能维护数据的完整性。

    常见的支持日志功能的文件系统包括NTFS(Windows)、ext3/ext4(Linux)等。这种机制大大提高了文件系统的健壮性和可靠性。

    注意:在支持日志功能(Journaling)的文件系统中,日志通常是存储在文件系统内部的一个特殊区域,而不是作为一个独立的、用户可直接访问的文件。这个特殊区域被文件系统管理,用于记录即将进行或已经完成的文件操作事务。

    我们常用的是系统的运行日志。

    Windows和Linux操作系统都有各自的日志记录机制,用于跟踪系统和应用程序的活动。这些日志对于系统管理员和技术支持人员来说是非常有用的,因为它们可以帮助诊断问题、监控系统状态和安全性,以及了解系统的运行情况。

    Windows

    1. 事件查看器(Event Viewer):Windows使用事件查看器来集中管理各种日志,包括系统日志、应用程序日志和安全日志等。
    2. 日志文件:除了事件查看器,Windows还在其文件系统中存储各种日志文件,通常位于C:\Windows\System32\winevt\Logs目录下。
    3. PowerShell:可以使用PowerShell命令来查询和分析日志。
    4. 第三方工具:也有许多第三方日志管理和分析工具可用于Windows。

    Linux

    1. /var/log/目录:Linux系统通常在/var/log/目录下存储日志文件,如syslogkern.logauth.log等。
    2. journalctlsystemd-journald:在使用systemd的Linux发行版中,journalctl命令和systemd-journald服务用于管理和查询系统日志。
    3. dmesg命令:用于查看内核相关的消息。
    4. 日志旋转(Log Rotation):Linux通常使用logrotate工具来自动管理日志文件,包括删除旧日志和压缩日志等。
    5. 第三方工具:Linux也有各种第三方日志管理和分析工具,如rsyslogGraylog等。

    3.32 快照

    文件系统的"快照"(Snapshot)是文件系统在某一特定时间点的只读副本(一般来说,快照不是一个完整的数据副本,而是一个记录了某一时间点文件系统状态的元数据结构)。这个功能主要用于数据备份和恢复,以及其他需要访问历史数据状态的应用场景。

    如何工作?

    • 触发快照:管理员或自动任务触发创建一个快照(并不是创建、修改、删除文件就会触发快照。比如Windows通常会在系统更新、安装软件的时候触发快照)。
    • 只读副本:文件系统在当前状态下创建一个只读副本,这个副本包含了触发快照时所有文件和目录的状态
    • 增量存储:许多现代文件系统使用增量方式存储快照,即只保存与上一个快照不同的数据,以节省存储空间。
    • 访问和恢复:用户或管理员可以访问快照中的文件和目录,也可以从快照恢复数据。

    主要用途

    • 数据备份:定期创建快照可以作为一种数据备份策略。

    • 数据恢复:如果主文件系统出现问题或数据丢失,可以从之前的快照中恢复。

    • 审计和分析:通过比较不同时间点的快照,可以进行数据审计和分析。


    文件系统的日志(Journaling)和快照(Snapshot)都是用于数据恢复和系统完整性的功能,但它们的工作原理、用途和效率有所不同。

    文件系统日志(Journaling)

    1. 工作原理:日志文件系统会在执行任何文件更改操作之前,先将这些操作记录到一个“日志”(Journal)中。如果操作中断或失败,系统可以使用日志来恢复到一致的状态。
    2. 用途:主要用于快速恢复系统到一致状态,特别是在系统崩溃或突然断电等情况下。
    3. 效率:由于日志通常只记录变更操作,所以它通常比较轻量级,对系统性能的影响相对较小。
    4. 局限性:日志通常只能用于恢复最近的操作,并不能用于回滚到很久以前的状态。
    5. 自动化:日志通常是自动维护的,不需要用户干预。

    文件系统快照(Snapshot)

    1. 工作原理:快照是文件系统在某一时间点的只读副本。它通常使用增量存储,只保存自上一个快照以来发生的更改。
    2. 用途:用于数据备份,版本控制,以及从特定时间点恢复数据。
    3. 效率:创建快照通常是一个快速的操作,但如果有大量的快照,可能会占用更多的存储空间。
    4. 局限性:与日志不同,快照可以用于恢复到任何之前创建快照的时间点。
    5. 自动化:快照可以手动或通过定时任务自动创建。

    1. https://www.redhat.com/sysadmin/create-volume-group ↩︎

  • 相关阅读:
    python经典百题之矩阵对角线之和
    理解并掌握C#的Channel:从使用案例到源码解读(一)
    线程安全问题的原因和解决方案大杂烩
    Pr:添加字幕轨道
    百度收录 百度收录有什么好方法吗
    day51_mybatis
    i7 1255u和i5 1135G7哪个好
    《向量数据库指南》——用 Milvus Cloud和 NVIDIA Merlin 搭建高效推荐系统结果
    10月20日,每日信息差
    用Java写PTA 7-11 设计一个能处理异常的Loan类
  • 原文地址:https://blog.csdn.net/weixin_43764974/article/details/132463833