[转]如何使用大于2T的块设备

   Linux在内核中选择支持Large Block Device时,是可以使用大于2T的块设备的。但是当使用Fdisk来查看这个块设备时,却发现最大只能显示出来2T的空间,而且使用其他的分区工具时也很难使用大于2T的块设备。
   Fdisk所使用的分区表为MBR,Master Boot Record,即主引导记录。他是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。硬盘的0柱面、0磁头、1扇区称为主引导扇区,Fdisk将会写512个字节的记录在此,即MBR记录。启动过程详见How It Works : Master Boot Record (MBR),http://cang.baidu.com/lis/snap/2a0542a949b8e3b8ba4fb147.html。
MBR的组成
   一个扇区的硬盘主引导记录MBR由4个部分组成:

引用
主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序。
出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节。
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH–01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
结束标志字,偏移地址01FE—01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。

MBR的组成结构图:
点击在新窗口中浏览此图片MBR中的分区信息结构
占用512个字节的MBR中,偏移地址01BEH–01FDH的64个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用 FDISK定义分区说确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节,其内容含义如下所示。
分区项表(16字节)内容及含义:
点击在新窗口中浏览此图片

/*

* per partition table entry data

*

* The four primary partitions have the same sectorbuffer (MBRbuffer)

* and have NULL ext_pointer.

* Each logical partition table entry has two pointers, one for the

* partition and one link to the next one.

*/

struct pte {

struct partition *part_table; /* points into sectorbuffer */

struct partition *ext_pointer; /* points into sectorbuffer */

char changed; /* boolean */

unsigned int offset; /* disk sector number */ <--限制在这里char *sectorbuffer; /* disk sector contents */ } ptes[MAXIMUM_PARTS];

parted:

引用
/* ripped from Linux source */

struct _DosRawPartition {

uint8_t boot_ind; /* 00: 0x80 – active */

RawCHS chs_start; /* 01: */

uint8_t type; /* 04: partition type */

RawCHS chs_end; /* 05: */

uint32_t start; /* 08: starting sector counting from 0 */ <--限制uint32_t length; /* 0c: nr of sectors in partition */ <--限制} __attribute__((packed));

由上可见,如果使用fdisk来分区的话,是不可能使用到大于2T的块设备的。这里,就要引入GPT的概念。
在EFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入。
GUID 分区表 (GPT)是一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构。与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 EB字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
与支持最大卷为 2 TB (terabytes) 并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR) 磁盘分区的样式相比,GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB (exabytes) 并且每磁盘最多有 128 个分区。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。
下面说一下如何使用GPT分区表。首先要在内核中加入对EFI的支持(一般默认都加了),然后使用parted即可。
例:

parted /dev/cciss/c0d1
mklabel gpt /*使用gpt分区表*/
mkpart primary 0 7143487.601
quit

这样就把/dev/cciss/c0d1使用gpt分区表,并且建立一个分区,分区大小约为7T。然后使用mkfs对/dev/cciss/c0d1p1进行创建文件系统就可以使用了。
上述是针对Linux操作系统来做的相关操作,其实在其他系统上都是相似的,只要改变块设备的分区表类型为GPT即可使用超过2T的块设备了。

※引用自:
http://hi.baidu.com/linux/blog/item/5e2442a70db50694d14358ec.html

给Vmware进行硬盘扩容

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/113020.html

(0)
上一篇 2021年8月27日
下一篇 2021年8月27日

相关推荐

发表回复

登录后才能评论