Linux基础笔记17 | 磁盘与文件系统认知
磁盘基础概念知识
- 计算机主要存储媒介之一
- 由一个或多个铝制/玻璃的碟片组成,碟片外覆盖具有铁磁性材料
- 磁盘内部由磁道、柱面、扇区、磁头等关键部位组成
- Linux 系统中硬件设备文件放在 /dev 下,不同磁盘接口,系统识别的设备名称不一样
- IDE:/dev/hda
- SAS\SCSI\SATA:/dev/sda
- 高效云盘:/dev/vda
- 磁盘读写数据的单位就是扇区,而非字节,每个扇区绝大多数是 512 字节
机械磁盘的读写机制
- 设备驱动程序将读写数据所需要的信息传递给机械磁盘:扇区序列号、扇区数量、读写类型等信息
- 通过摆动磁头和转动盘片,将磁头对准需要访问的扇区
- 执行数据的读写操作
- 执行完毕后就能结束数据传输了:一次请求就完成了
文件系统一脚入门基础
文件系统的必要性
应用程序与底层的解耦,不需要关注实际存放数据的位置和信息,文件系统代替管理,避免了复杂的管理
文件系统下的读取数据流程
- 进程进行系统调用(统一的系统调用接口)
- 内核中的文件系统通用的处理,并确定操作对象的文件保存在哪个文件系统中
- 调用该文件系统独有的处理,并执行和请求与第一步对应的处理
- 将读写数据信息,传递给设备驱动程序
- 由设备驱动程序进行后续的读写操作(即上述的机械磁盘的读写机制)
其他
- 操作系统读取磁盘,不会一个个扇区去读取,效率太低,一般都是一次性连续读取多个扇区,被称之为一个 block (块)
- block (块)的大小常见有1 KB、2KB、4KB,linux 常设置4 KB,即8个扇区
block 与 inode
操作系统对于文件数据的存放分为2部分:基于文件系统
- 文件内容:存储到 block 中
- 权限及文件属性:存储在 inode 中
磁盘分区中,有一个超级区块(superblock)
- 记录整个文件系统的整体信息:inode、block 的总量;使用大小、剩余大小等信息
inode
- 记录文件的属性、权限,同时记录该文件的内容数据所在的 block 编号
block
- 存储文件的实际内容,超过默认的 block 大小,就会自动占用多个 block
基于文件系统的数据定位
- 找到这个文件的 inode 信息,就能找到存放该文件数据的 block 号,就能读取文件内容
格式化
- 自动会将磁盘分成2个区域
- inode 和 block 节点大小格式化可以指定
mkfs.xfs -b 4096 -I 256 /dev/sdb
磁盘分区表格式
磁盘有很多很多扇区,早期我们把磁盘中的第一个扇区里面含有重要的信息叫做 MBR(Master Boot Record)格式,后续快速的发展,磁盘容量不断增大,又多了一个新的磁盘分区格式,GPT(GUID partition table)
- 分区表:就是对磁盘进行分区
MBR(Master Boot Record)
-
早期为了兼容 windows 的磁盘,使用的是支持 windows 的 MBR 方式来处理开机管理程序与分区表,相关记录通通放在磁盘中的第一个扇区,大小通常是512字节
- 主要开机记录区:可以安装开机管理程序的地方,有446字节
- 分区表:记录整块磁盘分区的状态,有64字节,因为分区表只有64字节的大小,最多有4组记录区,每组记录区记录了该区端的范围(起始柱面号)
- 结束标志占2个字节:AA 55
-
MBR 位于整块磁盘的0磁道0柱面1扇区位置
-
按照上述大小分布,就意味着只有16*4,4个分区记录,这个4个分区记录被称为主分区(Primary)和扩展分区(Extended)
- 所谓的分区就是对这64字节进行设置
- 磁盘默认仅能写入4组分区信息
- 分区的最小单位一般是柱面
-
通过扩展分区我们可以划分不止4个分区
- 思考初衷:利用额外的扇区来记录更多的分区信息
- 扩展分区本身不拿来格式化使用,而是使用额外的扇区来记录分区信息
- 由扩展分区继续切出来的分区,叫做逻辑分区(logical partition)
-
总结
- 主分区与扩展分区最多可以存在4个
- 扩展分区最多只能一个
- 逻辑分区是由扩展分区持续切割出来的分区
- 可以被格式化后拿来使用的只有主分区和逻辑分区,扩展分区无法被格式化使用
- 由于每组分区表仅有16字节,记录的信息是有限制的,无法分区大于2T以上的磁盘,存放的引导程序大小仅限于446字节
GPT(GUID partition table)
-
GPT 将磁盘所有区块以 LBA(逻辑区块位址)来规划,默认是 512 字节,并使用了34个 LBA 区块来记录分区信息,整个磁盘的最后33个LBA也拿来作为另一个备份使用
-
LBA0:相容于 MBR 模式,前446字节存储开机管理程序,原本记录的分区表位置,放置了一个标记磁盘为 GPT 格式的记录,不懂 GTP 分区表的磁盘管理程序就不会认识这个磁盘了
-
LBA1(GPT表头记录):记录了分区表本身的位置和大小,同时记录了备份用的 GTP 分区位置,还放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码判断 GTP 是否正确,有错误的话,可以通过这个记录来取得备份的 GPT,来进行一个恢复
-
LBA2-33(实际记录分区信息处):一个 LBA 可以记录4个分区信息,所以默认情况下,磁盘可以有4*32=128个分区信息,支持最大的容量限制也是很大很大的,至少得200多个T了吧
-
GPT 分区没有所谓的主分区、扩展分区、逻辑分区的说法,每一个分区都可以独立存在,每一个都是主分区,每一个分区都可以拿来格式化后使用
相关文章
- Linux网络抓包分析工具Tcpdump基础篇[参数说明]
- [Linux] linux awk命令详解
- 鸟哥的Linux私房菜——基础学习篇 —— 笔记2
- Linux网络配置详解
- 运维基础-Linux发展史、安装、基本操作
- 【Linux基础】linux下的stdin,stdout和stderr理解
- Linux基础之linux常用命令之文本替换
- linux下mysql 5.1.73 源码安装笔记
- linux磁盘分区详解
- Linux基础命令
- 《鸟哥的Linux私房菜-基础学习篇(第三版)》(五)
- linux下重新打包签名生成新的app
- linux - vim 意外退出导致下次vim进入报错提示恢复
- 【Linux 内核】调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )
- 4.第一章 计算机基础和Linux安装 -- Linux系统安装(四)
- L83.linux命令每日一练 -- 第11章 Linux系统管理命令 -- ipcs和ipcrm
- L54.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- umount和df
- L1.linux命令每日一练 -- 第一章 Linux命令行简介
- Linux基础命令-df显示磁盘的使用情况
- Linux基础命令-netstat显示网络状态
- Linux基础命令-more以分页显示内容
- Linux基础命令-alias设置别名
- Linux基础命令-ls显示目录和文件的属性信息
- linux下常用压缩命令 tar压缩Linux解压 压缩Linux压缩Ubuntu压缩centos压缩解压gz txt.gz
- linux达人养成计划学习笔记(八)—— shell基础
- 74:应急响应-win&linux分析后门&勒索病毒&攻击 ==》暴力破解攻击成功的在4624的eventID里!PChunter可查看非系统的可疑启动项/服务/定时任务,还是很直观的!Linux下gscan也不错,EDR可参考。
- Linux|centos二进制方式安装系统和网络监控神器prometheus+grafana(装逼神器它来了)(基础篇 一)
- Linux中shell的使用(零基础学习笔记)
- Linux基础笔记16 | 软件包 RPM 详解
- Linux基础笔记11 | 链接文件详解
- Linux基础笔记9 | 文件内容查看与处理
- Linux基础笔记3 | 系统基础知识与操作
- Linux基础笔记4 | 必备基础命令
- USB转串口设备linux随笔
- windows与linux常用命令对比
- Linux基础入门到精通之虚拟机网络设置说明