
# 初始化Linux数据盘（容量小于等于2TiB）
#### 操作场景
新购买的云硬盘在挂载至云服务器后，还需要进行初始化，即格式化云硬盘，之后才可以正常使用。本文介绍使用脚本和手动方式初始化Linux系统中的数据盘，不同云服务器的操作系统的初始化操作可能不同，请根据您的实际环境进行操作。
MBR分区支持的云硬盘最大容量为2 TiB，GPT分区支持的最大云硬盘容量为18 EiB，因此当云硬盘容量小于2TiB的时候，你可以选择创建MBR或者GPT分区。但是，当云硬盘容量大于2 TiB或目前小于等于2 TiB但后续可能会扩容至2TiB以上时，请在初始化云硬盘时，分区格式选择[GPT分区](https://support.huaweicloud.com/qs-dss/evs_01_0051.html)。
表1初始化指导 
| 操作指导                                                                                                           | 操作系统                  | 分区格式                                                                                                                                                                                                                                                                                                                         | 常见文件系统                           | 配置示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|:---|
| [使用fdisk工具初始化数据盘] | 不限                    | MBR                                                                                                                                                                                                                                                                                                                          | ext\*（如ext2、ext3、ext4）、xfs、btrfs | - 操作系统：CentOS 7.4 64位  - 初始化工具：fdisk  - 设备名：/dev/vdb  - 文件系统：ext4  - 挂载目录：/mnt/sdc、/mnt/sdd  - 分区一：/dev/vdb1 - 容量：40GiB  - 分区格式：MBR    - 分区二：/dev/vdb2 - 容量：60GiB  - 分区格式：MBR     |
| [使用parted工具初始化数据盘]                            | 不限                    | - GPT  - MBR   | ext\*（如ext2、ext3、ext4）、xfs、btrfs | 参见[使用Parted工具初始化数据盘](https://support.huaweicloud.com/qs-dss/evs_01_0051.html#evs_01_0051__zh-cn_topic_0000001799162950_zh-cn_topic_0000001783981128_section78555124319)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| [使用脚本初始化数据盘]                                  | CentOS，仅支持英文操作系统语言环境。 | MBR                                                                                                                                                                                                                                                                                                                          | ext4                             | - 设备名：/dev/vdb  - 分区名：/dev/vdb1  - 挂载目录：/data-test                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
#### 前提条件
云硬盘已挂载到云服务器上，挂载云硬盘参见[步骤三：挂载磁盘](https://support.huaweicloud.com/qs-dss/dss_01_1003.html)。
#### 约束与限制
- 从数据源创建的云硬盘无需初始化。该云硬盘在初始状态就具有数据源中的数据，初始化有丢失数据的风险。如果需要重新初始化，建议先备份云硬盘中的数据：使用CBR备份请参考备份云硬盘，使用快照备份请参考创建云硬盘快照。
- 初始化云硬盘不会删除云硬盘快照，初始化后仍可以使用快照回滚数据至原云硬盘。
 
#### 操作步骤
初始化主要操作步骤为创建分区和文件系统，挂载分区，设置开启自动挂载。
 #### 使用fdisk工具初始化数据盘
**示例说明：使用fdisk工具，针对"/dev/vdb"数据盘划分2个分区，分别为40GiB（/dev/vdb1）、60GiB（/dev/vdb2），分区设置为MBR。**
1. 以root用户登录云服务器。 
   登录弹性云服务器请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   登录裸金属服务器请参见[登录裸金属服务器](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
   
   
2. 创建分区：针对数据盘"/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   40G  0 part /
      vdb    253:16   0  100G 0 disk
      ```
      表示当前有两块云硬盘，"/dev/vda"是系统盘，"/dev/vdb"是新增数据盘，有100GiB还未分区。
      
   
   
   
   2. 依次执行以下命令为/dev/vdb新建第一个主分区/dev/vdb1。 **fdisk** ***/dev/vdb***
      **n**
      **p**
      **1**
      ```
      [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"表示扩展分区，默认为主分区。
      
      - "Partition number"：分区编号，可以选择1-4。
       
   
   3. 针对第一个分区/dev/vdb1（40 GiB）设置**起始磁柱值（2048）** **和** **截止磁柱值** **（** **83886079** **）** ，计算方式参见[表2]。
      ```
      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
      ```
       表2起始磁柱值和截止磁柱值计算方法 
      | 磁柱    | /dev/vdb1（40GiB）                                                                                                                                                         | /dev/vdb2（60GiB）                                                                                                                                                                                  | **sectors值**计算公式                                                                                  |
      |:---|:---|:---|:---|
      | 起始磁柱值 | 2048（此处使用数据盘/dev/vdb的**起始磁柱**）                                                                                                                                           | **/dev/vdb1的截止磁柱值 + 1** = 83886079+1 = 83886080                            | **sectors值** **=容量\*1073741824/512** |
      | 截止磁柱值 | **sectors值-1** =（40 \* 1073741824 / 512 ）-1 =83886079 | **起始磁柱值 + sectors - 1** = 83886080+(60 \* 1073741824 / 512 ) -1 = 209715199 | **sectors值** **=容量\*1073741824/512** |
         
      
   
   
   
   4. 依次执行以下命令开始新建第二个主分区/dev/vdb2。 **n**
      **p**
      **2**
      ```
      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
      ```
      
   
   5. 针对第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
      ```
      
   
   6. 查看新建分区大小、分区格式信息。
      **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):
      ```
      Disk label type: dos表示分区格式为MBR。
      
   
   
   ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
   如果之前分区操作有误，请输入"q"，按"Enter"，则会退出fdisk分区工具，之前的分区结果将不会被保留。此时，重新执行创建分区步骤1和步骤2即可。
   7. 确认完成后，将分区结果写入分区表中。 **w**
      ```
      Command (m for help): w
      The partition table has been altered!
      Calling ioctl() to re-read partition table.
      Syncing disks.
      ```
      表示分区创建完成。
      ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
      如果出现报错"-bash: partprobe: command not found"，则说明系统不识别该命令，需要执行"yum install -y parted"命令来安装该命令。安装成功后再执行上述命令。
      
   
   8. 执行以下命令，将新的分区表变更同步至操作系统。 **partprobe**
      
   
   
   
   
3. 创建文件系统。 
   1. 分别对分区/dev/vdb1（40GiB）和/dev/vdb2（60GiB）创建ext4文件系统。 **mkfs -t** **ext4 */dev/vdb1***
      **mkfs -t** **ext4 */dev/vdb2***
      ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
      - **mkfs** **-t** ***文件系统格式* *磁盘分区名*** ：设置xfs格式文件系统命令为**mkfs -t xfs** **磁盘分区名** ，设置btrfs格式文件系统命令为**mkfs -t btrfs 磁盘分区名**。
      
      - 创建文件系统格式需要等待一段时间，请确保看到如下回显后，再退出。
       
      ```
      [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
      ```
      
   
   2. 执行以下命令确认文件系统类型是否是ext4。 **blkid** ***/dev/vdb***
      ```
      [root@ecs-test-0001 ~]# blkid /dev/vdb
      /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
      /dev/vdb2: UUID="0d6769k2-1745-9dsf-453d-hgd0b34267dj" TYPE="ext4"
      ```
      
   
   
   
   
   
4. 新建目录，并将新建分区挂载至新建目录。
   
   1. 挂载**/dev/vdb1** 到**/mnt/sdc**
      **mkdir -p** ***/mnt/sdc***
      **mount** ***/dev/vdb1 /mnt/sdc***
      
   
   
   
   2. 挂载**/dev/vdb2** 到**/mnt/sdd**
      **mkdir -** **p** ***/mnt/sdd***
      **mount** ***/dev/vdb2 /mnt/sdd***
      
   
   3. 查看挂载结果 **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来设置开机自动挂载磁盘分区。
   
   UUID（universally unique identifier）是Linux系统为磁盘分区提供的唯一的标识字符串。重启后，挂载会失效，因此需要设置开机自动挂载磁盘分区，即在/etc/fstab文件中添加新建磁盘分区信息，启动开机自动挂载磁盘分区。
   ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
   - 不建议采用在"/etc/fstab"文件中直接指定设备名（比如/dev/vdb1）的方法，因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变（例如：/dev/vdb1可能会变成/dev/vdb2），可能会导致云服务器重启后不能正常运行。
   
   - 该操作不会影响弹性云服务器中的现有数据。
    
   1. 查询磁盘分区的UUID。 **blkid** ***/dev/vdb1***
      **blkid** ***/dev/vdb2***
      ```
      [root@ecs-test-0001 ~]# blkid /dev/vdb
      /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
      /dev/vdb2: UUID="0d6769k2-1745-9dsf-453d-hgd0b34267dj" TYPE="ext4"
      ```
      下一步会使用查询到的UUID，请做好记录：示例UUID为：0b3040e2-1367-4abb-841d-ddb0b92693df、0d6769k2-1745-9dsf-453d-hgd0b34267dj。
      
   
   
   
   2. 设置开机自动挂载磁盘分区 **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"，保存设置并退出编辑器。
      表3参数说明 
      | 参数示例                                      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      |:---|:---|
      | 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. （可选）验证自动挂载功能已生效。 
   您可以重启云服务器验证自动挂载功能是否生效，也可以使用以下方式模拟自动挂载。
   1. 为了验证系统是否会执行自动挂载操作，请先卸载已挂载的分区。
   
   
   **umount** ***/dev/vdb1***
   **umount** ***/dev/vdb2***
   2. 将"/etc/fstab"文件所有内容重新加载。"/etc/fstab"是一个静态文件系统信息表，包含了系统启动时需要自动挂载的文件系统的列表。
   
   
   **mount -a**
   3. 查询文件系统挂载信息。
   
   
   **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)
   ```
   
   
   
 #### 使用parted工具初始化数据盘
parted工具的初始化操作指导参见[使用Parted工具初始化数据盘](https://support.huaweicloud.com/qs-dss/evs_01_0051.html#evs_01_0051__zh-cn_topic_0000001799162950_zh-cn_topic_0000001783981128_section78555124319)，MBR和GPT分区都可以使用parted工具来创建，只有在设置分区格式的时候命令有所不同，其它操作命令一样。
设置分区格式的命令分别为：
MBR：
```
mklabel msdos
unit s
p
```
GPT：
```
mklabel gpt
unit s
p
```
 #### 使用脚本初始化数据盘
1. 以root用户登录云服务器。 
   登录弹性云服务器请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   登录裸金属服务器请参见[登录裸金属服务器](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
   
   
2. 查看待初始化的云硬盘的磁盘信息。 
   **lsblk**
   ```
   [root@ecs-centos76 ~]# 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"是新增数据盘，有100G还未分区。
   
   
3. 执行以下命令[获取自动初始化磁盘脚本](https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh)。
   
   **wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh**
   图1脚本获取成功   
   ![](https://support.huaweicloud.com/qs-dss/zh-cn_image_0000002525202737.png "点击放大")
   ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
   - 如果回显异常，请检查云服务器是否绑定弹性公网IP，绑定弹性公网IP后才能获取脚本。
   
   - 此脚本仅支持在英文操作系统环境下运行。
    
   
   
4. 修改自动初始化磁盘脚本权限。 
   **chmod +x LinuxVMDataDiskAutoInitialize.sh**
   
   
5. 执行初始化脚本自动检测待初始化的数据盘。 
   **./LinuxVMDataDiskAutoInitialize.sh**
   脚本将自动检测当前在服务器上除系统盘之外的盘符并显示出来。
   
   
6. 输入盘符如**/dev/vdb** 并回车，脚本将自动执行硬盘的创建分区（/dev/vdb1）与格式化。
   
   ![](https://support.huaweicloud.com/qs-dss/public_sys-resources/note_3.0-zh-cn.png)
   对于有数据的云硬盘，脚本会自动检测出您选择的磁盘已经被挂载并显示出挂载的位置，请根据提示选择是否卸载磁盘,输入"y "为确定卸载，输入"n"则退出脚本。成功卸载磁盘后根据提示选择是否开始格式化磁盘。
   ![](https://support.huaweicloud.com/qs-dss/zh-cn_image_0000002493123018.png "点击放大")
   
   
7. 对磁盘进行挂载操作，例如输入挂载目录为**/data-test** ，脚本会自动新建该目录进行挂载操作。
   
   ![](https://support.huaweicloud.com/qs-dss/zh-cn_image_0000002525162697.png "点击放大")
   脚本将会自动设置为开机自动挂载。
   ![](https://support.huaweicloud.com/qs-dss/zh-cn_image_0000002492963048.png "点击放大")
   根据图上回显可知，针对/dev/vdb磁盘分区为/dev/vdb1的初始化成功，并且已挂载至**/data-test**目录下。
   
   
8. （可选）查看/dev/vdb磁盘的分区格式。 
   **parted /dev/vdb**
   **P**
   
   
 
