磁盘分区MBR和GPT分区系列

0    160    2

Tags:

👉 本文共约12874个字,系统预计阅读时间或需49分钟。

操作场景

磁盘挂载至云服务器后,需要登录云服务器初始化磁盘,即格式化磁盘,之后磁盘才可以正常使用。

  • 系统盘

    系统盘不需要初始化,创建云服务器时会自带系统盘并且自动初始化,默认磁盘分区形式为主启动记录分区(MBR, Master boot record)

  • 数据盘

    • 创建云服务器时直接创建数据盘,数据盘会自动挂载至云服务器。
    • 单独创建数据盘,然后将该数据盘挂载至云服务器。

    以上两种情况创建的数据盘挂载至云服务器后,均需要初始化后才可以使用,请您根据业务的实际规划选择合适的分区方式。

约束与限制

从数据源创建的磁盘无需初始化。该磁盘在初始状态就具有数据源中的数据,初始化有丢失数据的风险。

磁盘分区形式

常用的磁盘分区形式如表1所示,并且针对Linux操作系统,不同的磁盘分区形式需要选择不同的分区工具。

磁盘分区形式支持最大磁盘容量支持分区数量Linux分区工具
主启动记录分区(MBR)2 TB4个主分区3个主分区和1个扩展分区MBR分区包含主分区和扩展分区,其中扩展分区里面可以包含若干个逻辑分区。扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。以创建6个分区为例,以下两种分区情况供参考:3个主分区,1个扩展分区,其中扩展分区中包含3个逻辑分区。1个主分区,1个扩展分区,其中扩展分区中包含5个逻辑分区。以下两种工具均可以使用:fdisk工具parted工具
全局分区表(GPT, Guid Partition Table)18 EB1 EB = 1048576 TB不限制分区数量GPT格式下没有主分区、扩展分区以及逻辑分区之分。parted工具

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,当前数据盘支持的最大容量为32 TB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。

当磁盘已经投入使用后,此时切换磁盘分区形式时,磁盘上的原有数据将会清除,因此请在磁盘初始化时谨慎选择磁盘分区形式。

若使用fdisk来分区大于2T的磁盘,则会出现如下的警告:

磁盘分区操作指导

使用脚本初始化数据盘:

磁盘容量小于2 TB的场景:

磁盘容量大于2 TB的场景:

示例:初始化容量大于2TB的Linux数据盘(parted)

操作场景

本文以云服务器的操作系统为“CentOS 7.4 64位”、磁盘容量为3 TB举例,采用Parted分区工具为容量大于2 TB的数据盘设置分区。

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。

fdisk分区工具只适用于MBR分区,parted工具适用于MBR分区和GPT分区。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍

不同云服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的云服务器操作系统的产品文档。

须知:

首次使用磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。

划分分区并挂载磁盘

本操作以该场景为例,当云服务器挂载了一块新的数据盘时,采用parted分区工具为数据盘设置分区,分区形式设置为GPT,文件系统设为ext4格式,挂载在“/mnt/sdc”下,并设置开机启动自动挂载。

  1. 执行以下命令,查看新增数据盘。

    lsblk

    回显类似如下信息:

    表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。

  2. 执行以下命令,进入parted分区工具,开始对新增数据盘执行分区操作。

    parted 新增数据盘

    以新挂载的数据盘“/dev/vdb”为例:

    parted /dev/vdb

    回显类似如下信息:

  3. 输入“p”,按“Enter”,查看当前磁盘分区形式。

    回显类似如下信息:

    “Partition Table”为“unknown”表示磁盘分区形式未知,新的数据盘还未设置分区形式。

  4. 输入以下命令,设置磁盘分区形式。

    mklabel 磁盘分区形式

    磁盘分区形式有MBR和GPT两种,大于2 TB的磁盘容量,请采用GPT分区方式:

    mklabel gpt

    须知:

    MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,当前数据盘支持的最大容量为32 TB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。

    当磁盘已经投入使用后,此时切换磁盘分区形式时,磁盘上的原有数据将会清除,因此请在磁盘初始化时谨慎选择磁盘分区形式。

  5. 输入“p”,按“Enter”,设置分区形式后查看磁盘分区形式。

    回显类似如下信息:

  6. 输入“unit s”,按“Enter”,设置磁盘的计量单位为磁柱。

  7. 以为整个磁盘创建一个分区为例,执行以下命令,按“Enter”。

    mkpart 磁盘分区名称 起始磁柱值 截止磁柱值

    命令示例:

    mkpart opt 2048s 100%

    “2048s”表示磁盘起始磁柱值,“100%”表示磁盘截止磁柱值,此处仅供参考,您可以根据业务需要自行规划磁盘分区数量及容量。

    回显类似如下信息:

    若出现以上性能优化提醒,请输入“Ignore”,忽视即可。

  8. 输入“p”,按“Enter”,查看新建分区的详细信息。

    回显类似如下信息:

    表示新建分区“dev/vdb1”的详细信息。

  9. 输入“q”,按“Enter”,退出parted分区工具。

  10. 执行以下命令,查看磁盘分区信息。

    lsblk

    回显类似如下信息:

    此时可以查看到新建分区“/dev/vdb1”。

  11. 执行以下命令,将新建分区文件系统设为系统所需格式。

    mkfs -t 文件系统格式 /dev/vdb1

    以设置文件系统为“ext4”为例:

    mkfs -t ext4 /dev/vdb1

    回显类似如下信息:

    格式化需要等待一段时间,请观察系统运行状态,不要退出。

    须知:

    不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。

  12. 执行以下命令,新建挂载目录。

    mkdir 挂载目录

    以新建挂载目录“/mnt/sdc”为例:

    mkdir /mnt/sdc

    说明:

    Linux系统默认带有/mnt目录,如果创建失败,可能是/mnt被误删除了,可以执行命令mkdir -p /mnt/sdc创建。

  13. 执行以下命令,将新建分区挂载到12中创建的目录下。

    mount 磁盘分区 挂载目录

    以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:

    mount /dev/vdb1 /mnt/sdc

  14. 执行以下命令,查看挂载结果。

    df -TH

    回显类似如下信息:

    表示新建分区“dev/vdb1”已挂载至“/mnt/sdc”。

设置开机自动挂载磁盘分区

您可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。已有数据的云服务器也可以进行设置,该操作不会影响现有数据。

本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致云服务器重启后不能正常运行。

说明:

UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。

  1. 执行如下命令,查询磁盘分区的UUID。

    blkid 磁盘分区

    以查询磁盘分区“/dev/vdb1”的UUID为例:

    blkid /dev/vdb1

    回显类似如下信息:

    表示“/dev/vdb1”的UUID。

  2. 执行以下命令,使用VI编辑器打开“fstab”文件。

    vi /etc/fstab

  3. 按“i”,进入编辑模式。

  4. 将光标移至文件末尾,按“Enter”,添加如下内容。

    以上内容仅为示例,具体请以实际情况为准,参数说明如下:

    • 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。

    • 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。

    • 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。

    • 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。

    • 第五列为Linux dump备份选项。

      • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
    • 1表示使用Linux dump备份。

  • 第六列为fsck选项,即开机时是否使用fsck检查磁盘。

    • 0表示不检验。

    • 挂载点为(/)根目录的分区,此处必须填写1。

      根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  1. 按“ESC”后,输入“:wq”,按“Enter”。

    保存设置并退出编辑器。

  2. 执行以下步骤,验证自动挂载功能。

    1. 执行如下命令,卸载已挂载的分区。

      umount 磁盘分区

      命令示例:

      umount /dev/vdb1

    2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。

      mount -a

    3. 执行如下命令,查询文件系统挂载信息。

      mount | grep 挂载目录

      命令示例:

      mount | grep /mnt/sdc

      回显类似如下信息,说明自动挂载功能生效:

示例:初始化Linux数据盘(fdisk)

操作场景

本文以云服务器的操作系统为“CentOS 7.4 64位”为例,采用fdisk分区工具为数据盘设置分区。

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。

fdisk分区工具只适用于MBR分区,parted工具适用于MBR分区和GPT分区。关于磁盘分区形式的更多介绍,请参见初始化数据盘场景及磁盘分区形式介绍

不同云服务器的操作系统的格式化操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应的云服务器操作系统的产品文档。

首次使用磁盘时,如果您未参考本章节对磁盘执行初始化操作,主要包括创建分区和文件系统等操作,那么当后续扩容磁盘时,新增容量部分的磁盘可能无法正常使用。

划分分区并挂载磁盘

本操作以该场景为例,当云服务器挂载了一块新的数据盘时,使用fdisk分区工具将该数据盘设为主分区,分区形式默认设置为MBR,文件系统设为ext4格式,挂载在“/mnt/sdc”下,并设置开机启动自动挂载。

  1. fdisk -l

    回显类似如下信息:

    表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。

  2. 执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作。

    fdisk 新增数据盘

    以新挂载的数据盘“/dev/vdb”为例:

    fdisk /dev/vdb

    回显类似如下信息:

  3. 输入“n”,按“Enter”,开始新建分区。

    回显类似如下信息:

    表示磁盘有两种分区类型:

    • “p”表示主分区。
    • “e”表示扩展分区。

    说明:

    磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。

    磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。

  4. 以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。

    回显类似如下信息:

    “Partition number”表示主分区编号,可以选择1-4。

  5. 以分区编号选择“1”为例,输入主分区编号“1”,按“Enter”。

    回显类似如下信息:

    “First sector”表示起始磁柱值,可以选择2048-209715199,默认为2048。

  6. 以选择默认起始磁柱值2048为例,按“Enter”。

    系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

    回显类似如下信息:

    “Last sector”表示截止磁柱值,可以选择2048-209715199,默认为209715199。

  7. 以选择默认截止磁柱值209715199为例,按“Enter”。

    系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

    回显类似如下信息:

    表示分区完成,即为数据盘新建了1个分区。

  8. 输入“p”,按“Enter”,查看新建分区的详细信息。

    回显类似如下信息:

    表示新建分区“/dev/vdb1”的详细信息。

  9. 输入“w”,按“Enter”,将分区结果写入分区表中。

    回显类似如下信息:

    表示分区创建完成。

    说明:

    如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。

  10. 执行以下命令,将新的分区表变更同步至操作系统。

    partprobe

  11. 执行以下命令,将新建分区文件系统设为系统所需格式。

    mkfs -t 文件系统格式 /dev/vdb1

    以设置文件系统为“ext4”为例:

    mkfs -t ext4 /dev/vdb1

    回显类似如下信息:

    格式化需要等待一段时间,请观察系统运行状态,不要退出。

    须知

    不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。

  12. 执行以下命令,新建挂载目录。

    mkdir 挂载目录

    以新建挂载目录“/mnt/sdc”为例:

    mkdir /mnt/sdc

    说明:

    Linux系统默认带有/mnt目录,如果创建失败,可能是/mnt被误删除了,可以执行命令mkdir -p /mnt/sdc创建。

  13. 执行以下命令,将新建分区挂载到12中创建的目录下。

    mount 磁盘分区 挂载目录

    以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:

    mount /dev/vdb1 /mnt/sdc

  14. 执行以下命令,查看挂载结果。

    df -TH

    回显类似如下信息:

    表示新建分区“/dev/vdb1”已挂载至“/mnt/sdc”。

    说明:

    云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载,请参见设置开机自动挂载磁盘分区

设置开机自动挂载磁盘分区

您可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。已有数据的云服务器也可以进行设置,该操作不会影响现有数据。

本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致云服务器重启后不能正常运行。

说明:UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。

  1. 执行如下命令,查询磁盘分区的UUID。

    blkid 磁盘分区

    以查询磁盘分区“/dev/vdb1”的UUID为例:

    blkid /dev/vdb1

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

    回显类似如下信息:

    表示“/dev/vdb1”的UUID。

  2. 执行以下命令,使用VI编辑器打开“fstab”文件。

    vi /etc/fstab

  3. 按“i”,进入编辑模式。

  4. 将光标移至文件末尾,按“Enter”,添加如下内容。

    以上内容仅为示例,具体请以实际情况为准,参数说明如下:

    • 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。

    • 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。

    • 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。

    • 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。

    • 第五列为Linux dump备份选项。

      • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
      • 1表示使用Linux dump备份。
    • 第六列为fsck选项,即开机时是否使用fsck检查磁盘。

      • 0表示不检验。

      • 挂载点为(/)根目录的分区,此处必须填写1。

      根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  5. 按“ESC”后,输入“:wq”,按“Enter”。

    保存设置并退出编辑器。

  6. 执行以下步骤,验证自动挂载功能。

    1. 执行如下命令,卸载已挂载的分区。

      umount 磁盘分区

      命令示例:

      umount /dev/vdb1

    2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。

      mount -a

    3. 执行如下命令,查询文件系统挂载信息。

      mount | grep 挂载目录

      命令示例:

      mount | grep /mnt/sdc

      回显类似如下信息,说明自动挂载功能生效:

parted命令

通常我们用的比较多的分区工具是fdisk命令,但由于fdisk只支持MBR分区,MBR分区表最大支撑2T的磁盘,所以无法划分大于2T的分区。而parted工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。

parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

用法:parted [选项]... [设备 [命令 [参数]...]...]
将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。
帮助选项:

操作命令:

操作实例:

首先类似于fdisk一样,先选择要分区的硬盘,此处为/dev/hdd:

选择了/dev/hdd作为我们操作的硬盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):

创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称、文件系统和分区的起止位置:

分好区后可以使用print命令打印分区信息,下面是一个print的样例:

如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果:

按照上面的方法把整个硬盘都分区好,下面是一个分完后的样例:

由于parted内建的mkfs还不够完善,所以以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化了,此时如果使用fdisk -l命令打印分区表会出现警告信息,这是正常的:

parted交互操作实例

1、选择分区硬盘

首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdb: ((parted)表示在parted中输入的命令,其他为自动打印的信息)

2、创建分区

选择了/dev/hdb作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):

3、完成分区操作

创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置

4、验证分区信息

分好区后可以使用print命令打印分区信息,下面是一个print的样例

5、删除分区示例

如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果

7、格式化操作

在交互状态下,完成以后我们可以使用quit命令退出parted并使用系统的mkfs命令对分区进行格式化。

8、交互创建分区的完整示示例

按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例

parted非交互方式

1、创建分区表

2、将硬盘所有容量分给主分区

3、查询磁盘的已有分区

4、查询硬盘分区

5、格式化分区

6、查询/dev/sdl1的blkid

7、修改/etc/fstab

编辑/etc/fstab使开机可知道挂载文件系统。

8、挂载文件系统,查询

parted非交互方式示例

创建gpt分区表

划分3个分区

打印分区

删除分区
删除分区的命令是parted /dev/sdb rm 1其中最后的数字 1 表示分区编号。

MBR 和 GPT

MBR:MBR分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区

GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。突破 MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。

parted 分区对齐报错

[Warning: The resulting partition is not properly aligned for best performance

在使用parted创建分区时产生告警信息, "Warning: The resulting partition is not properly aligned for best performance."

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

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

解决方案

1、百分比

一般来说只要正确的选择分区开始的位置就可以解决这个问题,但需要查询和计算一下相应的参数。通常相较于使用明确的开始和结束位置使用百分比可以更容易使分区对齐。

mkpart primary 0% 100% or mkpart primary 0% 320GB 创建单个分区, 或
mkpart primary 0% 50% and mkpart primary 50% 100% 创建两个大小相等的分区。

2、1MiB偏移量

一般情况下,很大一部分磁盘的默认对齐粒度为1MiB,因此在大多数情况下,使用MiB作为mkpart中的单元就可以创建一个对齐的分区。由于磁盘空间上的第一个MiB包括0扇区中的遗留主引导记录(MBR)和紧随其后的gpt主表(如果是gpt类型),因此需要跳过磁盘上的第一个MiB,并从1MiB开始分区:

mkpart primary 1MiB 100% 例如,创建单个分区。

计算偏移量

如果使用百分比或1MiB偏移量不起作用,可以通过查询设备相应的sysfs条目来直接计算所需的对齐
获取如下值:

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

For example:

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

parted命令总结

参考

https://support.huaweicloud.com/qs-evs/evs_01_0033.html

https://support.huaweicloud.com/qs-evs/evs_01_0038.html

https://support.huaweicloud.com/qs-evs/evs_01_0051.html

https://www.cnblogs.com/my-show-time/p/15260739.html

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部