文档首页> 云硬盘 EVS> 快速入门> 步骤4:初始化数据盘> 初始化Linux数据盘(容量小于等于2TiB)
更新时间:2024-05-07 GMT+08:00
分享

初始化Linux数据盘(容量小于等于2TiB)

操作场景

本文介绍使用脚本和手动两种方式初始化Linux系统中的数据盘,不同弹性云服务器的操作系统的初始化操作可能不同,请根据您的实际环境进行操作。

表1 初始化指导

操作指导

操作系统

分区格式

文件系统

初始化工具

配置示例

使用脚本初始化数据盘

CentOS

MBR

ext4

不涉及

  • 设备名:/dev/vdb
  • 分区名:/dev/vdb1
  • 挂载目录:/data-test

手动初始化数据盘

不限

  • GPT
  • MBR

ext*(如ext2、ext3、ext4)、xfs、btrfs

  • fdisk
  • parted
  • 初始化工具:fdisk
  • 设备名:/dev/vdb
  • 文件系统:ext4
  • 挂载目录:/mnt/sdc、/mnt/sdd
  • 分区一:/dev/vdb1
    • 容量:40GiB
    • 分区格式:MBR
  • 分区二:/dev/vdb2
    • 容量:60GiB
    • 分区格式:MBR

前提条件

  • 云硬盘已挂载到弹性云服务器上。
  • 重新初始化有丢失数据的风险,建议重新初始化前先为云硬盘备份数据。
  • 已登录弹性云服务器

约束与限制

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

  1. 登录弹性云服务器后,查看待初始化的云硬盘的盘符信息。

    lsblk

  2. 执行以下命令获取自动初始化磁盘脚本。
    wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh

    如果回显异常,请检查弹性云服务器是否绑定弹性公网IP,绑定弹性公网IP后才能获取脚本。

  3. 使用脚本对/dev/vdb进行初始化

    chmod +x LinuxVMDataDiskAutoInitialize.sh

    ./LinuxVMDataDiskAutoInitialize.sh

    输入盘符如/dev/vdb并回车,脚本将自动执行硬盘的创建分区(/dev/vdb1)与格式化。

    • 您可以使用lsblk查看ECS挂载的所有盘符情况。
    • 对于有数据的云硬盘,脚本会自动检测出您选择的磁盘已经被挂载并显示出挂载的位置,请根据提示选择是否卸载磁盘成功卸载磁盘后根据提示选择是否开始格式化磁盘。

  4. 对磁盘进行挂载操作,例如输入挂载目录为/data-test,脚本会自动新建该目录进行挂载操作。

    脚本将会自动设置为开机自动挂载。

    针对/dev/vdb磁盘分区为/dev/vdb1的初始化成功。

MBR分区个数最多支持4个主分区或最多3个主分区+1个扩展分区,在扩展分区中创建任意多个逻辑分区。

例如:您需要划分4个分区,可以使用4个主分区,或者1个主分区+1个扩展分区(3个逻辑分区),或者2个主分区+1个扩展分区(2个逻辑分区),或者3个主分区+1个扩展分区(1个逻辑分区)。

示例说明:使用fdisk工具,针对“/dev/vdb”数据盘划分2个MBR主分区,分别为40GiB(/dev/vdb1)、60GiB(/dev/vdb2)

  1. 登录弹性云服务器后,针对数据盘“/dev/vdb”划分2个主分区/dev/vdb1、/dev/vdb2。

    1. 查看/dev/vdb数据盘容量为100GiB。
      lsblk
      [root@ecs-centos76 ~]# lsblk
      NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
      vda    253:0    0  40G  0 disk
      ├vda1 253:1    0   1G  0 part /boot
      └vda2 253:2    0  39G  0 part /
      vdb    253:16   0  100G 0 disk
    1. 开始新建第一个主分区/dev/vdb1。

      fdisk /dev/vdb

      n

      p
      [root@ecs-test-0001 ~]# fdisk /dev/vdb
      Welcome to fdisk (util-linux 2.23.2).
      
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      
      Device does not contain a recognized partition table
      Building a new DOS disklabel with disk identifier 0x38717fc1.
      
      Command (m for help): n
      Partition type:
         p   primary (0 primary, 0 extended, 4 free)
         e   extended
      Select (default p): p
      Partition number (1-4, default 1): 1

      “Partition type”:“p”表示主分区,“e”表示扩展分区。

      针对第一个分区/dev/vdb1(40 GiB)设置起始磁柱值(2048)截止磁柱值83886079

      First sector (2048-209715199, default 2048): 2048
      Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):83886079
      Partition 1 of type Linux and of size 40 GB is set
    1. 开始新建第二个主分区/dev/vdb2。

      n

      p

      Command (m for help): n
      Partition type:
         p   primary (0 primary, 0 extended, 4 free)
         e   extended
      Select (default p): p
      Partition number (1-4, default 2): 2

      针对第2个分区/dev/vdb2设置设置起始磁柱值(83886080)和截止磁柱值(209715199)

      First sector (83886080-209715199, default 83886080): 83886080
      Last sector, +sectors or +size{K,M,G} (83886080-209715199, default 209715199):209715199
      Partition 2 of type Linux and of size 60 GB is set

      分区的起始磁柱值和截止磁柱值计算方法:

      sectors值=容量/512 bytes,1GiB=1073741824 bytes

      • 数据盘/dev/vdb(100 GiB)的sectors值 = 容量 / 512 bytes = 100 * 1073741824 / 512 = 209715200,则该盘截止磁柱值为209715200-1=209715199

        如上图所示:First sector (2048-209715199, default 2048),该盘起始磁柱值为2048,截止磁柱值为209715199

      • 数据盘第1个分区/dev/vdb1(40 GiB)的sectors值 = 容量 / 512 bytes = 40 * 1073741824 / 512 = 83886080,则该分区的截止磁柱值为83886080-1=83886079

        该分区的起始磁柱值,使用default值即可(如上图default 2048)

      • 数据盘第2个分区/dev/vdb2(60 GiB)的sectors值 = 容量 / 512 bytes = 60 * 1073741824 / 512 = 125829120,则该分区的截止磁柱值为125829120-1=125829119

        起始磁柱值 = /dev/vdb1的截止磁柱值 + 1 = 83886079+1 = 83886080

        截止磁柱值 = 起始磁柱值 + sectors - 1 = 83886080+125829120 -1 = 209715199

  2. 查看新建分区大小、分区格式信息。

    1. 确定之前的分区操作是否正确。
      p
      Command (m for help): p
      
      Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x994727e5
      
         Device Boot       Start         End      Blocks   Id  System
      /dev/vdb1             2048    83886079    41942016   83  Linux
      /dev/vdb2         83886080   209715199    62914560   83  Linux
      
      Command (m for help):

      如果之前分区操作有误,请输入“q”,按“Enter”,则会退出fdisk分区工具,之前的分区结果将不会被保留。此时,重新执行创建分区步骤1和步骤2即可。

    1. 确认完成后,将分区结果写入分区表中,并变更同步至操作系统。

      w

      partprobe

      如果出现报错“-bash: partprobe: command not found”,则说明系统不识别该命令,需要执行“yum install -y parted”命令来安装该命令。安装成功后再执行上述命令。

    1. 再次确认分区格式为MBR。

      parted /dev/vdb

      p
      [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) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 107GB
      Sector size (logical/physical): 512B/512B
      Partition Table: msdos
      Disk Flags:
      
      Number  Start   End      Size     Type     File system  Flags
       1      1049kB  42.9GB   42.9GB   primary
       2      42.9GB  107GB    64.4GB   primary             
      
      (parted) q
      [root@ecs-test-0001 ~]# 

      “Partition Table:msdos”表示磁盘分区格式为MBR

      输入“q”,按“Enter”,退出parted模式。

  3. 分别对分区/dev/vdb1(40GiB)和/dev/vdb2(60GiB)创建ext4文件系统。

    mkfs -t ext4 /dev/vdb1

    mkfs -t ext4 /dev/vdb2

    创建文件系统格式需要等待一段时间,请确保看到如下回显后,再退出。

    [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
    2621440 inodes, 10485504 blocks
    524275 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2157969408
    320 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
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

    执行“parted /dev/vdb”命令,再输入“p”,查看分区文件系统类型已经是ext4。

    [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) p
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 107GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
    
    Number  Start   End      Size     Type     File system  Flags
     1      1049kB  42.9GB   42.9GB   primary  ext4
     2      42.9GB  107GB    64.4GB   primary  ext4            
    
    (parted) q
    [root@ecs-test-0001 ~]#

    输入“q”,按“Enter”,退出parted模式。

  4. 新建目录,并将新建分区挂载至新建目录。

    mkdir -p /mnt/sdc

    mkdir -p /mnt/sdd

    mount /dev/vdb1 /mnt/sdc

    mount /dev/vdb2 /mnt/sdd

    lsblk

    查看挂载结果

    [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  40G  0 part /mnt/sdc
    ├vdb2 253:18   0  60G  0 part /mnt/sdd

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

  5. 使用磁盘分区的UUID来设置开机自动挂载磁盘分区。

    • 重启后,挂载会失效,因此需要设置开机自动挂载磁盘分区,即在/etc/fstab文件中添加新建磁盘分区信息,启动开机自动挂载磁盘分区。
    • 不建议采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启弹性云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致弹性云服务器重启后不能正常运行。
    • UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
    • 该操作不会影响弹性云服务器中的现有数据。
    1. 查询磁盘分区的UUID。

      blkid /dev/vdb1

      blkid /dev/vdb2

      [root@ecs-test-0001 ~]# blkid /dev/vdb1
      /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
      /dev/vdb2: UUID="0d6769k2-1745-9dsf-453d-hgd0b34267dj" TYPE="ext4"

      磁盘分区“/dev/vdb1”“/dev/vdb2”的UUID分别为0b3040e2-1367-4abb-841d-ddb0b92693df、0d6769k2-1745-9dsf-453d-hgd0b34267dj。

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

      vi /etc/fstab

      按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,添加下行内容:

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df    /mnt/sdc     ext4    defaults     0    2
      UUID=0d6769k2-1745-9dsf-453d-hgd0b34267dj    /mnt/sdd     ext4    defaults     0    2

      按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。

      表2 参数说明

      参数示例

      说明

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df

      磁盘分区的UUID

      /mnt/sdc

      磁盘分区的挂载目录

      ext4

      磁盘分区的文件系统格式

      defaults

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

      0

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

      2

      • fsck选项,即开机时是否使用fsck检查磁盘。
        • 2表示从挂载点为非根目录(/)的分区开始检验。
        • 1表示从挂载点为根目录(/)的分区开始检验。
        • 0表示不检验。

  6. 验证自动挂载功能已生效。

    umount /dev/vdb1

    umount /dev/vdb2

    mount -a

    则系统会将“/etc/fstab”文件所有内容重新加载。

    查询文件系统挂载信息。

    mount | grep /mnt/sdc

    mount | grep /mnt/sdd

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

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

分享:

    相关文档

    相关产品