硬盘结构和基础知识
  扇区(Sector)为最小的物理储存单位,每个扇区为512 bytes,将扇区组成一个圆就是磁道(track),不同磁盘的相同磁道组成磁柱(Cylinder),磁柱是分区(partition)的最小单位。

   

硬盘的第一个扇区512bytes由主引导记录(Master boot record,MBR)和分区表(partition table),其中MBR占有446bytes,而partition table占有64bytes;硬盘最多只能分割为四个主分区或者是扩展分区(只能有一个),因为分区表只有64bytes,每条分区记录占16bytes,最后2bytes为55AA(标记该硬盘为可引导的)

扩展分区(引用其它额外的分区表)不能直接被格式化使用,必须将其继续分割为逻辑分区格式化后才能被使用;逻辑分区的数量依操作系统而不同,在Linux系统中IDE硬盘最多有59个逻辑分区(5号到63号), SATA硬盘则有11个逻辑分割(5号到15号)

为了能在一个磁盘上安装多个系统,引入了分区的概念;主流的分区机制MBR和GPT
  MBR(Master Boot Record)是传统的分区机制,应用于绝大多数使用BIOS的PC设备;MBR支持32bit和64bit系统;MBR支持分区数量是有限;MBR只支持不超过2T的硬盘,超过2T的硬盘将只能使用2T空间(有第三方解决方法)
  MBR结构:占用硬盘第一个扇区512bytes,前446bytes为系统启动引导代码(Bootstrap code are);接下来64bytes为分区表(partition table),最后2bytes为55AA
  MBR分区:主分区最多创建4个;一个扩展分区会占用一个主分区;使用逻辑分区必须先创建一个扩展分区

GPT分区格式:
  GPT(GUID(Globals Unique Identifiers) Partition Table)是一个较新的分区机制,解决了MBR的很多缺点;支持超过2T的硬盘(寻址空间更大);向后兼容MBR;必须在支持UEFI的硬件上才能使用(取代BIOS的新一代的引导系统);Windows7 64bit、windowsServer2008 64bit、Mac、Linux系统都能支持GPT
  支持128个分区,使用64位寻址空间,支持8Z大小硬盘(512Byte/block),64Z大小硬盘(4096Byte/block)
  使用128位UUID 表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位
                

LBA(Logical Block Address)逻辑区块地址,LBA指某个数据区块的地址或是某个地址所指向的数据区块。从0开始编号来定位区块,第一区块LBA0,第二区块LBA=1,依此类推;逻辑区块通常是512bit或1024bit一组(一个存储块,或物理上的一个扇区);

LBA0:保护性MBR
  在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR叫做保护性MBR(Protective MBR)。其中包含有磁盘签名,MBR分区表,结束标志。这里没有引导代码,分区表中只有一个分区表项,GPT不会用到,这个分区项只是为了让系统认为磁盘是合法的,阻止不能识别GPT分区的磁盘工具试图对其进行分区或格式化等操作。

LBA1:主要GPT头部
  主要GPT头部位于1号扇区,会定义分区表的起始位置,结束位置,分区表项个数;
  分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。

LBA2-33:分区表项
  分区表位于GPT磁盘的2-33号扇区,一共占用32个扇区,能够容纳128个分区表项。每个分区表项大小为128字节。因为每个分区表项管理一个分区,所以GPT磁盘可以创建128个分区。
GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

LBA34:分区区域
  GPT分区区域就是用户使用的分区,也是用户进行数据存储的区域。分区区域的起始地址和结束地址由GPT头定义。

LBA -33~-2:分区表备份
  分区区域结束后就是分区表备份,其地址在GPT头备份扇区中有描述。分区表备份是对分区表32个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也能够保证正常识别分区

LBA -1:GPT头备份
  GPT头有一个备份,放在GPT磁盘的最后一个扇区,但这个GPT头备份并非完全GPT头备份,某些参数有些不一样。复制的时候根据实际情况更改一下即可。

GPT分区优点:与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:
  1、支持2TB以上的大硬盘
  2、每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)
  3、分区大小几乎没有限制
  4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复
  5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率
  6、虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突
  7、每个分区可以有一个名称(不同于卷标)

硬盘接口(接口速率不代表硬盘的速率)
  IDE(ATA):Integrated Drive Electronics电子集成驱动器  并口,每个控制器可接两个硬盘(master、slave)  133MB/S
  /dev/hd[a-d][1-63] 为IDE接口的磁盘文件名
  /dev/hda[5+]    逻辑分区5开始
  SCSI:Small Computer System Interface小型计算机接口  并口,采用Ultra320或Ultra640 SCSI标准的SCSI硬盘  320MB/s或640MB/s
  SATA:Serial ATA  串口  150MB/s、300MB/s、600MB/s
  SAS:Serial Attached SCSI串行连接SCSI  串口  320MB/s  600MB/s
  /dev/sd[a-p][1-15]:为SCSI、SATA、USB、SAS、Flash等接口磁盘文件名
  USB:Universal Serial Bus  通用串行总线  串口  480MB/s
  注意:RedHat 6以后所有的磁盘文件名都是/dev/sd

  获取IDE或SCSI磁盘相关硬件信息
  hdparm
  -i 从操作系统读取
  -I 直接从硬盘读取
  -g 显示硬盘的布局信息
  -t 测试硬盘的读写性能
  -T 测试硬盘的缓存性能

设备文件
  内核引用不同设备的时候是通过主设备号和次设备号引用的;设备文件是作为设备的访问入口的,我们发给设备文件的内容,就相当于发给这个设备的内容
  块设备(b):按块为单位,随机访问的设备,例如硬盘
  字符设备(c):按字符为单位,线性设备有顺序的,例如键盘

  主设备号(major number):标识设备类型,用于标明设备所需要的驱动程序
  次设备号(minor number):标识同种设备类型中的不同设备,是特定设备的访问入口

mknod  创建设备文件
  mknod [OPTION]... NAME TYPE [MAJOR MINOR]
  -m MODE 创建后的设备文件的访问权限
  例子:mknod /tmp/mydev b 66 0

磁盘分区管理命令
  fdisk  创建MBR分区,也支持GPT
  gdisk  创建GPT分区
  parted  高级分区操作(创建、复制、调整大小等等)

fdisk 对于一个硬盘最多只能管理15个分区
  查看磁盘分区信息:
  fdisk -l [-u] [Device]

管理磁盘分区:
 fdisk提供了一个交互式接口来管理分区,他有许多命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直接使用w命令保存至磁盘上
  fdisk /dev/sda
  d 删除分区
  n 新建一个分区
  p 创建主分区
  e 创建扩展分区
  p 显示当前硬盘的分区,包括没保存的改动
  t 修改分区类型ID,就是文件系统的类型ID(ID指定为你将要格式化成那种类型文件系统的ID)
  L 显示所支持的文件系统类型对应的ID
  w 保存退出
  q 不保存退出
  m 帮助

支持分区的ID类型

  分区表识别
 如果是已经挂载上正在使用的硬盘,在将剩余的空间进行分区后,内核还不能立即识别新建分区信息,需要重新读取分区表才能显示出来,显示出来后才能对其进行格式化、挂载;如果是新硬盘分区完后,直接partprobe指定的磁盘文件名就可以了
 cat /proc/partitions      查看当前内核识别到的分区信息

通过以下命令可以让内核识别新添加的分区信息
  Centos5的系统直接partprobe /dev/sda
  Centos6的系统需要通过partx和kpartx两个命令多次读取(按下面的命令顺序执行),但也有可能不成功,如果还读取不出来只能重启系统
   kpartx -l /dev/sda  显示当前sda硬盘上的所有分区信息
   kpartx -af /dev/sda -a创建所有分区映射表-f是强制创建
   partx -a /dev/sda  读取硬盘创建所有分区表
   hdparm -z /dev/sda  这个命令也可以重读分区表
  Centos7的系统可以用partx(多次执行)
    partx -a /dev/sda  创建分区映射表
   partx -n m:n     指定分区编号

  lsblk 列出系统下的所有磁盘和磁盘分区信息
  -f 同时列出该磁盘内的文件系统名称、卷标、UUID

如果想分区为GPT类型,请使用gdisk或parted工具
  parted /dev/sda print 可以查看分区类型是MBR还是GPT
  不要在已有MBR分区的硬盘上面使用gdisk,也不要在已有GPT分区硬盘上使用fdisk

Linux 磁盘管理及分区的更多相关文章

  1. linux磁盘管理与分区 转载

    原文:http://zhengjianglong.leanote.com/post/linux%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA 一.基础知识 一块磁盘可以分为多 ...

  2. Linux 磁盘管理(分区、创建文件系统、挂载)

    Linux设备文件可以分为两类 b : 按块为单位,随机访问设备(块设备文件)  如:硬盘 c : 按字符为单位,线性设备(字符设备文件)  如:键盘 设备文件位于/dev下 主设备号(major n ...

  3. Linux磁盘管理——swap分区

    转自:Linux Swap交换分区设置 对swap分区的误解 一种流行的.以讹传讹的说法是,安装Linux系统时,交换分区swap的大小应该是内存的两倍.也就是说,如果内存是2G,那么就应该分出4G的 ...

  4. Linux 磁盘管理

    Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...

  5. df、du、fdisk:Linux磁盘管理三板斧的使用心得(转载)

    From:http://os.51cto.com/art/201012/240726_all.htm 作者介绍:李洋(博客),博士毕业于中科院计算所.10多年来一直从事计算机网络信息安全研发工作,曾主 ...

  6. linux 磁盘管理学习笔记

    磁盘管理命令:fdisk df du fdisk #查看硬盘分区表 df #查看分区使用情况 du #查看文件占用空间情况lvdisplay #逻辑分区 [1] 李洋.df.du.fdisk:Linu ...

  7. linux磁盘管理系列-软RAID的实现

    1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...

  8. linux磁盘管理系列-LVM的使用

    LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...

  9. linux磁盘管理系列三:LVM的使用

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

随机推荐

  1. Day 02 - 02 编程语言的分类

    编程语言的分类 机器语言分为: 1.机器语言 优点:执行代码效率非常快 缺点:开发效率低 2.汇编语言 优点(相对于机器语言):开发效率高 缺点(相对于机器语言):执行效率低 3.高级语言 解释型(同 ...

  2. JS中的异步

    Hello,日常更新的我“浪”回来了!!! JS中有三座高山:异步和单线程.作用域和闭包.原型原型链 今天“浪”的主题是JS中的异步和单线程的问题. 主要从这三个方面入手 一.什么是异步(与同步作比较 ...

  3. NOIP2016 DAY1 T3 换教室

    换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内 ...

  4. MBR和GPT分区学习

    1.MBR 早期的windows和linux都采用的MBR的方法来处理开机引导程序和分区表,对于linux的MBR分区来讲,0柱面0磁道1扇区用于引导驱动程序,第一扇区有512个字节,前446字节存放 ...

  5. 论文阅读笔记“Attention-based Audio-Visual Fusion for Rubust Automatic Speech recognition”

    关于论文的阅读笔记 论文的题目是“Attention-based Audio-Visual Fusion for Rubust Automatic Speech recognition”,翻译成中文为 ...

  6. Django REST Framework 数码宝贝 - 3步进化 - 混合类 -->

    读了我这篇博客, 你会刷新对面对对象的认知, 之前的面对对象都是LJ~~~ 表结构 class Publisher(models.Model): name = models.CharField(max ...

  7. javaScript - 面向对象 - ES5 和 ES6

    javaScript - 面向对象 - ES5 和 ES6 ES5之前用 构造函数 构造函数的特点 就是一个普通函数, 他的函数名要大写.: 带方法的写法: 原型的方式: prototype 为内置的 ...

  8. 【【henuacm2016级暑期训练】动态规划专题 J】Red-Green Towers

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然最多1000行的样子. 从上到小做dp 设f[i][j]为前i行,使用了j个红色方块的方案数. f[1][r] = 1;如果r& ...

  9. 【【henuacm2016级暑期训练】动态规划专题 H】Greenhouse Effect

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 原题意等价于:给你一个序列(实数的位置没用!)..你可以改变其中某些元素的位置(插入到某些位置中间. 然后让他变成有序的. (有序的 ...

  10. 洛谷 1063 dp 区间dp

    洛谷 1063 dp 区间dp 感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态.. 初看这道题,不难发现它具有区间可并性,即(i, j)的最大值可以由(i, k) 与 (k+1, ...