CentOS中管理大于2T的磁盘分区


1. 磁盘分区信息存储的两种形式

常见磁盘分区存储形式类型有两种:MBR(MSDOS)GPT

1.1 什么是MBR

MBR(Master Boot Record,主引导记录)。
MBR是存在于驱动器最开始部分的一个特殊的启动扇区,一般叫它0扇区。它由446B的启动加载器(Windows和Linux的不同),64B的分区表,和2B用来存放区域的有效性标识55AA,共512B。

  • MBR分区最大只支持2T
    分区表每16B标识一个分区,包括分区的活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等信息。
    分区总扇区数目决定了这一分区的大小,一个扇区一般512B,所以4个字节,32位所能表示的最大扇区数为2的32次方,也就决定了一个分区的大小最大为2T( 2**32 * 512 / 1024 / 1024 / 1024 /1024)。
  • MBR只支持最多4个主分区
    16B标识一个分区,64B就一共只能有4个分区,所以主分区最多只能有4个。一块磁盘如果要分多于4个分区,必须要分一个扩展分区,然后在扩展分区中再去划分逻辑分区。

1.2 什么是GPT

GPT(GUID Partition Table),这是最近几年逐渐流行起来的一种分区形式,如果要将使用GPT分区格式的磁盘作为系统盘,需要UEFI BIOS的支持,它才可以引导系统启动。UEFI一种称为Unified Extensible Firmware Interface(统一的可扩展的固件接口,它最终是为了取代BIOS,目前市面上的BIOS大多已支持UEFI。GPT也是为了最终取代MBR的。
GPT相比MBR的优点:

  • 分区容量可以大于2T。
  • 可以支持无限个主分区。
  • 更为健壮
    MBR中分区信息和启动信息保存在一起而且只有一份,GPT在整个磁盘上保存多份这个信息,并为它们提供CRC检验,当有数据损坏时,它能够进行恢复。

2. 小于2T的分区的管理

因为传统的MBR分区,支持的最大分区为2T,也可以一定程度上等同于磁盘大小,必定2T以上的硬盘不是非常普及。在CentOS中可以使用fdisk指令进行管理。详细过程不在赘述。

3. 超过2T的分区的管理

当CentOS中识别到有磁盘容量超过2T时,如果试图使用fdisk指令对其分区会有相应的警告提示,大致如下:

  WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

明确提示需要使用parted进行管理,如果系统中没有这一指令,使用yum install -y parted进行安装即可。

  • 查看磁盘的分区情况
    parted -l 会打印出系统识别到的所有磁盘的分区情况
  • 指定分区类型
    parted /dev/sdb 先进入那块超过2T的磁盘的管理界面中。
    mklabel gpt parted指令支持的分区类型选项:{aix|amiga|bsd|dvh|gpt|loop|mac|msdos|pc98|sun},这里需要选择gpt,msdos即为传统的MBR分区方式。
  • 创建分区
    mkpart {primary|extended|logical| [fs-type] start end GPT分区没有主分区数的限制,这里一般选择primary这一类型。GPT支持的fs-type没有fdisk那么多,它支持的有:ext2、ext3、ext4、fat16、fat32、NTFSReiserFS、JFS、XFS、UFS、HFS、swap这些文件系统格式。
    start、end则是指定分区的起始和结束位置,磁盘的第一个分区推荐start用0%或者2048s表示,避免出现分区没有对齐的而出现如下提示信息:
Warning: The resulting partition is not properly aligned for best performance.  

4K对齐
在磁盘中的扇区只有排列整齐才有利于发挥磁盘的最佳读写性能。这里的对齐即常听说的4K对齐。可以简单的理解4K对齐的作用:当在磁盘中存取小于4K的数据时,如果没有4K对齐这时候很可能需要将这份数据放到两个4K块中,会出现多次读写不同的块的情况,明显没有4K对齐只在一个块中去存取数据高效。
如果系统进行了磁盘内核参数的调整,可以使用以下公式计算出合适的磁盘第一分区的start值,单位为s,s表示扇区,如果没有调整start可以使用2048s或0%表示。end值可以使用百分比的形式,也可以使用数字加单位的形式,如50%,3T。

cat /proc/partition  #查看是否识别到那块大硬盘
cat /sys/block/sdb/queue/optimal_io_size
cat /sys/block/sdb/queue/minimum_io_size
cat /sys/block/sdb/alignment_offset
cat /sys/block/sdb/queue/physical_block_size

然后将optimal_io_size的值加上alignment_offset的值,再除以physical_block_size的值,得到这块盘分区的起始位置扇区编号。

  • 给分区命名
    name partition-number partition-name 如:
    name 1 test 将第一个分区命名为test。

  • 设置分区标志
    set partition flag state 可以给分区设置如下标志,即flag的值,仅限:"boot", "root", "swap", "hidden", "raid", "lvm", "lba", "legacy_boot" and "palo"。state的值为on或off。partition为相应的分区编号。

  • 打开或关闭分区标志
    toggle partition flag:取消或者开启分区标志。partition为相应的分区编号。

  • 检查分区是否对齐
    align-check type partition:检查分区类型是否满足类型的约束;
    type 必须是 "minimal" or "optimal".(完整检查和最小化检查),partition为分区编号。
    如果检查结果是not align,可以对分区重新进行格式化然后再次check,最好的情况应该是partition align。

  • 删除分区
    rm partition ,partition为分区编号。

注意:parted指令做的磁盘设置立即生效,不需要和fdisk一样使用w才会生效。

当完成对超过2T的磁盘分区以后,可以查看系统内核(cat /proc/partition)是否已成功识别到相应分区。如果识别到了,按照常规方式对分区进行格式化,然后挂载即可使用新的磁盘分区了。

你可能感兴趣的:(CentOS中管理大于2T的磁盘分区)