硬盘
- 磁盘的内部结构及原理
- 分区表
- 磁盘阵列
磁盘的内部结构及原理
- 磁盘的内部结构及原理
https://blog.csdn.net/xiaofeng_yang/article/details/138598159 - 详细了解硬盘的工作原理
https://www.bilibili.com/video/BV1iT411o7sW?vd_source=17ec636d673142d7ce4f4250839f49fe
- 盘片(Platters):
盘片是机械硬盘的核心组件,通常是由金属或玻璃材料制成的圆形碟片,盘片的正反两面会涂有磁性物质。硬盘的上下盘面都会利用,都可以存储数据,成为有效盘片,也有极个别的硬盘盘面数为单数。每一个这样的有效盘面都会有盘面号,按顺序从上至下从“0”开始依次编号。 - 磁道(Tracks):
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。每个磁道又被划分为若干个扇区。 - 扇区(Sectors):
在磁盘里的磁道上等分出若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节或4KB(通常情况下是512字节),磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。通常扇区与扇区之间也有一定间隔(逻辑上的间隔,物理上没有任何间隔,但是每个扇区的开头都有一个同步信息,外围电路可以用来判断一个扇区的开始)
硬盘的最小单位就是扇区,是真实存在的,一般大小是512字节,这个大小是在硬盘出厂时设置,不能修改。 - 簇(Cluster)或块(block):
- 块和簇都是操作系统中用于文件存储的最小逻辑单位。块通常指的是在Linux系统中用于文件存储的最小逻辑单位,而簇则是在Windows系统中用于文件存储的最小逻辑单位。因为文件系统不是一个扇区一个扇区的来读数据,太慢了,它是一个块一个块的读取数据,一般大小是4KB(这个值可以修改,在格式化分区的时候修改)。读取一个块,实际上是从硬件设备读取一个或多个扇区,一个block只能存放一个文件内容,无论这个文件有多小。一个文件可能会占用多个block,每读取一个block就会消耗一次磁盘io。如果要提升磁盘io性能,那么尽可能一次io读取更多的数据,但是block也不是越大越好,
- 块和簇都是文件系统使用的逻辑概念,非磁盘物理特性。文件系统中操作系统与磁盘交互的基本单位是块(簇),操作系统与内存交互的基本单位是页。
页、块、簇都是逻辑概念,人为定义的大小,页通常指的是内存中的数据存储单元,而块则是指硬盘或其他存储设备上的数据存储单元 - 将相邻的若干个扇区称为了一个簇或者块。操作系统读写磁盘的基本单位是扇区,而文件系统的基本单位是簇或者块。
常见的文件系统有:ext2、ext3、ntfs、fat32
注意: FAT32文件系统支持的最大分区大小为32GB,单个文件大小不能超过4GB。
文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。
<font color="red">**操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍。而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。**</font>
如在Windows下,随便找个几字节的文件,在其上面点击鼠标右键选择属性,看看实际大小与占用空间两项内容, 如大小:2字节(2个字母),占用空间:4KB(4096字节)。这里的占用空间就是你机器分区的簇大小,因为再小的文件都会占用空间,逻辑基本单位是4K,所以都会占用4K。 簇一般有这几类大小4K,8K,16K,32K,64K等。簇越大性能越好,但空间浪费严重。簇越小性能相对越低,但空间利用率高。FAT32格式的文件系统簇的大小默认为4K。
- 格式化硬盘分区时,分配单元大小 这项其实就是文件系统中的簇的大小
- 快速格式化(Quick Format):快速擦除存储介质上的文件系统信息和目录结构,但不会对存储介质上的数据进行完全清除。在快速格式化过程中,文件系统会被重新初始化,但存储介质上的数据仍然存在,只是文件系统无法访问它们。【完全格式化的时间较短】
- 完全格式化(Full Format):完全格式化是一种更彻底的格式化方法,它会擦除存储介质上的文件系统信息、目录结构以及存储介质上的所有数据。在完全格式化过程中,存储介质会被完全清空并重新初始化,所有数据都会被彻底删除。【完全格式化的时间较长】
分区表
- 什么是磁盘分区表
磁盘分区表是用于记录了硬盘的物理结构和逻辑划分,用于指导操作系统如何识别和管理硬盘分区。
它记录了分区在物理磁盘上的开始和结束位置,使得操作系统能够识别和管理不同的数据区域。
倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。
磁盘分区表主要有两种类型:MBR(Master Boot Record)和GPT(GUID Partition Table)。
-
MBR分区
传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。
MBR分区方案 硬盘主分区数目不能超过4个的原因:MBR扇区只有64个字节用于分区表,而每个分区项占用16个字节,所以只能记录4个分区的信息。后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍用16个字节存储。
MBR分区方案无法支持超过2TB容量的磁盘: 因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。也因为这个缺陷,出现了GPT分区。 -
GPT分区表
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
- MBR 与 GPT 的分区限制对比
- MBR 的分区限制在于,它最多支持创建 4 个主分区。不过,这个限制可以通过创建扩展分区来绕过(3 个主分区 + 1 个扩展分区)。在扩展分区中,又可以包含多个逻辑分区。但是,逻辑分区不能用作引导卷,这也是它的一个重要限制。
- 相较于 MBR,GPT 可以创建多达 128 个分区而无需借助逻辑分区(这个数量限制是由 Windows 所设定的)。
磁盘阵列
参考文章:
RAID磁盘阵列原理分析总结:https://cloud.tencent.com/developer/article/2127608
磁盘阵列(RAID) 详解: https://juejin.cn/post/7350520171611881523
RAID(Redundant Arrays of Independent Disks,独立硬盘冗余阵列):利用虚拟化存储技术把多个相对便宜的硬盘组合起来,形成一个硬盘组(硬盘阵列组,操作系统只会把它当作一个硬盘,实际上是一个逻辑硬盘),从而提供比单个硬盘更高的存储性能和冗余的数据安全(数据备份),以及大大提高IO速度。
RAID 主要有三个关键技术:镜像(Mirroring)、数据条带(Data Stripping)和数据校验(Data parity)。
- 数据条带: 将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本。
当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升。 - 镜像: 将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。
- 数据校验: 利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。不过数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。 至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
- JBOD
目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制,JBOD 可用存储容量等于所有成员磁盘的存储空间之和 - RAID0
RAID0把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求,由于并行I/O作数据可以充分利用总线的带宽显著提高磁盘整体存取性能。
- RAID1
RAID1将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50%。
RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。当读取数据时,系统先从RAID 0的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。
- RAID01和RAID10
RAID01和RAID10两者都是Raid0和Raid1的组合体
RAID 01:是先做条带化再作镜像
RAID10: 是先做镜像再作条带化。N(偶数,N≥4)块盘两两镜像后,再组合成一个RAID0。
- RAID5
RAID5是目前最常见的 RAID 等级,使用最多,数据条带、镜像、数据校验三种技术都采用了。
- N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储。
- N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能会下降。
- 可靠性高,允许坏1块盘,不影响所有数据,当同时损坏两块时则无法计算,造成数据丢失。