win备份linux磁盘_磁盘分区

摘自《鸟哥的linux私房菜》

2.2.1 磁盘连接的方式与装置文件名的关系

常见的磁盘接口有两种,分别是 SATA与SAS 接口,目前(2015)的主流是SATA 接口。不过更老旧的计算机则有可能是IDE接口! 以前的IDE接口与SATA 接口在Linux 的磁盘代号并不相同。近年来为了统一,大部分Linux distribution 已经将IDE接口的磁盘文件名仿真成跟SATA 一样了!

虚拟化是目前很常见的一项技术, 虚拟机使用的『虚拟磁盘』并不是正规的磁盘接口!这种情况底下,你的磁盘文件名就不一样了! 正常的实体机器大概使用的都是/dev/sd[a-] 的文件名,至于虚拟机环境底下,为了加速,可能就会使用/dev/vd[a-p] 这种装置文件名喔!

SATA/USB/SAS 等磁盘接口都是使用SCSI 模块来驱动的, 这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。如果你的PC 上面有两个SATA 磁盘以及一个USB 磁盘,而主板上面有六个SATA 的插槽。这两个SATA 磁盘分别安插在主板上的SATA1, SATA5 插槽上。Linux是使用侦测到的顺序来决定装置文件名的,并非与实际插槽代号有关,因此装置的文件名如下:

  • SATA1 插槽上的檔名:/dev/sda
  • SATA5 插槽上的檔名:/dev/sdb
  • USB 磁盘(开机完成后才被系统捉到):/dev/sdc

每个分区的装置文件名又是什么?

2.2.2 MSDOS(MBR) 与GPT 磁盘分区表(partition table)

MSDOS (MBR) 分区表格式与限制

早期的 Linux 系统为了兼容于Windows 的磁盘,因此使用的是支持Windows 的MBR(Master Boot Record) 的方式来处理开机管理程序与分区表!而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区,这个扇区通常是 512bytes 的大小(旧的磁盘扇区都是512bytes ),

即,第一个扇区512bytes 会有这两个数据:

  • 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes
  • 分区表(partition table):记录整颗硬盘分区的状态,有64 bytes

分区表仅有64 bytes 容量,最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。若将硬盘以长条形来看,那么那 64 bytes 的记录区段有点像底下的图示:

54dead31df7d4e4697597a8e64063cec.png

假设上面的硬盘装置文件名为/dev/sda 时,那么这四个分区槽在Linux 系统中的装置文件名为:

  • P1:/dev/sda1
  • P2:/dev/sda2
  • P3:/dev/sda3
  • P4:/dev/sda4

既然分区表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分出四个分区?我们可以利用额外的扇区来记录更多的分区信息,即延伸分区。我们可以透过延伸分区所指向的那个区块继续作分区的记录。实际上图示有点像底下这样:

e66501cd4f2fe8056b80bead5af15709.png

在在上图当中,硬盘的四个分区记录区仅使用到两个,P1 为主要分区,而P2 则为延伸分区。

请注意,延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。

由延伸分区继续切出来的分区槽,称为逻辑分区槽(logical partition)。上述的分区槽在Linux 系统中的装置文件名分别如下:

  • P1:/dev/sda1
  • P2:/dev/sda2
  • L1:/dev/sda5
  • L2:/dev/sda6
  • L3:/dev/sda7
  • L4:/dev/sda8
  • L5:/dev/sda9

主要分区、延伸分区与逻辑分区总结:

  • 主要分区与延伸分区最多可以有四笔(硬盘的限制)
  • 延伸分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由延伸分区持续切割出来的分区槽;
  • 能够被格式化后,作为数据存取的分区槽为主要分区与逻辑分区。延伸分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在Linux 系统中SATA 硬盘已经可以突破63 个以上的分区限制;

每组分区表仅有16bytes,可纪录的信息真的是相当有限的! 所以,在过去MBR 分区表的限制中经常可以发现如下的问题:

  • 操作系统无法抓取到2.2T 以上的磁盘容量!
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅446bytes,无法容纳较多的程序代码。

GUID partition table, GPT 磁盘分区表

过去一个扇区大小就是 512bytes 而已,不过目前已经有4K 的扇区设计出现!为了兼容所有的磁盘,在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此LBA(预设为512bytes) 来规划,而第一个LBA 称为LBA0 (从0 开始编号)。

GPT 使用了34 个LBA 区块来纪录分区信息!

GPT 除了前面34 个LBA 之外,整个磁盘的最后33 个LBA 也拿来作为备份!详细的结构有点像底下的模样:

864386b8174d2c3446548b60a193d0fd.png

LBA0 (MBR 相容区块)

与 MBR 模式相似的,这个兼容区块也分为两个部份,一个就是跟之前446 bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个兼容模式仅放入一个特殊标志的分区,用来表示此磁盘为GPT 格式之意。而不懂GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘喔!

LBA1 (GPT 表头纪录)

这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的GPT 分区放置的位置, 同时放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码来判断GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的GPT(磁盘最后的那个备份区块) 来恢复GPT 的正常运作!

LBA2-33 (实际纪录分区信息处)

从 LBA2 区块开始,每个LBA 都可以纪录4 笔分区纪录,所以在默认的情况下,总共可以有4*32 = 128 笔分区纪录!

因为每个LBA 有512bytes,因此每笔纪录用到128bytes 的空间,除了每笔纪录所需要的标识符与相关的纪录之外,GPT 在每笔纪录中分别提供了64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区槽来说, 他的最大容量限制就会在『264 * 512bytes = 263 * 1Kbytes = 233*TB = 8 ZB 。

现在 GPT 分区预设可以提供多达128 笔纪录,而在Linux 本身的核心装置纪录中,针对单一磁盘来说,虽然过去最多只能到达15 个分区,不过由于Linux kernel 透过udev 等方式的处理,现在Linux 也已经没有这个限制在了! 此外,GPT 分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在,当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用喔!

虽然新版的 Linux 大多认识了GPT 分区表,在磁盘管理工具上面, fdisk 这个老牌的软件并不认识GPT 喔!要使用GPT 的话,得要操作类似gdisk 或者是parted 指令才行!另外,开机管理程序方面, grub 第一版并不认识GPT 喔!得要grub2 以后才会认识的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值