浅学文件系统1

43 阅读2分钟

硬盘简介:

文件系统 ——对——》 硬盘的抽象

image.png

1.机械硬盘(Hard Disk Driver, HDD)

平时说的 “磁盘” 就是机械硬盘 image.png 俯视看一个盘片视图 image.png

如何在盘面上读写数据呢?

image.png 视频看看了解机械硬盘里面:

haokan.baidu.com/v?pd=wisena…

CPU访问磁盘数据非常耗费时间, 比如读取磁盘512字节数据,需要 10ms 左右。这对CPU来说是不可接受的,因此有了 DMA 传输磁盘数据 image.png image.png

CPU如何请求读写磁盘扇区呢?

磁盘控制器里面维护一组, 逻辑块号——磁盘扇区 (抽象—真实,虚拟—物理) , 之间的映射关系 image.png CPU想访问 10_逻辑块号的数据,直接发给磁盘控制器,翻译过后,得出真实的磁盘位置—》“哪个盘面”,“盘面上的哪个磁道”, “磁道上的哪个扇区” image.png 顺序读写(顺序I/O), 随机读写(随机I/O) image.png

了解RAID(磁盘阵列)

image.png image.png

image.png image.png image.png

2.固态硬盘(Solid State DIsk, SDD)

image.png

固态磁盘读写

image.png

文件

文件信息: 元数据(metadata) & 数据(data)

image.png

1.硬盘与文件关系

Linux操作系统,将 “硬盘” 看成连续的 “数据块”, 文件存储到数据块中 image.png image.png

2.数据块分配给一个文件的几种方式

a. 连续分配 image.png b.链表分配

为每个文件构造一个块链表, 每个块的前4个字节存储指向下一个块的指针, 块的其他部分存储数据 image.png

c.文件分配表(File Allocation Table, FAT)

取出每个硬盘块(数据块)的指针,把它们放到内存的一个表中 image.png

d. i 节点(index node 索引节点)

给每个文件赋予一个 称为 i 节点 的数据结构, 只有当文件被打开的时候,其对应的 i 节点 才会存在于内存中 image.png

总结:如何将数据块分配给一个文件 image.png

3.文件管理

所有得操作系统(Linux,Windows, ios, android等)通常内部有 “文件系统” 程序,专门管理硬盘中大量的文件 image.png

4.Linux操作系统的文件系统

image.png 简略宏观图 image.png image.png

Linux 硬盘操作过程

这个类比我们装Windows操作系统时,搞得C,D,E,F盘 image.png

查看有多少块磁盘: fdisk -l

image.png

给磁盘分区:fdisk /dev/sdb1

主分区:primary

扩展分区:extended

image.png

给在磁盘分区上,盖一层文件系统:mkfs.ext4 /dev/sdb1

创建一个目录:mkdir /mnt/sdb1

将磁盘分区挂载到指定目录: mount -t ext4 /dev/sdb1 /mnt/sdb1

image.png