个人主页:chian-ocean
文章专栏-Linux
媒介:
Linux 文件体系是 Linux 内核管理数据存储和访问的核心部门,它提供了一种布局化方式来构造、存储和检索数据。Linux 支持多种文件体系范例,如 ext4、XFS、Btrfs、FAT32、NTFS 等。
机器磁盘(HHD)
HHD构成
机器磁盘(硬盘)由以下几个紧张部门构成:
- 盘片:存储数据的圆形盘片,外貌涂有磁性质料,数据通过磁头读取或写入。
- 磁头:用于读写数据的部件,悬挂在磁头臂上,移动时在盘片外貌上方“飞”行。
- 磁头臂:支持磁头的臂,控制磁头在盘片外貌上定位。
- 主轴电机:驱动盘片旋转的电机,通常以7200转/分钟或5400转/分钟的速率旋转。
- 控制电路:硬盘的控制器,处置处罚数据读写哀求并控制磁头、盘片和电机的利用。
- 外壳:硬盘的金属外壳,掩护内部组件免受外界侵害。
盘片构造
左侧 (a) 单个盘片的布局:
- 主轴(中心蓝色部门):用于驱动盘片旋转。
- 磁道(同心圆):数据存储在盘片外貌上的磁道中,每个磁道由多个扇区构成。
- 间隙:磁道之间存在间隙,以克制数据干扰。
右侧 (b) 多个盘片的布局:
- 多个盘片(盘片 0、盘片 1、盘片 2):硬盘通常由多个盘片叠加在主轴上,每个盘片的两面都可以存储数据。
- 柱面(Cylinder):在全部盘片雷同磁道编号的位置构成的垂直数据存储单位,称为柱面。
- 主轴:全部盘片固定在主轴上,并由主轴电机驱动同步旋转。
磁盘IO本质(通过磁头)
磁头和盘片之间存在肯定间隙(约莫0.1微米)。紧张通过磁场厘革举行IO:
- 电流通过线圈:在写利用中,磁头内部有一个非常微小的线圈,当电流通过线圈时,会产生一个强大的磁场。
- 磁场作用:这个磁场作用于盘片外貌的磁性颗粒,磁头会控制磁场的方向,从而改变磁性颗粒的极性。每个磁性颗粒在盘片外貌都可以被改变磁极,代表“0”或“1”数据。
- 磁场方向的厘革会将磁性颗粒的方向改变,形成差别的磁性状态。这种状态的厘革体现了存储的数据(通常是二进制数据,即“0”和“1”)。
扇区写入:这些磁性颗粒的分列方式在物理上存储数据,每个磁道上的一段数据通常由多个扇区构成。磁头的动作会将每个扇区的磁性状态按照预定的数据模式举行写入。
磁盘访问时间影响
磁盘以扇区为单位举行IO:对扇区的访问有以下三个紧张部门
- 寻道时间(Seek time): 机器硬盘利用一个机器臂,靠近盘片外貌读取或写入数据。这个过程起首须要将磁头移动到精确的磁道位置上。这一步调会产生肯定的延长时间。磁头在磁盘上往返移动,以找到存储数据的精确位置。
- 旋转延长(Rotational Latency): 硬盘盘片以肯定的速率旋转,通常是5400 RPM(转/分钟)或7200 RPM等。由于磁盘的旋转,所需访问的数据大概还须要等候一段时间,直到目标数据的磁道恰好旋转到磁头下面。这段等候的时间称为旋转延长(Rotational Latency),详细时间取决于磁盘的转速。转速越快,旋转延长越短。
- 数据传输(Data Transfer): 一旦磁头定位到精确的磁道,而且目标数据位于磁头下方,硬盘就可以开始读取或写入数据。此时的数据传输速率紧张取决于硬盘的旋转速率、磁头读取速率和硬盘的缓存等因素。数据传输的速率通常是一个连续的过程,直到整个利用完成。
磁盘寻址方式
寻址在盘算机体系中有侧紧张的意义,它不光是硬盘、内存等存储装备正常运作的根本,还涉及到数据的高效存取、资源的公道分配、体系的兼容性等多个方面。下面先容两种常见的寻址方式:
CHS寻址
CHS寻址(Cylinders, Heads, Sectors)是一种早期的硬盘数据存取方式,基于硬盘的物理布局来定位存储在硬盘上的数据。CHS寻址方式是通过三个参数来确定命据的存储位置:
- C (Cylinder - 磁道柱):硬盘的每个盘片上有多个同心圆形的磁道,全部盘片上对应位置的磁道共同形成一个磁道柱。磁道柱的编号从0开始,指示硬盘上的磁道位置。每个磁道柱都包罗硬盘全部磁头对同一磁道的访问。
- H (Head - 磁头):硬盘通常由多个盘片构成,每个盘片有一个磁头用于读取和写入数据。磁头的编号从0开始,用来体现硬盘的哪一个磁头正在访问数据。硬盘的每个盘面通常都有一个磁头。
- S (Sector - 扇区):每个磁道被分别为多少个扇区,每个扇区是硬盘存储数据的最小单位。每个扇区的巨细通常为512字节。扇区从0开始编号,体现磁道上的详细存储位置。
CHS寻址方式的工作原理:
硬盘利用这三个参数来定位数据的详细位置。**Cylinder(磁道柱)**指的是在硬盘上垂直方向上的数据位置,**Head(磁头)指定利用哪个磁头访问数据,而Sector(扇区)**则确定磁道上的详细存储位置。通过这三个信息,硬盘可以定位到数据地点简直切位置。
LBA寻址方式(Logical Block Addressing,逻辑块寻址)是一种当代硬盘(HDD)、固态硬盘(SSD)和其他存储装备常用的寻址方式。它通过将硬盘视为一个连续的逻辑地点空间,每个存储单位(通常是一个扇区)都有一个唯一的编号,而不依赖于硬盘的物理布局(如磁道、磁头和扇区)。
LBA的根本概念
在LBA寻址方式中,硬盘的存储单位(通常是一个扇区)被赋予一个连续的逻辑地点。每个扇区通常为512字节或4KB。LBA接纳单一的逻辑块号来标识硬盘中的每个扇区,而不再依赖于物理位置(如磁道、磁头、扇区)。
LBA怎样工作
- 线性地点空间:LBA将硬盘中的全部扇区视为一个大的线性数组,每个扇区有一个唯一的编号,从0开始依次递增。每个LBA地点指向硬盘中的某个详细存储单位。
- 简化寻址:利用体系通过LBA直接访问硬盘上的逻辑块。硬盘的控制器负责将LBA地点转换为详细的物理地点(如磁道、磁头、扇区)。这种方式隐蔽了硬盘的物理布局,简化了数据的存取。
- LBA地点映射:当利用体系哀求访问某个LBA地点时,硬盘内部的控制器会将该LBA地点转换为实际的物理磁道、磁头和扇区组合。这是通过硬盘的内部映射机制完成的。
LBA与CHS的区别
特性LBA寻址CHS寻址寻址方式利用逻辑块编号,硬盘看作一个连续的存储区依赖于磁道、磁头、扇区的物理布局数据存储方式线性寻址依赖于硬盘的物理布局访问服从高,实用于大容量存储较低,难以应对大容量硬盘实用硬盘容量支持TB级及以上实用于较小的硬盘容量机动性非常机动,支持差别硬盘架构受硬盘物理布局限定文件体系(ext2为主)
Ext文件体系(Extended File System)是Linux利用体系中广泛利用的一系列文件体系的统称。Ext系列文件体系开端于1992年,颠末多个版本的更新与改进,如今紧张包罗 Ext2、Ext3 和 Ext4。
磁盘信息
- 磁盘装备:/dev/vda,这是您体系上的假造磁盘装备,通常在假造化环境中利用。
- 磁盘巨细:42.9 GB,这体现磁盘的总容量为 42.9 GB(42949672960 字节)。
- 磁盘扇区数:83886080 sectors,磁盘的扇区总数。每个扇区的巨细为 512 字节,因此总磁盘容量为 42.9 GB。
单位
- 单位:sectors of 1 * 512 = 512 bytes,每个扇区巨细为 512 字节,磁盘空间是按扇区来盘算的。
扇区巨细
- Sector size (logical/physical):512 bytes / 512 bytes,体现每个逻辑和物理扇区的巨细都是 512 字节。
I/O 巨细
- I/O size (minimum/optimal):512 bytes / 512 bytes,最小和最优的 I/O 巨细也是 512 字节。
磁盘标签范例
- Disk label type:dos,体现磁盘利用的是 DOS 分区表(MBR)。这种分区范例是传统的分区方案,最多支持 4 个主分区或 3 个主分区加一个扩展分区。
磁盘标识符
- Disk identifier:0x000148e1,这是磁盘的唯一标识符,用于区分差别的磁盘。
磁盘分区
磁盘与分区
- 磁盘(Disk):这是物理存储装备,图中展示了一个典范的磁盘,它被分别为多个分区(Partition 1、Partition 2、Partition 3、Partition 4)。
- 每个分区被格式化为一个 Ext2 文件体系(如 Partition 1、Partition 2 等)。
文件体系和块组
- Ext2 文件体系:每个分区被格式化为 Ext2 文件体系。Ext2 文件体系通过 块组(Block Group) 来管理磁盘上的存储空间。每个分区被分别成多少个块组(Block Group 0、Block Group 1、…Block Group N)。每个块组都包罗文件体系的一部门数据。
块组(Block Group)
每个块组包罗以下几个紧张部门:
- 超等块(Superblock):超等块包罗文件体系的元数据,比方块组的数目、块巨细、总文件体系巨细等。
- 组形貌符表(Group Descriptor Table,GDT):纪录每个块组的详细信息,如 inode 位图、数据块位图、inode 表的位置等。
- 块位图(Block Bitmap):纪录块组内哪些数据块是空闲的,哪些已经被占用。
- inode 位图(Inode Bitmap):纪录块组内哪些 inode 是空闲的,哪些已经被占用。
- inode 表(Inode Table):存储文件和目次的元数据,即 inode。每个文件或目次都有一个对应的 inode,包罗文件的巨细、权限、时间戳、指向数据块的指针等信息。
- 数据块(Data Blocks):存储文件的实际数据。每个块组都有数据块,用于存储文件的内容。
inode 表
- inode 是一个关键的数据布局,形貌文件的元数据,包罗文件的范例、权限、巨细、全部者(UID/GID)等信息。它还包罗指向数据块的指针。
- inode 表 中列出了每个文件或目次的 inode 号码、文件范例、权限、链接计数、文件巨细、用户和组 ID(UID/GID)等信息。
启动块(Boot Block/Sector)
- 启动块是文件体系的第一部门,它的巨细为 1KB,并包罗利用体系启动所需的信息。启动块仅在体系引导时利用,一旦体系启动,Ext2 文件体系的管理才开始。
Inode和Data Block
inode 和 DataBlock 是文件体系中的两个核心概念,它们分别负担差别的职责,共同资助利用体系管理文件的存储和访问。
文件 = 属性 + 数据(内容),属性就是 储存的inode内里,数据储存在Data Block中,他们之间存在某种映射关系创建接洽。
inode中大抵包罗
- 文件类型:文件是普通文件、目录、符号链接等。
- 文件权限:包括文件的读、写、执行权限。
- 文件大小:文件的大小(以字节为单位)。
- 创建时间、修改时间和访问时间:文件的时间戳。
- 硬链接数:指向该 inode 的硬链接数量。
- 文件的用户 ID 和组 ID:文件的所有者和所属的用户组。
- 指向数据块的指针:这些指针指向存储文件内容的数据块。
- ......
复制代码 inode 和 datablock 的映射方式:
- 直接指针(Direct Pointers):inode 中包罗多个直接指针,直接指向文件的数据块。假如文件巨细较小,inode 中的直接指针充足指向全部数据块。
- 比方,假如一个文件有 5KB 的数据,inode 中大概包罗 1 或 2 个直接指针,每个指针指向 1KB 或 2KB 巨细的数据块。
- 间接指针(Indirect Pointers):对于较大的文件,inode 中的直接指针无法容纳全部的数据块,因此利用间接指针来支持更大的文件。
- 一级间接指针(Single Indirect Pointer):inode 中有一个指向一个指针块的指针。指针块自己存储了多个指向数据块的指针。因此,一级间接指针可以指向更多的数据块。
- 二级间接指针(Double Indirect Pointer):假如文件的数据块更加巨大,inode 中还会包罗指向二级指针块的指针。二级指针块自己包罗指向一级指针块的指针,而一级指针块包罗指向数据块的指针。
- 三级间接指针(Triple Indirect Pointer):对于非常大的文件,inode 中大概包罗三级间接指针,依此类推。
明白文件和目次
文件:文件 = 属性 + 数据
目次的界说:
- 目次也是一种文件,拥有自己的 inode(索引节点),包罗文件的内容和属性。
- 文件的构成是“内容 + 属性”,而目次自己也有内容和属性。
dentry缓存:
- 目次会有自己的 inode 编号,而且存在 dentry 缓存,这紧张用于进步目次查找服从。
目次中是否有内容:
- 目次自己确实有内容,内容是与该目次干系的文件名及文件的 inode 映射关系。目次内容存储的是文件名与文件 inode 编号的关联。
软硬毗连
软毗连(Symbolic Link)和硬毗连(Hard Link)是文件体系中的两种毗连方式,它们各自有差别的特点和应用场景:
1软毗连(Symbolic Link, symlink)**:
- 软毗连雷同于快捷方式,它是一个指向另一个文件路径的文件。
- 特点:
- 软毗连有自己的 inode,指向原文件的路径,而不是原文件的数据块。
- 假如原文件被删除或移动,软毗连会失效(成为“悬挂链接”或“死链接”),由于它依赖于文件路径。
- 可以跨文件体系创建软毗连。
- 支持链接目次。
- 创建方法:
- ln -s <目标文件> <软连接文件>
- ln -s file link #建立软链接
复制代码
硬毗连(Hard Link):
- 硬毗连是指两个或多个文件名指向同一个 inode 号码,即它们都指向同一块数据存储地区。
- 特点:
- 硬毗连和原文件共享同一个 inode,数据内容是雷同的,硬毗连的文件内容修改会影响其他硬毗连。
- 删除一个硬毗连不会影响其他硬毗连,只要有一个硬毗连存在,文件内容就不会被删除。
- 不能跨文件体系创建硬毗连。
- 不能为目次创建硬毗连(除非超等用户利用特定利用)。
- 创建方法
- ln <目标文件> <硬连接文件>
- ln file hard_link
复制代码
引用计数变为了2 ,增长了一个硬链接。
对于目次而言,硬链接计数的寄义略有差别。每个目次至少会有 两个硬链接(即硬链接计数为 2),这是由以下两个部门构成的:
- 一个指向该目次自己的硬链接,即目次的正常名字。
- 一个指向该目次的父目次的硬链接,每个目次项 . 和 .. 都是一个硬链接。
观察dir1的引用计数
目次 dir1:
- 目次 dir1 的硬链接数为 3。这体现该目次有 3 个硬链接:
- 一个链接指向 dir1 自己。
- 另一个链接指向该目次的父目次 ..。
(即硬链接计数为 2),这是由以下两个部门构成的:
- 一个指向该目次自己的硬链接,即目次的正常名字。
- 一个指向该目次的父目次的硬链接,每个目次项 . 和 .. 都是一个硬链接。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |