文章目录
- 磁盘存储器
- 组成
- 磁盘驱动器
- 磁盘控制器
- 盘片platter
- 存储区域
- 磁盘结构
- 磁道track
- 扇区sector🎈/块Block🎆
- 磁头(Head)
- 圆柱面cylinder
- 磁记录原理
- 磁盘性能指标
- 记录密度
- 磁盘的容量
- 非格式化容量
- 格式化容量
- 数据传输率
- 磁盘转速
- 旋转周期T
- 例
- 平均存取时间
- 纯读/写时间
- 例
- 例
- 磁盘地址
- 例
- 磁盘阵列RAID
- SSD
- 结构
- 特点
磁盘存储器
-
hdd(hard disk drive)
- Hard disk drive - Wikipedia
- Operating Systems: Mass-Storage Structure (uic.edu)
- How Hard Disk works, Internal structure and Read/Write data operations – Tech mastery (wordpress.com)
-
ssd(solid-state drive)
- Everything You Need to Know About Solid-state drive (SSD) - Guide (minitool.com)
- Solid-state drive - Wikipedia
- Coding for SSDs – Part 2: Architecture of an SSD and Benchmarking | Code Capsule
-
Exploded line drawing of a modern hard disk, showing the major components.
现代硬盘的分解线图,显示了主要部件
ref linkArchitecture of a solid-state drive(SSD)
组成
磁盘驱动器
- 磁盘驱动器/磁盘:由磁头,磁盘读写电路等组成,简称为磁盘
- 核心部件:
- 磁头组件
- 盘片组件
- 温彻斯特盘:
- 可以移动磁头,固定盘片的磁盘存储器
磁盘控制器
- 硬盘存储器和主机的接口
- 主流标准:
- IDE
- SCSI
- SATA
盘片platter
- 一个磁盘(如一个 1T 的机械硬盘)由多个盘片叠加而成
- 盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据
- 因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面(surfaces of platter)
存储区域
- 一块硬盘含有若干记录面
- 每个记录面划分为若干磁道(一系列的同心圆环)
- 每条磁道划分为若干扇区(块)
磁盘结构
磁道track
- 每个盘片被划分为一个个磁道
扇区sector🎈/块Block🎆
-
每个磁道又划分为一个个扇区
- 扇区中包含
- 数据
- 地址
- 校验
- …等信息
- 扇区中包含
-
磁盘读写的最小单位是扇区(或者称为块)🎈
- 磁盘按块存取
- 不同于主存,可以读取字节
-
其中,最内侧磁道上的扇区面积最小,因此数据密度最大
-
扇区数:表示每条磁道上有多少个扇区
磁头(Head)
- 磁头用于读取/写入盘片上记录的信息
- 磁头数即记录面数,表示磁盘有多少个磁头
- 一个记录面对应一个磁头🎈
圆柱面cylinder
- 在一个盘组中,不同记录面的相同编号(位置)的诸多磁道构成一个圆柱面
- 所有盘面中相对位置相同的磁道组成柱面
- 空间几何上可以类比圆柱体的侧面
- 不同柱面底面半径各不相同
- 每个盘面对应一个磁头 所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”
- 柱面数:表示硬盘每面上有多少条磁道
磁记录原理
- 磁头和磁性记录介质相对运动时,通过电磁转换完成读写操作
- 编码方法
- 按照某种方案,把一连串的二进制信息变换称存储介质磁层中一个磁化翻转状态序列
- 使得读写电路容易/可靠地实现转换
- 磁记录方式:
- 通常采用调频FM和改进型调频制MFM的方式记录
磁盘性能指标
记录密度
- 记录密度是指盘片单位面积上记录的二进制信息量,
- 通常以道
- 密度
- 位密度
- 面密度
- …表示
- 道密度是沿磁盘半径方向单位长度上的磁道数,
- 位密度是磁道单位长度上能记录的二进制代码位数,
- 面密度是位密度和道密度的乘积
磁盘的容量
- 磁盘容量有非格式化容量和格式化容量之分
非格式化容量
- 是指磁记录表面可利用的磁化单元总数,
- 它由道密度和位密度计算而来;
- 称为硬盘容量
格式化容量
-
是指按照某种特定的记录格式所能存储信息的总量
-
格式化后的容量比非格式化容量要小 🎈
-
称为格式化后的实际容量(有效容量)
数据传输率
-
磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率
-
设
-
磁盘转数为r转/秒
-
每条磁道容量N字节
- 设扇区容量为 V s e c V_{sec} Vsec
- 每个磁道有 N s e c N_{sec} Nsec
- N = V s e c N s e c N=V_{sec}N_{sec} N=VsecNsec
-
则数据传输率(DataRate: D r D_r Dr)为
- D r = r N = r V s e c N s e c D_r=rN=rV_{sec}N_{sec} Dr=rN=rVsecNsec
-
磁盘转速
- 表示单位时间内磁盘完成几个周(round)的旋转
- 通常用
-
r
转
/
秒
或
者
m
转
/
分
钟
表
示
r转/秒或者m转/分钟表示
r转/秒或者m转/分钟表示
- m 转 / 分 钟 = 1 60 m 转 / 秒 m转/分钟=\frac{1}{60}m转/秒 m转/分钟=601m转/秒
-
r
转
/
秒
或
者
m
转
/
分
钟
表
示
r转/秒或者m转/分钟表示
r转/秒或者m转/分钟表示
旋转周期T
-
有时也用旋转周期时间 T r , 简 化 记 为 T T_r,简化记为T Tr,简化记为T来描述磁盘转速:
-
完成一转(round)需要的时间(平均时间)
-
1 r / 1 T , 即 1 r : 1 T 1r/1T,即1r:1T 1r/1T,即1r:1T
-
如果知道转速为:
-
m ( r / m i n ) , 可 以 写 成 : m r m i n = 1 r 1 m m i n m r : 1 m i n 1 r : 1 m m i n = 60 m s m\ (r/min),可以写成: \\m\frac{r}{min}=\frac{1r}{\frac{1}{m}min} \\m\ r:1min \\1r:\frac{1}{m}min=\frac{60}{m}s m (r/min),可以写成:mminr=m1min1rm r:1min1r:m1min=m60s
- 根据周期的定义, T = 1 m m i n = 60 m s T=\frac{1}{m}min=\frac{60}{m}s T=m1min=m60s
-
-
例
-
某磁盘转速为7200 r/min
-
每个磁道上有160扇区(sectors)
-
每扇区512字节
-
理想情况下的传输速率DataRate?
- D r = 7200 × 160 × 512 B 60 s = ( 9600 K ) B / s D_r=\frac{7200\times{160}\times{512B}}{60s}=(9600K)B/s Dr=60s7200×160×512B=(9600K)B/s
平均存取时间
-
平均存取时间由
- 寻道时间( T t r a c k T_{track} Ttrack)(磁头移动到目的磁道的时间)、
- 磁道内扇区定位时间(
T
s
e
c
T_{sec}
Tsec):旋转延迟时间(磁头定位到要读写扇区的时间)
- sec:sector Delay
- 即:平均查找扇区的时间
- 磁盘旋转一周的时间的一半
- 下的推导就是一个大概
- 设磁道上有n个扇区
- 移动到相邻扇区时间为 t 0 t_0 t0
- 磁盘旋转一周的时间T= n t 0 nt_0 nt0
- 平均访问时间 T a = 1 n ∑ i = 0 n − 1 i ⋅ t 0 = 1 n n ( n − 1 ) 2 t 0 = 1 2 ( n − 1 ) t 0 ≈ 1 2 n t 0 = 1 2 T T_a=\frac{1}{n}\sum\limits_{i=0}^{n-1}i\cdot t_0=\frac{1}{n}\frac{n(n-1)}{2}t_0=\frac{1}{2}{(n-1)}t_0\approx\frac{1}{2}nt_0=\frac{1}{2}T Ta=n1i=0∑n−1i⋅t0=n12n(n−1)t0=21(n−1)t0≈21nt0=21T
- 把定位时间记为 T s e c = 1 2 T r T_{sec}=\frac{1}{2}{T_r} Tsec=21Tr
- 磁盘控制器延迟(
T
c
t
r
l
T_{ctrl}
Tctrl)
- ctrl:Controller Delay
- 有些地方会忽略处理这部分耗时
- 传输时间
T
t
r
a
n
s
T_{trans}
Ttrans(传输数据所花费的时间)
- data transfer time
-
综上:
- T a v g = T t r a c k + T s e c + T t r a n s + T c t r l T_{avg}=T_{track}+T_{sec}+T_{trans}+T_{ctrl} Tavg=Ttrack+Tsec+Ttrans+Tctrl
-
由于寻道和找扇区的距离远近不一,故寻道时间和旋转延迟时间(扇区定位)通常取平均值
纯读/写时间
- 磁头从需要读取的若干个扇区中的第一个扇区开始旋转到结束扇区的这段时间
- 想时间不考虑延迟和寻道的时间(只计算直接读取所需要扇区的时间)
- 即,机械运动操作的时间都以0处理
例
-
磁盘转速为V=7200 r/min
- T = 60 7200 s = ( 1 / 120 ) s T=\frac{60}{7200}s=(1/120)s T=720060s=(1/120)s
- 则:扇区定位平均时间 T s e c = 1 2 T = 1 240 s ≈ 0.00417 s = 4.17 m s T_{sec}=\frac{1}{2}T=\frac{1}{240}s\approx{0.00417}s=4.17ms Tsec=21T=2401s≈0.00417s=4.17ms
-
磁盘平均寻道 T t r a c k T_{track} Ttrack时间为8ms
-
每一个磁道有n=1000扇区,那么读取一个扇区的纯读取时间为
-
1 n T = 1 1000 1 120 = 0.083 × 1 0 − 4 s = 0.083 × 1 0 − 1 × 1 0 − 3 s = 0.0083 m s ≈ 0.01 m s \frac{1}{n}T=\frac{1}{1000}\frac{1}{120} =0.083\times10^{-4}s \\ =0.083\times{10^{-1}\times{10^{-3}}}s =0.0083ms \\ \approx{0.01}ms n1T=100011201=0.083×10−4s=0.083×10−1×10−3s=0.0083ms≈0.01ms
-
因此:读取一个扇区的读取时间大约为0.01ms
-
-
访问一个扇区的平均存取时间为?
- S=寻道时间+扇区定位时间+纯读写时间=8ms+4.17ms+0.01=12.18ms
例
- 设某磁盘
- 磁盘的平均寻道时间为6ms
- 磁盘传输速率为 D r D_r Dr=20MB/s
- 磁盘控制器延迟为0.2ms
- 扇区大小 V s e c = 4 K B V_{sec}=4KB Vsec=4KB
- 又设该磁盘转速为
1
0
4
10^4
104r/min
- 工作周期为: T = 1 1 0 4 m i n = 60 × 1 0 − 4 s = 6 × 1 0 − 3 s = 6 m s T=\frac{1}{10^4}min=60\times{10^{-4}}s=6\times{10^{-3}s}=6ms T=1041min=60×10−4s=6×10−3s=6ms
- 平均磁道内扇区定位时间为 T s e c = 1 2 T = 3 m s T_{sec}=\frac{1}{2}T=3ms Tsec=21T=3ms
- 读取一个扇区的理想时间(纯读取时间):
- T r e a d = V s e c D r = 4 K B 20 M B / s = 1 5 K s = 0.2 m s T_{read}=\frac{V_{sec}}{D_r}=\frac{4KB}{20MB/s}=\frac{1}{5K}s=0.2ms Tread=DrVsec=20MB/s4KB=5K1s=0.2ms
- 理想时间不考虑延迟和寻道的时间(只计算直接读取所需要扇区的时间)
- 即,机械运动操作的时间都别设想为0
- 读取总时间(包括延迟)
- 寻道时间+扇区定位时间+控制器延迟时间+理想读取时间
- t=6+3+0.2+0.2=9.4ms
磁盘地址
- 驱动器号
- 柱面号(磁道号)
- 盘面号
- 扇区号
- Note:
- 如果不特别指明多个驱动器,一般一个磁盘内就考虑后面三个级别
例
-
假系统中有4个磁盘驱动器(需要2bit区分)
- 每个驱动器带1个磁盘
- 每个磁盘
- 256个磁道 2 8 = 256 2^8=256 28=256(需要8bit区分磁道)
- 16个盘面(需要
log
2
16
=
4
\log_2{16}=4
log216=4bit区分盘面)(比如:磁盘带有8个双面盘片)
- 每个盘面划分为16个扇区(需要4bit区分扇区)
- 每个磁盘
- 每个驱动器带1个磁盘
-
每个扇区地址要2+8+4+4=18bit二进制代码
磁盘阵列RAID
-
RAID(磁盘阵列(Redundant Array of Independent Disks))
-
是指将多个独立的物理磁盘组成一个独立的逻辑盘
-
数据在多个物理盘上分割交叉存储、并行访问
-
具有更好的
-
存储性能
-
可靠性
-
安全性
-
-
-
在 RAID1~RAID5几种方案中,无论何时有磁盘损坏,都可随时拔出受损的磁盘再插入好的磁盘,而数据不会损坏,提升了系统的可靠性
- RAIDO:无冗余和无校验的磁盘阵列
- RAID1:镜像磁盘阵列
- RAID2:采用纠错的海明码的磁盘阵列
- RAID3:位交叉奇偶校验的磁盘阵列
- RAID4:块交叉奇偶校验的磁盘阵列
- RAID5:无独立校验的奇偶校验磁盘阵列
-
RAID0
- 把连续多个数据块交替地存放在不同物理磁盘的扇区中
- 几个磁盘交叉并行读写,不仅扩大了存储容量,而且提高了磁盘数据存取速度
- 但RAIDO没有容错能力
- 最基础的阵列方案
- 没有引入冗余🎈
- 其他几个级别都引入冗余或数据校验
-
RAID1:
- 为了提高可靠性,RAID1使两个磁盘同时进行读写,互为备份,若一个磁盘出现故障,可从另一磁盘中读出数据
- 两个磁盘当一个磁盘使用,意味着容量减少一半
-
提高RAID可靠性的方法
- 磁盘镜像
- 数据校验(比如:奇偶校验)
-
总之
- RAID通过同时使用多个磁盘,提高了传输率;
- 通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;
- 通过镜像功能,提高安全可靠性;
- 通过数据校验,提供容错能力
SSD
- 固态硬盘(SSD)是一种基于闪存技术的存储器
- 它与U盘并没有本质上的差别,只是容量更大,存取性能更好
- 一个 SSD由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译层将来自CPU的逻辑块读写请求翻译成对底层物理设备的读写控制信号,因此,这个闪存翻译层相当于扮演了磁盘控制器的角色
结构
-
一个闪存由B块组成,每块由Р页组成
-
expload View Solid state Drive
特点
-
通常,页的大小是512B4KB,每块由32~128页组成,块的大小为16KB512KB
-
数据是以页(page)为单位读写的 只有在一页所属的块整个被擦除后,才能写这一页
-
不过,一旦一个块被擦除,块中的每个页都可以直接再写一次 某个块进行了约10万次重复写之后,就会磨损坏,不能再使用
-
随机写比随机读慢得多,有两个原因首先,擦除块比较慢,1ms 级,比访问页高一个数量级
-
其次,如果写操作试图修改一个包含已有数据的页P那么这个块中所有含有用数据的页都必须被复制到一个新(擦除过的)块中,才能进行对页P写
-
优点(比起传统磁盘)
- 它由半导体存储器构成,没有移动的部件,因而随机访问时间比机械磁盘要快很多,
- 随机写比随机读慢,但是依然比机械操作的传统磁盘快得多
- 也没有任何机械噪声和震动,
- 能耗更低,
- 抗震性好,
- 安全性高等
- 它由半导体存储器构成,没有移动的部件,因而随机访问时间比机械磁盘要快很多,
-
缺点
- 因为反复写之后,闪存块会磨损,所以SSD也容易磨损
-
闪存翻译层中有一个平均磨损逻辑
- 试图通过将擦除平均分布在所有的块上来最大化每个块的寿命