硬盘简介:
文件系统 ——对——》 硬盘的抽象
1.机械硬盘(Hard Disk Driver, HDD)
平时说的 “磁盘” 就是机械硬盘
俯视看一个盘片视图
如何在盘面上读写数据呢?
视频看看了解机械硬盘里面:
CPU访问磁盘数据非常耗费时间, 比如读取磁盘512字节数据,需要 10ms 左右。这对CPU来说是不可接受的,因此有了 DMA 传输磁盘数据
CPU如何请求读写磁盘扇区呢?
磁盘控制器里面维护一组, 逻辑块号——磁盘扇区 (抽象—真实,虚拟—物理) , 之间的映射关系
CPU想访问 10_逻辑块号的数据,直接发给磁盘控制器,翻译过后,得出真实的磁盘位置—》“哪个盘面”,“盘面上的哪个磁道”, “磁道上的哪个扇区”
顺序读写(顺序I/O), 随机读写(随机I/O)
了解RAID(磁盘阵列)
2.固态硬盘(Solid State DIsk, SDD)
固态磁盘读写
文件
文件信息: 元数据(metadata) & 数据(data)
1.硬盘与文件关系
Linux操作系统,将 “硬盘” 看成连续的 “数据块”, 文件存储到数据块中
2.数据块分配给一个文件的几种方式
a. 连续分配
b.链表分配
为每个文件构造一个块链表, 每个块的前4个字节存储指向下一个块的指针, 块的其他部分存储数据
c.文件分配表(File Allocation Table, FAT)
取出每个硬盘块(数据块)的指针,把它们放到内存的一个表中
d. i 节点(index node 索引节点)
给每个文件赋予一个 称为 i 节点 的数据结构, 只有当文件被打开的时候,其对应的 i 节点 才会存在于内存中
总结:如何将数据块分配给一个文件
3.文件管理
所有得操作系统(Linux,Windows, ios, android等)通常内部有 “文件系统” 程序,专门管理硬盘中大量的文件
4.Linux操作系统的文件系统
简略宏观图
Linux 硬盘操作过程
这个类比我们装Windows操作系统时,搞得C,D,E,F盘
查看有多少块磁盘: fdisk -l
给磁盘分区:fdisk /dev/sdb1
主分区:primary
扩展分区:extended
给在磁盘分区上,盖一层文件系统:mkfs.ext4 /dev/sdb1
创建一个目录:mkdir /mnt/sdb1
将磁盘分区挂载到指定目录: mount -t ext4 /dev/sdb1 /mnt/sdb1