后端面试技术38讲——文件系统原理(笔记)

硬盘

硬盘是一种可持久保存、多次读写数据的存储介质。
机械式硬盘的结构,主要包含盘片、主轴、磁头臂。主轴带动盘片高速旋转,数据就存储在具有磁性特质的盘片,当需要读写盘上的数据的时候,磁头臂会移动磁头到盘片所在的磁道上,磁头读取磁道上的数据。读写数据需要移动磁头,这样一个机械的动作,至少需要花费数毫秒的时间,这是机械式硬盘访问延迟的主要原因。相比离散存储的同样大小的文件,连续存储的文件的读写速度要快得多。

固态硬盘没有磁性特质的存储介质,也没有电机驱动的机械式结构。其中主控芯片处理端口输入的指令和数据,然后控制闪存颗粒进行数据读写。由于固态硬盘没有了机械式硬盘的电机驱动磁头臂进行机械式物理移动的环节,而是完全的电子操作,因此固态硬盘的访问速度远快于机械式硬盘。

文件系统

文件系统将硬盘空间以块为单位进行划分,每个文件占据若干个块,然后再通过一个文件控制块 FCB 记录每个文件占据的硬盘数据块。
在这里插入图片描述
在 Linux 操作系统中 inode就是文件控制块,要想访问文件,就必须获得文件的inode 信息,在 inode 中查找文件数据块索引表,根据索引中记录的硬盘地址信息访问硬盘,读写数据。
inode文件记录的内容包括文件权限、所有者、修改时间和文件大小等文件属性信息,以及文件数据块硬盘地址索引。inode 是固定结构的,能够记录的硬盘地址索引数也是固定的,只有 15个索引。其中前 12 个索引直接记录数据块地址,第 13 个索引记录索引地址,也就是说,索引块指向的硬盘数据块并不直接记录文件数据,而是记录文件数据块的索引表,每个索引表可以记录 256 个索引;第 14 个索引记录二级索引地址,第 15 个索引记录三级索引地址。
在这里插入图片描述
每个 inode 最多可以存储 12+256+256256+256256*256 个数据块,如果每个数据块的大小为 4k,也就是单个文件最大不超过 70G,而且即使可以扩大数据块大小,文件大小也要受单个硬盘容量的限制。

RAID(独立硬盘冗余阵列)

将多块硬盘通过硬件 RAID 卡或者软件 RAID 的方案管理起
来,使其共同对外提供服务。RAID 的核心思路其实是利用文件系统将数据写入硬盘中不同数据块的特性,将多块硬盘上的空闲空间看做一个整体,进行数据写入,也就是说,一个文件的多个数据块可能写入多个硬盘。

RAID 0

将一个文件的数据分成 N 片,同时向 N 个硬盘写入,这样单个文件可以存储在 N个硬盘上,文件容量可以扩大 N 倍,(理论上)读写速度也可以扩大 N 倍。
缺点:使用RAID 0 的最大问题是文件数据分散在 N 块硬盘上,任何一块硬盘损坏,就会导致数据不完整,整个文件系统全部损坏,文件的可用性极大地降低了。

RAID 1

利用两块硬盘进行数据备份,文件同时向两块硬盘写入,这样任何一块硬盘损坏都不会出现文件数据丢失的情况,文件的可用性得到提升。

RAID 10

结合 RAID 0 和 RAID 1,将多块硬盘进行两两分组,文件数据分成 N 片,每个分组写入一片,每个分组内的两块硬盘再进行数据备份。这样既扩大了文件的容量,又提高了文件的可用性。
缺点:这种方式硬盘的利用率只有 50%,有一半的硬盘被用来做数据备份。

RAID 5(最常用)

针对 RAID 10 硬盘浪费的情况,将数据分成 N-1 片,再利用这 N-1 片数据进行位运算,计算一片校验数据,然后将这 N 片数据写入 N 个硬盘。这样任何一块硬盘损坏,都可以利用校验片的数据和其他数据进行计算得到这片丢失的数据,而硬盘的利用率也提高到N-1/N。

RAID 6

用两种位运算校验算法计算两片校验数据,这样两块硬盘损坏还是可以计算得到丢失的数据片。RAID 5 可以解决一块硬盘损坏后文件不可用的问题,RAID 6可以解决两块硬盘损害问题。
一个有效方程只能求出一个变量。

分布式文件系统

分布式文件系统的思路其实和 RAID 是一脉相承的,就是将数据分成很多片,同时向 N 台服务器上进行数据写入。针对一片数据丢失就导致整个文件损坏的情况,分布式文件系统也是采用数据备份的方式,将多个备份数据片写入多个服务器,以保证文件的可用性。

Hadoop分布式文件系统HDFS

在这里插入图片描述
DataNode 负责文件数据的存储和读写操作,HDFS 将文件数据分割成若干数据块(Block),每个 DataNode 存储一部分数据块,这样文件就分布存储在整个 HDFS 服务器集群中。
NameNode 负责整个分布式文件系统的元数据(MetaData)管理,也就是文件路径名、访问权限、数据块的 ID 以及存储位置等信息,相当于 Linux 系统中 inode 的角色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连续系统的时域分析是信号与系统学习中的重要部分。时域分析研究的是信号在时间域内的变化规律,常用的分析方法包括冲激响应法、单位阶跃响应法和相应方程法。 1. 冲激响应法 冲激响应法是一种基于系统输入信号的冲激函数的响应来分析系统时域特性的方法。具体来说,将系统输入信号表示为一个冲激序列的加权和,然后计算出系统对每个冲激的响应,得到系统的冲激响应函数。然后,通过线性时不变系统的特性,可以将任何输入信号都表示为冲激序列的加权和,从而得到系统对任何输入信号的响应。 2. 单位阶跃响应法 单位阶跃响应法是一种基于系统输入信号的单位阶跃函数的响应来分析系统时域特性的方法。具体来说,将系统输入信号表示为一个单位阶跃函数的加权和,然后计算出系统对每个单位阶跃函数的响应,得到系统的单位阶跃响应函数。然后,通过线性时不变系统的特性,可以将任何输入信号都表示为单位阶跃函数的加权和,从而得到系统对任何输入信号的响应。 3. 相应方程法 相应方程法是一种基于系统微分方程的解析解来分析系统时域特性的方法。具体来说,根据系统微分方程的特性,可以得到系统的传递函数,然后通过拉普拉斯变换将输入信号和传递函数变换到频域内,最终通过反变换得到系统的时域响应。 以上三种方法都是分析连续系统时域特性的重要方法,各自适用于不同的情况。掌握这些方法可以帮助我们更好地理解和分析连续系统的时域特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值