网站怎么做百科,网站是哪个公司做的好处,网站稳定期怎么做,唐山网站建设正规公司1.了解硬件 -- 磁盘
硬盘有机械硬盘(HDD)和固态硬盘(SDD)
接下来#xff0c;主要以机械磁盘为例(更具代表性#xff0c;在linux系统层面#xff0c;无论是机械磁盘还是固态硬盘#xff0c;文件的读取和写入都iNode(索引节点)管理文件的元数据和实际数据块) 1.盘片#x…1.了解硬件 -- 磁盘
硬盘有机械硬盘(HDD)和固态硬盘(SDD)
接下来主要以机械磁盘为例(更具代表性在linux系统层面无论是机械磁盘还是固态硬盘文件的读取和写入都iNode(索引节点)管理文件的元数据和实际数据块) 1.盘片Platter - 存储数据 是硬盘的存储介质通常由铝合金或玻璃材料制成并且涂有一层薄薄的磁性材料。硬盘的每个盘片都是圆形的并且水平堆叠在一起多盘结构。每个盘片的表面都有两面都能用来存储数据顶部和底部都配有读写磁头。2.磁道 Track- 数据的物理组织方式是硬盘盘片表面的一圈圈同心圆它们是数据存储的物理路径。每个盘片都被划分为多个磁道这些磁道从盘片的内圈向外圈辐射排列。磁头在读取或写入数据时会定位到特定的磁道。3.扇区Sector- 数据存储的最小单位是硬盘磁道上的最小数据存储单元。每个扇区通常包含 512 字节或 4KB 的数据。硬盘在每个磁道上将数据划分成多个扇区所有的数据都是通过这些扇区进行管理和存储的。4.磁头Read/Write Head- 读取和写入数据是硬盘的关键部件负责在盘片的表面读取和写入数据。硬盘通常每个盘片都有两个磁头一个用于盘片的上面另一个用于盘片的下面这些磁头通过 悬臂臂actuator arm 安装在盘片上方或下方的轨道上。5.主轴Spindle- 驱动磁盘旋转是硬盘的旋转轴用于支撑所有的盘片并使它们按一定速度旋转。硬盘的盘片通过主轴连接在一起并由主轴电机驱动旋转。硬盘的转速通常以 RPM每分钟转数为单位直接影响磁盘的性能。常见的转速有 5400 RPM、7200 RPM、10000 RPM 和 15000 RPM。转速越高数据读取速度也越快。6.磁头定位器 Actuator - 精确控制磁头的位置是一种驱动机制用于精确控制磁头在盘片上的位置。它通过一个电磁装置移动磁头在盘片上方和下方的不同磁道之间。磁头定位器通常由一个 磁臂actuator arm 和一个 伺服电机voice coil motor, VCM 组成。 2.CHS寻址 CHSCylinder-Head-Sector 寻址方式通过柱面(磁道)、磁头和扇区的组合来定位硬盘上的数据。
CHS 寻址方式的工作原理 柱面Cylinder硬盘通常有多个盘片每个盘片都有上面和下面两个磁头。一个柱面由相同位置的多个磁头组成。例如如果硬盘有 4 个盘片则每个柱面上会有 4 个磁道一个磁头对应一个磁道。 磁头Head每个盘片面上有一个磁头磁头定位器Actuator控制磁头的位置。当需要访问某个特定的磁道时磁头定位器将磁头移动到目标磁道。 扇区Sector每个磁道上被划分为若干个扇区通常每个扇区的大小是 512 字节。扇区是数据的最小存储单元。
CHS 寻址的具体示例
假设我们有一个硬盘分成以下结构
磁盘有 4 个磁盘面即 4 个磁头。每个磁道上有 20 个扇区。硬盘共有 200 个磁道。
在 CHS 寻址 下如果我们需要访问第 5 个柱面、使用第 2 个磁头并且访问第 10 个扇区那么我们需要的参数就是
Cylinder第 5 个柱面第 5 个磁道组表示硬盘中相同位置的所有磁头例如磁头 1, 磁头 2, ...。Head第 2 个磁头指向第二个盘片。Sector第 10 个扇区。
因此C5, H2, S10 对应于硬盘中的具体数据位置。
3.LBA寻址
CHS 寻址的局限性
寻址空间有限由于硬盘物理结构的限制CHS 寻址方式能够支持的最大磁道数、磁头数和扇区数是有限的。例如某些早期硬盘的 CHS 地址空间有限制不能超出某个值例如最大 1024 柱面16 个磁头和 63 个扇区这限制了硬盘的最大容量。不适应大容量硬盘随着硬盘容量的增加CHS 寻址方式无法满足更大硬盘的寻址需求因此它逐渐被 LBALogical Block Addressing 取代。LBA 采用线性地址模式不依赖于物理结构支持更大的硬盘容量。
CHS 寻址方式的替代方式
由于 CHS 寻址方式存在局限性LBALogical Block Addressing 寻址方式被广泛采用。LBA 使用单一的逻辑块编号来表示硬盘上的每个数据块消除了柱面、磁头、扇区之间的物理结构映射使得硬盘可以支持更大的存储容量。 我们可以将磁头进行编号(0.1.2.3......)将盘片想象成磁带的卷起来的样子磁带是可以拉直盘片我们虽然无法物理将其拉成直线但是将其抽象成一条直线。多个盘片可以根据磁头编号依次将其排列。为了管理这条直线可以用线性数组的形式将其管理而每个数组的大小就是扇区的大小。 LBALogical Block Addressing逻辑块寻址是一种硬盘存储设备的数据寻址方式它将硬盘的数据视为一个逻辑上的连续块而不是依赖于物理位置如柱面、磁道和扇区。在LBA方式下硬盘上的每个数据块都有一个唯一的逻辑地址LBA这一地址用于标识存储数据的物理位置。 主要特点 逻辑地址LBA采用的是一个单一的连续数字地址这个地址从0开始表示硬盘上的第一个数据块。简化管理LBA隐藏了磁盘的物理结构柱面、磁道、扇区操作系统和应用程序通过LBA进行存取简化了磁盘管理和数据存取。扇区为基本单位LBA通常是以扇区为单位进行寻址通常一个扇区为512字节。 工作原理 在LBA寻址中操作系统或应用程序通过LBA地址指定某个数据块硬盘控制器则负责将逻辑地址转换为物理位置。硬盘内部有一个映射表负责将LBA地址映射到具体的磁道和扇区。 优点 透明性用户和操作系统不需要关心硬盘的物理结构LBA将硬盘视为一个大块存储区域。简化操作硬盘控制器负责管理物理结构的转换简化了数据读写操作。 LBA方式常见于现代硬盘HDD和固态硬盘SSD中是硬盘与操作系统之间最常用的数据寻址方式 照上图如果我们想找第28888扇区在那个磁头的那个柱面
每个盘片有1w扇区28888 / 10000 2 在2号磁头 每个盘片有20磁道8888 % 20 8 第8磁道 每个磁道有500扇区8888 / 20 444 第444扇区
通过LBA将磁盘抽象为很长的线性数组以特定算法将(如上)将LBA转换为我们的CHS进行我们物理寻址。
4.文件系统
了解了硬件和寻址方式那么这么大的物理内存我们应该怎么管理呢四个字“分而治之”。 假设我们有1T内存我们如何管理呢。
4.1 分区
假设硬盘分为 C盘、D盘 和 E盘具体的分区方式根据操作系统、用途、数据存储需求等因素而有所不同。下面是一种常见的分区方式
1. C盘系统盘
大小通常分配硬盘的前几十GB例如100GB - 200GB以确保操作系统和基础应用有足够的空间。内容 操作系统包括操作系统本身如Windows、Linux等操作系统的核心文件和系统目录如Windows中的C:\Windows。系统文件包括系统启动所需的引导加载程序例如MBR/GPT分区表和其他低级别的操作系统文件。系统应用包括操作系统自带的应用程序如Windows自带的计算器、资源管理器、控制面板等。注册表Windows或配置文件Linux操作系统的配置信息。用户配置文件如操作系统用户的桌面配置、默认文档位置等。
2. D盘数据盘
大小可以分配硬盘的剩余空间的中间部分假设大约500GB可以根据需求调整。内容 用户数据包括所有用户生成的数据如文档、图片、视频、音乐等。应用程序数据安装的第三方应用程序的支持文件、数据库文件、缓存文件等。比如安装在D盘的软件可能会在该分区创建文件夹用于存储应用配置文件、用户数据、日志等。游戏文件如果用户在该盘安装游戏游戏的数据和文件例如安装包、游戏存档、DLC等将存储在该分区中。下载目录通常会将浏览器下载的文件、临时安装包等存放在此分区。
3. E盘备份盘或媒体文件盘
大小剩余空间的最后一部分假设为300GB可以根据需求调整。内容 备份文件包括操作系统的备份、个人文件的备份以及其他重要数据的备份文件。媒体文件包括大容量的文件如视频、音频文件、图片库等。用户通常会将不常用但需要存档的文件存放在此分区。镜像文件操作系统或硬盘的镜像文件例如系统恢复点、磁盘映像等也可以存储在此分区。
4. 隐藏分区或系统恢复分区
大小通常为几十GB如30GB - 100GB该分区通常会被操作系统隐藏不会直接显示在资源管理器中。内容 操作系统恢复工具存放系统恢复和重装所需的文件。Windows中通常会有一个恢复分区其中包含Windows恢复环境Windows RE和一些系统修复工具。制造商工具一些厂商会预装特定的工具和恢复映像用于恢复出厂设置。
5. 其他可能的分区 Linux系统分区如果使用Linux 在Linux中操作系统通常会有多个分区如 /根分区包含所有操作系统文件。/home存储用户文件和个人数据。swap交换分区用于虚拟内存。/boot存储启动文件。这些分区可以根据需要进行划分。 磁盘加密分区 如果使用加密例如BitLocker、LUKS等可能会有专门的加密分区或加密管理区域用于存储加密的操作系统文件或用户数据。
总结
在1TB的硬盘上操作系统通常会将硬盘分为多个分区如C盘、D盘、E盘等每个分区根据不同的使用场景包含不同的内容
C盘操作系统和系统应用程序。D盘用户数据和第三方应用程序的文件。E盘备份文件、媒体文件等。隐藏分区系统恢复文件和工具。
硬盘的具体分区方式可以根据用户的需求如数据管理、操作系统使用等进行调整。
4.2 BLock group
每个区里面又有许多BLock group在文件系统的设计中block group块组是文件系统的一种管理单位主要用于高效组织和存储文件数据。块组block group是由若干个数据块data blocks和一些辅助数据结构如inode表、超块等组成的逻辑单元用于管理文件的存储、访问和文件元数据的维护。 超级块Superblock 存储整个文件系统的信息比如文件系统的大小、块大小、文件系统的状态等。通常超级块在整个文件系统中有多个副本。 块位图Block Bitmap 用于跟踪哪些数据块已被分配哪些是空闲的。每个块组都有一个块位图通过它操作系统能够快速查找可用的空闲块。 inode位图Inode Bitmap 用于管理inode索引节点的分配情况。inode包含文件的元数据如文件的所有者、权限、时间戳、数据块的位置等。 inode表Inode Table 该表存储了该块组中所有文件的inode。每个文件都有一个对应的inode其中存储着该文件的所有信息但不包括文件的名称。文件的名称通常在目录结构中管理。 数据块Data Blocks 实际存储文件内容的数据块。每个数据块通常是固定大小如4KB文件内容存储在这些数据块中。 目录表Directory Block 用于存储目录结构。一个目录文件实际上是一个特殊类型的文件它的内容是指向文件或子目录的链接。目录文件也存储在数据块中包含文件名和其对应的inode编号 如何通过Block Group管理文件
每个块组的作用是管理一部分磁盘空间并保持与该部分相关的文件系统信息。具体来说通过以下方式来管理文件 分配块当文件被创建或扩展时操作系统会查找块组中未被使用的空闲数据块。如果一个块组中的数据块已满文件系统会尝试在其他块组中找到空闲块。 分配inode每当创建新文件时操作系统会为该文件分配一个inode。在EXT4文件系统中inode表存储在每个块组内每个块组有自己的inode表记录了该组内所有文件的inode信息。 优化局部性块组的设计能够优化数据的局部性。即相关文件尤其是同一目录下的文件通常会被分配到同一个块组中这有助于减少磁盘寻址时的开销从而提高文件系统的性能。 块组内的分配与回收当文件删除时相应的inode和数据块会被回收到块组的空闲区。操作系统会更新块位图和inode位图以反映最新的磁盘空间状态。 平衡使用通过块组管理操作系统能够确保硬盘各个区域的空间得到均匀使用避免某些区域过度分配而其他区域则没有被有效利用。这也有助于提升文件系统的性能和可扩展性。
举个例子EXT4文件系统
假设有一个1TB的硬盘分配了一个EXT4文件系统。EXT4文件系统会将硬盘分割成多个块组每个块组可能包含数千个数据块、inode以及其它辅助信息如块位图、inode位图等。
如果一个文件被创建它的inode会被分配到一个块组中的inode表并且文件的内容会被存储在该块组中的数据块中。当一个文件扩展时新的数据块可能会被分配到当前块组的空闲区域也有可能被分配到另一个块组具体取决于磁盘的空闲空间状态。当文件被删除inode和数据块会被回收重新标记为可用供新文件使用。
优点和挑战
优点
局部性优化通过将相关文件存储在同一块组中能够减少磁盘寻址的开销提高读写性能。高效的空间管理块组内的位图帮助操作系统快速判断哪些块和inode是空闲的从而高效地分配磁盘空间。容错性文件系统在每个块组内保留多个副本如超级块的副本如果某个块组出现损坏文件系统仍可以恢复。
挑战
块组大小和分配策略块组的大小设置对文件系统的性能有重要影响。如果块组太小可能会增加管理开销如果块组太大可能会导致磁盘碎片和性能下降。块组间的负载不均衡如果某些块组使用过度而其他块组空闲可能会导致文件系统的性能不均衡。
总结
在现代的文件系统中块组Block Group是一种重要的管理单位尤其在EXT4等文件系统中。它通过将硬盘分成多个块组管理文件数据的存储、访问以及元数据的组织。每个块组包含数据块、inode表、位图等信息从而实现高效的空间管理和文件访问。通过这种设计文件系统能够优化磁盘的使用提高性能并减少磁盘碎片。
注在linux中文件属性和文件是分开存储的
如何通过文件属性找到文件