Featured image of post 如何创建大于2T分区

如何创建大于2T分区

创建大于2T分区

前置信息

在Linux中对磁盘分区有两个方案:

  • MBR分区方案

  • GPT分区方案

特点:

  • MBR分区方案特点:

    • 最多支持四个主分区

    • 在Linux上使用扩展分区和逻辑分区最多可以创建15个分区

    • 由于分区中的数据以32位存储,使用MBR分区是最大支持2T空间

    • fdisk管理工具只能创建MBR分区

  • GPT分区方案特点

    • 是UEFI标准的一部分,主板必须要支持UEFI标准

    • GPT分区列表支持最大128PB(1PB=1024TB)

    • 可以定义128个分区

    • 没有主分区,扩展分区和逻辑分区的概念,所有分区都能格式化

    • gdisk管理工具可以创建GPT分区

由于常见的fdisk不支持GPT(在硬盘容量大于2Tb的时候无法使用fdisk进行分区的管理),故在IA64平台上管理磁盘时parted还是相当实用的,GNU Parted 具有丰富的功能,它除了能够进行分区的添加、删除等常见操作外,还可以进行移动分区、创建文件系统、调整文件系统大小、复制文件系统等操作。

parted 分配大于2T分区

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$ fdisk -l                                       # 查看要分的区

$ parted /dev/vdb                                #进入/dev/vdb进行分区, 交互模式
mktable                                          #进行分区(整块)
New disk label type? gpt                         #选择分区格式为gpt
Warning: The existing disk label on /dev/vdb will be destroyed and all data on
this disk will be lost. Do you want to continue? #这是一个警告,说是如果对这个这边进行分区,数据将会被覆盖而且数据会丢失,问你是否继续?
Yes/No? y                                        #输入“y”,表示确定,进行下一步
(parted) mkpart                                  #在命令行输出分区指令
Partition name? []? primary                      #分区类型为主分区,这是给分区起个名字,你可以自定义的,可以不用写我这里的参数,这里没有扩展分区一说,都是主分区。
File system type? [ext4]? xfs                    #设置文件系统为ext4/xfs
Start? 0                                         #设置起始分配位置
End? 100%                                        #设置结束分配位置 ,这里也可以写固定大小,例如想分50G的,可以在问号后面你写50G即可
(parted) p                                       #打印分区结果
(parted) quit                                    #退出分区模式,不需要输入保存的按钮,退出来它会自动保存分区表信息。

# 进行格式化
# 创建的分区也可以创建pv进一步使用

扩展

在使用parted分区工具时,告警显示新的分区没有正确对齐以达到最佳性能,如下:

1
2
3
4
5
6
7
(parted) mkpart primary 128 1048575
Warning: You requested a partition from 128s to 1048575s.                 
The closest location we can manage is 128s to 1048542s.
Is this still acceptable to you?
Yes/No? Yes                                                               
Warning: The resulting partition is not properly aligned for best performance.          <-----
Ignore/Cancel? C  

忽略这个告警分区可以正常创建,只不过会影响磁盘性能。那么该如何创建一个正确对齐的分区呢?

解决方案

可以通过查询设备相应的sysfs条目来计算所需的对齐,获取如下值:

1
2
3
# cat /sys/block/sdb/queue/optimal_io_size
# cat /sys/block/sdb/alignment_offset
# cat /sys/block/sdb/queue/physical_block_size

获取正确的偏移扇区数是将 optimal_io_size 和 alignment_offset 相加然后除以 physical_block_size.

For example:

1
2
3
4
5
optimal_io_size = 1310720
alignment_offset = 0
physical_block_size = 512

i.e 1310720+0/512 = 2560

现在创建分区的命令可以是:

1
2
3
(parted)  mkpart primary 2560 100%    OR

(parted)  mkpart primary 2560 3000G