初始化Linux数据盘(parted)

操作场景

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

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。对于Linux操作系统而言,当磁盘分区形式选用GPT时,fdisk分区工具将无法使用,需要采用parted工具。

划分分区并挂载磁盘

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

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

    lsblk

    回显类似如下信息:

    1
    2
    3
    4
    5
    root@ecs-test-0001 ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda 253:0 0 40G 0 disk
    └─vda1 253:1 0 40G 0 part /
    vdb 253:16 0 100G 0 disk

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

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

    parted 新增数据盘

    命令示例:

    parted /dev/vdb

    回显类似如下信息:

    1
    2
    3
    4
    5
    [root@ecs-test-0001 ~]# parted /dev/vdb
    GNU Parted 3.1
    Using /dev/vdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted)
  3. 输入“p”,按“Enter”,查看当前磁盘分区形式。

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    (parted) p
    Error: /dev/vdb: unrecognised disk label
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 107GB
    Sector size (logical/physical): 512B/512B
    Partition Table: unknown
    Disk Flags:
    (parted)

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

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

    mklabel 磁盘分区形式

    磁盘分区形式有MBR和GPT两种,以GPT为例:

    mklabel gpt

    img须知:

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

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

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

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (parted) mklabel gpt
    (parted) p
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 107GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:

    Number Start End Size File system Name Flags

    (parted)

    “Partition Table”为“gpt”表示磁盘分区形式已设置为GPT。

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

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

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

    命令示例:

    mkpart test 2048s 100%

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

    回显类似如下信息:

    1
    2
    (parted) mkpart opt 2048s 100%
    (parted)
  8. 输入“p”,按“Enter”,查看新建分区的详细信息。

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (parted) p
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 209715200s
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:

    Number Start End Size File system Name Flags
    1 2048s 209713151s 209711104s test

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

    回显类似如下信息:

    1
    2
    (parted) q
    Information: You may need to update /etc/fstab.

    “/etc/fstab”文件控制磁盘开机自动挂载,请先参考以下步骤为磁盘分区设置文件系统和挂载目录后,再根据文档指导更新“/etc/fstab”文件。

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

    lsblk

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    [root@ecs-test-0001 ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda 253:0 0 40G 0 disk
    └─vda1 253:1 0 40G 0 part /
    vdb 253:16 0 100G 0 disk
    └─vdb1 253:17 0 100G 0 part

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

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

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

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

    mkfs -t ext4 /dev/vdb1

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    6553600 inodes, 26213888 blocks
    1310694 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2174746624
    800 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872

    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

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

    img须知:

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

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

    mkdir 挂载目录

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

    mkdir /mnt/sdc

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

    mount 磁盘分区 挂载目录

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

    mount /dev/vdb1 /mnt/sdc

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

    df -TH

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@ecs-test-0001 ~]# df -TH
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/vda1 ext4 43G 1.9G 39G 5% /
    devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
    tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
    tmpfs tmpfs 2.0G 9.0M 2.0G 1% /run
    tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
    tmpfs tmpfs 398M 0 398M 0% /run/user/0
    /dev/vdb1 ext4 106G 63M 101G 1% /mnt/sdc

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

    说明:

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

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

设置云服务器系统启动时自动挂载磁盘分区,不能采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2。推荐使用UUID来配置自动挂载磁盘分区。

说明:

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

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

    blkid 磁盘分区

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

    blkid /dev/vdb1

    回显类似如下信息:

    1
    2
    [root@ecs-test-0001 ~]# blkid /dev/vdb1
    /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

    表示“/dev/vdb1”的UUID。

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

    vi /etc/fstab

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

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

    1
    UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc                ext4    defaults        0 2

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

    • 第一列为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

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

      1
      2
      root@ecs-test-0001 ~]# mount | grep /mnt/sdc
      /dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)