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. 参考

硬盘结构(机械硬盘和固态硬盘)详解

MBR与GPT

全是干货:MBR分区结构以及GPT分区结构

《鸟哥的linux私房菜》

(完)

MBR分区表为什么最大只能识别2TB硬盘容量的更多相关文章

  1. VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?

    一.问题描述 刚刚在VirtualBox中使用Ubuntu虚拟机中,出现了虚拟硬盘不够用的情况.  乖乖,查了一下磁盘空间,如下所示: df -H 原来是上午安装Ubuntu虚拟机的时候,选择了动态分 ...

  2. IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘

    以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...

  3. 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决

    问题: 今天我的diy电脑重装系统时,遇到了一个棘手的问题.在选择安装分区的时候,提示有这样的错误. Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows ...

  4. Windows无法安装到这个磁盘 选中的磁盘具有MBR分区表解决方法

    在安装 win10的时候,会出现这种提示:Windows 无法安装到这个磁盘.选中的磁 盘具有 MBR 分区表.在 EFI 系统上, Windows 只能安装到 GPT 磁盘.出现这种 情况主要是因为 ...

  5. MBR分区表的备份与还原

    MBR分区表的备份与还原 MBR分区的存储 从下图可以看出,MBR分区前446字节是boot loader:接下来64字节是分区表:再然后就是三个主分区加一个拓展分区. 一.备份分区表,要跳过前446 ...

  6. mac 无法识别seagate硬盘、无法向其写入文件

    1,无法识别 Seagate 硬盘 新买的mac air Captian 10.11.6系统,连上硬盘根本不出现盘符,usb插头不要插得太深,慢慢的插入,看到硬盘白灯亮起就可以了 2,无法向 Seag ...

  7. SQL SERVER 2012 只能识别20个CPU的问题

    背景 最近在给客户优化时时候发现客户的虚拟机环境分配了32C 但是只能识别20个,物理机64C,64G内存,本来没什么,CPU利用率在40%左右,但是优化后同时增加了 CPU和内存的分配,CPU32增 ...

  8. [CentOS7] parted用于磁盘分区(同时支持GPT和MBR分区表)

    声明:本文主要总结自:鸟哥的Linux私房菜-第七章.Linux 磁碟與檔案系統管理,如有侵权,请通知博主 fdisk支持MBR分区表,gdisk支持GPT分区表,而parted支持两者 不知道为什么 ...

  9. 解决树莓派8G的SD卡只能识别3.3G,SD卡扩容

    8GB microSD在Windows下使用Win32 Disk Imager下载映像后,在RPi中只能识别出3.3GB.而本身还有很多容量没有释放出来. 使用sudo raspi-config工具可 ...

随机推荐

  1. 08 . Vue脚手架安装,使用,自定义配置和Element-UI导入使用

    Vue脚手架 Vue脚手架可以快速生成Vue项目基础的架构. 安装3.x版本的Vue脚手架 /* npm install -g @vue/cli@3.3 */ 基于3.3版本的脚手架命令创建Vue项目 ...

  2. 我要进大厂之大数据MapReduce知识点(1)

    01 我们一起学大数据 老刘今天分享的是大数据Hadoop框架中的分布式计算MapReduce模块,MapReduce知识点有很多,大家需要耐心看,用心记,这次先分享出MapReduce的第一部分.老 ...

  3. curl 超时问题解决

    curl -o /dev/null -s -w %{time_namelookup}---%{time_connect}---%{time_starttransfer}---%{time_total} ...

  4. 下载器Folx专业版有没有iTunes整合功能

    对于使用Mac系统的用户来说,相信对iTunes都不陌生.Folx专业版提供的iTunes整合功能,能将下载的音频.电影等文件自动同步到iTunes. 该功能将会有助于用户的音频.视频整合,对于喜欢听 ...

  5. 自学linux——13.Linux下mysql的安装

    MySQL数据库 1.数据库联系 2.软件安装 (1)源码包安装 优点:开源,可以修改源代码编译安装,更加适合自己的系统,稳定高效 缺点:安装步骤较多,容易出错编译过程时间较长 常用语法: #tar  ...

  6. git学习与应用

    git是什么 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目:同类的有svn,如果知道svn是干嘛的(上篇),那么git是啥就不多解释了. Git 与常用的版本控制工具 C ...

  7. Java基础教程——正则表达式

    正则表达式·Regular Expression 正则表达式就是一个用于匹配字符串的模板,正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 主要用到的对象: java.util.rege ...

  8. HEXO & CARDS主题进阶配置

    我想对于建立一个网站而言,第一步要能够做到正常在线访问以及定期产出一定的内容, 其实当网站建立好那一刻,这第一步已经算是完成了,不过我在此基础之上做了些扩展 在默认的card主题之上,我设置了标签.分 ...

  9. redis面试问题(一)

    五大常用数据类型 redis与其他缓存的比较 rdb和aof 主从复制,读写分离,哨兵机制 -------------------------------- 1.为什么使用redis (一)性能 我们 ...

  10. 冲刺随笔——Day_Ten

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...