MBR分区 和 GPT 分区
时间:2019-09-20
本文章向大家介绍MBR分区 和 GPT 分区,主要包括MBR分区 和 GPT 分区使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
MBR分区 和 GPT 分区
本文首发:https://www.cnblogs.com/somata/p/MBRAndGPT.html
MBR
标准MBR结构(源:主引导记录):
地址 | 描述 | 长度 (字节) |
---|---|---|
0 | 代码区(bootloader) | 440 (最大446) |
440 | 选用磁盘标志 | 4 |
444 | 一般为空值; 0x0000 | 2 |
446 | 标准MBR分区表规划 (四个16 byte的主分区表入口) |
64 |
511 | 55AAh MBR有效标志: 0x55AA |
2 |
MBR,总大小:446 + 64 + 2 = | 512 |
MBR的几点特性:
- 由于MBR分区表大小限制,所以MBR只能由最大4个主分区,或3个主分区+1个扩展分区。
- 扩展分区可以划分成无数个逻辑分区,但是逻辑分区分区表并不会记录在MBR表中,而是另外记录在了扩展分区。
MBR由于在最初设计没有考虑到如今的硬盘大小达到TB,所以MBR的最大磁盘大写支持为2.2TB(2.2×10字节)。
GPT
GPT构造:
(该图原上传者为英语维基百科的Kbolino - Transferred from en.wikipedia to Commons. Transfer was stated to be made by User:Kbolino.,CC BY-SA 2.5,链接)
上图就是GPT的完整构造了,按照一个扇区就是一个LBA,这里可以这样来分:
LBA0:MBR分区
LBA1:分区表开头(源:全局唯一标识分区表)
用于记录与GPT格式相关的信息
起始字节 | 长度 | 内容 |
---|---|---|
0 | 8字节 | 签名("EFI PART", 45 46 49 20 50 41 52 54) |
8 | 4字节 | 修订(在1.0版中,值是00 00 01 00) |
12 | 4字节 | 分区表头的大小(单位是字节,通常是92字节,即5C 00 00 00) |
16 | 4字节 | 分区表头(第0-91字节)的CRC32校验,在计算时,把这个字段作为0处理,需要计算出分区序列的CRC32校验后再计算本字段 |
20 | 4字节 | 保留,必须是0 |
24 | 8字节 | 当前LBA(这个分区表头的位置) |
32 | 8字节 | 备份LBA(另一个分区表头的位置) |
40 | 8字节 | 第一个可用于分区的LBA(主分区表的最后一个LBA + 1) |
48 | 8字节 | 最后一个可用于分区的LBA(备份分区表的第一个LBA − 1) |
56 | 16字节 | 硬盘GUID(在类UNIX系统中也叫UUID) |
72 | 8字节 | 分区表项的起始LBA(在主分区表中是2) |
80 | 4字节 | 分区表项的数量 |
84 | 4字节 | 一个分区表项的大小(通常是128) |
88 | 4字节 | 分区序列的CRC32校验 |
92 | * | 保留,剩余的字节必须是0(对于512字节LBA的硬盘即是420个字节) |
LBA2~33: 分区表项(源:全局唯一标识分区表)
用于记录每个分区的相关信息。
起始字节 | 长度 | 内容 |
---|---|---|
0 | 16字节 | 分区类型GUID |
16 | 16字节 | 分区GUID |
32 | 8字节 | 起始LBA(小端序) |
40 | 8字节 | 末尾LBA |
48 | 8字节 | 属性标签(如:60 表示“只读”) |
56 | 72字节 | 分区名(可以包括36个UTF-16(小端序)字符) |
GPT几点特性:
- 为防止部分机器无法识别第一段扇区而破坏最开始的512字节,所以GPT的开头512字节留空。
- 由于GPT分区设计特殊,所以需要硬件支持UEFI,才能使用GPT分区作为引导分区。
- GPT分区最多可以有128个主分区。
- 无扩展分区和逻辑分区概念。
- 操作系统和底层硬件必须是64位及以上的,不支持32位。
- 最高支持18EB(1.8×10字节)。
- 在磁盘最后一段由与GPT开头一段相同的内容,作为GPT分区表的备份。以防GPT分区损害无法恢复。
本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【EV233S4N】获取授权信息。
原文地址:https://www.cnblogs.com/somata/p/MBRAndGPT.html
- 显示mybatis的执行的sql
- spring cloud 学习(2) - eureka server注册中心高可用及安全认证
- mybatis在xml文件中处理大于号小于号的方法
- kafka集群部署
- Hadoop(九)Hadoop IO之Compression和Codecs
- 安卓第二夜 有趣的架构
- spring-boot 速成(12) - 如何注入多个redis StringRedisTemplate
- Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
- 简明 Git 命令速查表
- spring cloud 学习(8) - sleuth & zipkin 调用链跟踪
- 快速学习Bash
- JavaProblem之hashCode详解
- spring cloud 学习(6) - zuul 微服务网关
- ES6 Features系列:Template Strings & Tagged Template Strings
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Parcelable接口使用方法详解
- 假期结束了,撸一篇技术和大伙分享下吧!
- Android AIDL实现跨进程通信的示例代码
- Android中SharedPreferences简单使用实例
- 功能强大的Android滚动控件RecyclerView
- Android使用 Retrofit 2.X 上传多文件和多表单示例
- Android状态栏白底黑字的示例代码
- Android使用ViewPager实现顶部tabbar切换界面
- Android 中ScrollView与ListView冲突问题的解决办法
- Android数据库操作工具类分享
- Android使用RadioGroup实现底部导航栏
- Android 中Fragment与Activity通讯的详解
- Android常用控件ImageSwitcher使用方法详解
- Android实现阅读进度记忆功能
- Android 控制ScrollView滚动的实例详解