Jun 16

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

linuxing , 11:19 , 基础知识 » 硬件处理 , 评论(1) , 引用(0) , 阅读(18786) , Via 本站原创 | |
   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字节)内容及含义:
点击在新窗口中浏览此图片
从上述来看,在使用MBR时,最大的分区数据为4个。从分区信息表的结构组成可以看到,一个分区的总扇区数是由4个字节来代表的,那么他所包含的最大扇区为2^(4*8)个,每个扇区为512字节,即每个分区包含的最大字节数为(2^32)*2^9=2^41 bytes,即2T。
其实这个限制在Fdisk和Parted等分区工具在定义磁盘的结构体时,也可以非常容易的看到。
Fdisk:
引用
/*

* 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

Tags: ,
linuxing Email Homepage
2007/06/18 10:45
补充说明:
以下内容摘自 Redhat :

红帽企业 Linux 4 Update 1 提供对大于 2 terabytes(TB)的磁盘设备的支持。
在 红帽企业 Linux 4 发行版本中对这个功能的支持比较有限,而 Update 1 大大
提高了对这个功能的支持(在用户空间程序和内核两个方面)。通常情况下,要支
持大于 2TB 的磁盘设备需要 Update 1。

请注意,以下的条件和限制与大容量设备的支持有关:

· 一般的磁盘设备是以512个字节为单位寻址的。SCSI 命令中的地址的大小就决定
了所支持的最大的设备容量。 SCSI 命令集包括 16 位地址(设备的容量被限制为
2GB)、 32 位地址(寻址范围限制在2TB)和 64 位地址。2.6 内核中 的 SCSI
子系统支持64位的命令。要支持大于 2TB 的磁盘,Host Bus Adapter(HBA)、
HBA 驱动程序和存储设备必须也支持 64 位地址。Red Hat 已经在一个
Winchester Systems FX400(需要 rev. 3.42B 或更高)中的一个 8TB 的逻辑单
元中测试了红帽企业 Linux 4 Update 1 提供的 QLogic qla2300 驱动和 Emulex
lpfc 驱动。

· 常用的 MS-DOS 分区表格式不能在一个大于 2TB 的设备上使用。要支持大于2TB
的设备,GPT 分区表格式必须被使用,并且必须使用 *parted* 工具程序来创建和
管理 GPT 分区。要创建一个 GPT 分区,使用 parted 的*mklabel gpt* 命令。

Red Hat 需要所有的块设备使用一个有效的分区表来初始化设备,即使整个设备只
有一个单一的分区。这个要求可以防止由一些错误或其它分区表造成的对这个设备
的影响。

· Anaconda 安装程序当前只在 Itanium^(TM) 结构的系统上支持 GPT 分区表。因
此,您只能在 Itanium^(TM) 平台上使用 Anaconda 安装或格式化大于 2TB 的设
备,在其它平台上无法执行这些任务。

· / 和 /boot 目录必须在一个2TB 或小于 2TB 的设备中。

· 一些已知的关于大设备中的 LVM2 的问题已经在红帽企业 Linux 4 Update 1 中
被解决。在安装 Update 1 之前不要在大于 2TB 的设备上使用 LVM2。

前面提到,Red Hat 需要每个块设备上都有一个分区表,即使这个设备是 LVM2 卷
的一部分。在这种情况下,您可以在整个设备上创建一个单一的分区。然后,确定
在使用 *pvcreate* 和 *vgcreate* 命令时确定了完整的分区名(例如,
/dev/sda1 而 /不是/ /dev/sda)。

· 组成一个 md 软 RAID 的每个磁盘的最大容量要小于或等于 2TB。md RAID 设备
本身可以大于 2TB。Red Hat 已经测试了容量大到 8TB 的 md 设备。

· 已知的一些在大于 4TB 的设备上使用 *e2fsprogs* 的问题现在已在红帽企业
Linux 4 Update 1 中被解决。在 Update 1 以前的版本中,这些问题可以通过在
创建 ext2 或 ext3 文件系统的时候指定 *mke2fs -b 4096* 来解决。在 Update
1 中您不再需要这么做了。

ext2 和 ext3 文件系统本身有 8TB 的限制。在这个限制内的设备已经在红帽企业
Linux 4 Update 1 上被测试。

您可以使用 *mke2fs -T largefile4* 命令来加快大文件系统的创建速度。

· GFS 文件系统在 32 位的系统上的限制是 16TB;在64 位系统上的限制是 8
exabytes(EB)。Red Hat 已经在 8TB 的设备上测试了 GFS 文件系统。

· 大于 2TB 的 NFS 分区已被测试并被支持。

·红帽企业 Linux 4 Update 1 用户空间的工具程序被编译为支持大文件。但是,
在这种模式中测试每个程序是不可能的。当您在使用一个支持大文件的工具程序时
如果有问题,请报告您的问题。

· *inn* 程序在大于 2TB 的设备上无法正常工作。这个问题将在以后的红帽企业
Linux 发行版本中解决。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]