MBR分区表为什么最大只能识别2TB硬盘容量
1. 前言
最近公司的服务器硬盘坏了,需要换一个新的硬盘,容量是2TB,用的fdisk进行分区,期间搜索分区工具,看到了关于MBR(Master Boot Record)与GPT(GUID partition table)硬盘分区表的一些区别,其中说到MBR分区表最多只能管理2TB的容量,对此查了一下《鸟哥的私房菜》发现是简化过的,并没有解决疑惑,于是查了一些资料,总结如下。
2. 机械硬盘的结构
2.1. 基本结构
机械硬盘主要由磁盘盘片、磁头(header)、主轴与传动轴等组成,数据就存放在磁盘盘片中,实际图片如下:

值得注意的是,硬盘是上下磁头的,也就是一个盘片有两个磁头进行操作,如下图所示:

2.2. 磁道、扇区和柱面
机械硬盘的逻辑结构主要分为磁道、扇区和柱面,如下图所示:

什么是磁道(track)?每个盘片都在逻辑上有很多的同心圆,最外面的同心圆就是 0 磁道。我们将每个同心圆称作磁道,硬盘的磁道密度非常高,通常一面上就有上千个磁道。但是相邻的磁道之间并不是紧挨着的,这是因为磁化单元相隔太近会相互产生影响。
那扇区(sector)又是什么呢?扇区其实是很形象的,大家都见过折叠的纸扇吧,纸扇打开后是半圆形或扇形的,不过这个扇形是由每个扇骨组合形成的。在磁盘上每个同心圆是磁道,从圆心向外呈放射状地产生分割线(扇骨),将每个磁道等分为若干弧段,每个弧段就是一个扇区。每个扇区的大小是固定的,为 512Byte。扇区也是磁盘的最小存储单位。
柱面(cylinder)又是什么呢?如果硬盘是由多个盘片组成的,每个盘面都被划分为数目相等的磁道,那么所有盘片都会从外向内进行磁道编号,最外侧的就是 0 磁道。具有相同编号的磁道会形成一个圆柱,这个圆柱就被称作磁盘的柱面,如下图所示。

硬盘的大小是使用"磁头数 x 柱面数 x 扇区数 x 每个扇区的大小"这样的公式来计算的。
3. MBR分区表的结构
MBR磁盘分区是一种使用最为广泛的分区结构,它也被称为DOS分区结构,但它并不仅仅应用于Windows系统平台,也应用于Linux,基于X86的UNIX等系统平台。它位于磁盘的0号扇区(一扇区等于512字节),是一个重要的扇区(简称MBR扇区)。
MBR扇区由以下几个部分组成:
- 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有 446 bytes;
- 分区表(partition table):记录整颗硬盘分区的状态,有 64 bytes
- MBR结束标志:占MBR扇区最后2个字节,一直为“55 AA”

可以看到分区表只有64字节,最多只能有4个主分区或者3个主分区1个扩展分区。
那么每个分区表项占有16个字节,如果是记录起始扇区id,也不止2T的容量啊。这就需要了解一下分区表的结构和硬盘的寻址方式了。
如下图所示,为MBR分区表的详细结构:

可以看到,这里使用了柱面(cylinder),磁头(header),扇区(sector)三个变量进行寻址,这种寻址方式称为CHS,这里表示的地址已经不是物理地址,而是逻辑地址了,又称为LARGE寻址方式,在这种方式下,
硬盘容量=磁头数×柱面数×扇区数×扇区大小(一般为512byte)
那如果磁头数足够多,岂不是可以管理无限的容量?答案当然是否定的,我们看到上表的最后两项,如下图所示:

可以看到两个以4字节表示分区之前以及本分区的扇区数,也就是可以表示的最大扇区数为:
2^32=4294967296
而每个标准扇区的容量为512字节,于是能表示的最大容量为:
4294967296*512
=2199023255552Bytes(硬盘厂商采用1:1000进行单位换算,因此也有2.2TB一说)
=2147483648 KB
=2097152 MB
=2048 GB
=2TB
在网上还可以找到另外一个答案:
由于它(MBR)是为32位操作系统设计的,这就限制了它的寻址范围为2的32次方个扇区……
其实这种说法是不严谨的,准确来说,MBR分区表最大最大能容纳2T容量的主要原因,是因为分区表中的本分区表之前使用的扇区数以及分区的总扇区数这两个字段为4字节,因此导致的限制。
尽管后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍然用16个字节存储。
4. 参考
《鸟哥的linux私房菜》
(完)
MBR分区表为什么最大只能识别2TB硬盘容量的更多相关文章
- VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?
一.问题描述 刚刚在VirtualBox中使用Ubuntu虚拟机中,出现了虚拟硬盘不够用的情况. 乖乖,查了一下磁盘空间,如下所示: df -H 原来是上午安装Ubuntu虚拟机的时候,选择了动态分 ...
- IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘
以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...
- 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决
问题: 今天我的diy电脑重装系统时,遇到了一个棘手的问题.在选择安装分区的时候,提示有这样的错误. Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows ...
- Windows无法安装到这个磁盘 选中的磁盘具有MBR分区表解决方法
在安装 win10的时候,会出现这种提示:Windows 无法安装到这个磁盘.选中的磁 盘具有 MBR 分区表.在 EFI 系统上, Windows 只能安装到 GPT 磁盘.出现这种 情况主要是因为 ...
- MBR分区表的备份与还原
MBR分区表的备份与还原 MBR分区的存储 从下图可以看出,MBR分区前446字节是boot loader:接下来64字节是分区表:再然后就是三个主分区加一个拓展分区. 一.备份分区表,要跳过前446 ...
- mac 无法识别seagate硬盘、无法向其写入文件
1,无法识别 Seagate 硬盘 新买的mac air Captian 10.11.6系统,连上硬盘根本不出现盘符,usb插头不要插得太深,慢慢的插入,看到硬盘白灯亮起就可以了 2,无法向 Seag ...
- SQL SERVER 2012 只能识别20个CPU的问题
背景 最近在给客户优化时时候发现客户的虚拟机环境分配了32C 但是只能识别20个,物理机64C,64G内存,本来没什么,CPU利用率在40%左右,但是优化后同时增加了 CPU和内存的分配,CPU32增 ...
- [CentOS7] parted用于磁盘分区(同时支持GPT和MBR分区表)
声明:本文主要总结自:鸟哥的Linux私房菜-第七章.Linux 磁碟與檔案系統管理,如有侵权,请通知博主 fdisk支持MBR分区表,gdisk支持GPT分区表,而parted支持两者 不知道为什么 ...
- 解决树莓派8G的SD卡只能识别3.3G,SD卡扩容
8GB microSD在Windows下使用Win32 Disk Imager下载映像后,在RPi中只能识别出3.3GB.而本身还有很多容量没有释放出来. 使用sudo raspi-config工具可 ...
随机推荐
- 关于vm.min_free_kbytes的合理设置推测
前言 之前系统出现过几次hung住的情况,没有oom,也没有其它内存相关的信息,而linux设计就是去尽量吃满内存,然后再回收清理的机制 探讨 目前这个参数还没有找到合适的处理这个预留的参数,一般也没 ...
- 01、Spring环境搭建
环境:SpringSource-Tool-3.9.9.Eclipse4.10.0 首先,我们需要解决的是Spring包的问题,我看了百度.CSDN很多都是直接一上来随便丢个包就可以安装了,搞得我弄了一 ...
- React Native两种加载图片的方式
1 加载网络图片 通过uri就可以加载网络图片 <Image source={{uri:'http://facebook.github.io/react/img/logo_og.png'}} s ...
- python基础之条件语句
检查相等和不等 多个检查条件 age1 = 22 age2 = 19 s1 = age1 > 21 and age2 > 19 print(s1) s2 = age1 > 21 or ...
- day98:MoFang:服务端项目搭建
目录 1.准备工作 2.创建项目启动文件manage.py 3.构建全局初始化函数并在函数内创建app应用对象 4.通过终端脚本启动项目 5.项目加载配置 6.数据库初始化 1.SQLAlchemy初 ...
- kafka入门之broker--通信协议
kafka的通讯协议是基于tcp之上的二进制协议,所有类型的请求和响应都是结构化的,由不同的初始类型构成.kafka使用这组协议完成各个功能的实现. 单个kafka client通常需要同时连接多个b ...
- 浅谈代理模式与java中的动态代理
代理模式的定义: 代理模式是一个使用律非常高的模式,定义如下: 为其他对象提供一种代理,以控制对这个对象的访问. 类图: 简单的静态代理: public interface IRunner{ //这是 ...
- Elements-of-Python_02_DataType
(内容包括数据类型,运算符) 1.数据类型Data Types 1.1 简介Brief Introduction Python3中的数据类型,类型关键字,赋值,见下表: 1.1数字Number Pyt ...
- 删除list列表中的某一个元素的多种方法
当我们在处理业务的时候,很多情况下数据都要进行一层层的过滤,最近需要给一个列表中去除不符合条件的元素, 本来觉着挺简单的,Google了下发现很多方法都是旧方法,根本不符合我的需求. 于是参考着网上的 ...
- 【NOIP2017提高A组模拟9.7】JZOJ 计数题
[NOIP2017提高A组模拟9.7]JZOJ 计数题 题目 Description Input Output Sample Input 5 2 2 3 4 5 Sample Output 8 6 D ...