本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
一块全新的数据盘挂载到Linux系统的ECS实例后,还不能直接存储数据,通常需要初始化后才能被操作系统识别并用于存储数据。您可以按照本文进行分区、挂载文件系统等初始化操作。
前提条件
方法一:利用云助手自动初始化数据盘(邀测)
- 功能邀测中,仅部分客户可以使用。 
- 云盘需未开启多重挂载功能。 
- ECS实例需为运行中状态且已安装云助手Agent,2017年12月01日之后使用公共镜像创建的ECS实例,默认预装了云助手Agent。具体操作,请参见安装云助手Agent。 
- 利用云助手创建的分区为GPT分区,系统类型为ext4。 
- 若后续有扩容至64 TiB需求,请登录实例,手动初始化数据盘。 
若您不慎关闭挂载数据盘中的通过云助手初始化界面,您也可以进入实例详情页块存储页签下,再次使用云助手初始化云盘。
新创建的数据盘
新创建的空数据盘没有分区和文件系统,需继续创建分区及文件系统,并挂载文件系统。
- 在实例详情页的块存储页面中,开启云助手检测功能,默认为开启状态。  说明 说明- 功能邀测中,仅部分客户可以使用,如果您没有云助手检测功能的设置,请您选择方法二:登录实例,自行初始化数据盘。 
- 选择待初始化的云盘,将光标移动至系统内状态检测下的0/3检测已通过处,单击初始化数据盘。  说明 说明- 仅部分操作系统支持云助手初始化操作,如果您没有系统内状态检测或者系统内状态检测下显示检测失败,请您选择方法二:登录实例,自行初始化数据盘。 
- 设置分区信息。  - 设置分区大小以及挂载点。 说明- 您可以根据实际需求,单击添加分区,为云盘添加多个分区,每块云盘最多添加5个分区。 - 分区大小:单个分区以及总分区大小不能超出云盘总容量。 说明- 分区表本身和对分区进行扇区对齐时需要占用1~2 MiB的空间,分区功能会自动缩减最后一个分区的大小来预留出所需要的空间。因此,分区后的实际大小可能会略小于所指定的分区大小,总的可用容量也会稍小于云盘总容量。 
- 文件系统类型:仅支持ext4类型,且分区类型默认均是GPT分区。 
- 挂载点:必须至少一个以/开头后跟英文或数字的路径格式,例如:/mnt。可以填写无数据的已有目录或填写新目录作为挂载点,挂载点不能重复。 重要- 如果目标挂载目录已存在数据,配置后会遮盖原目录下系统文件,造成原有文件不可读,影响业务正常运行。 
 
- 确认并勾选风险提示,单击开始执行,当初始化列表的当前状态变更为正常时,表示云盘初始化完成。 
 
- (可选)设置开机自动挂载云盘分区。具体操作,请参见(可选)步骤四:配置开机自动挂载分区。 
存在数据的数据盘
通过快照创建的云盘或从其他实例卸载的数据盘没有挂载文件系统,需挂载文件系统,挂载文件系统不会导致数据丢失。
- 在实例详情页的块存储页面中,检查是否开启云助手查询功能,默认为开启状态。  
- 选择待挂载文件系统的云盘,将光标移动至系统内状态检测下的1/3检测已通过处,单击挂载文件系统。  
- 在分区与挂载设置对话框中填写挂载点并单击手动挂载,挂载文件系统。 说明- 可以填写无数据的已有目录或填写新目录作为挂载点,挂载点不能重复。  
- (条件必选)如果您是使用快照新创建的云盘挂载到原ECS实例(快照所在的ECS实例),新创建云盘的UUID会和原云盘冲突,您需要修改新云盘的UUID。具体操作,请参见修改云盘的UUID。 
- (条件必选)如果您是使用快照新创建的云盘,且创建的云盘容量大于快照所属云盘容量,需要执行扩容分区和文件系统操作后,才可以在系统下正常使用。 - Linux实例请参考扩容分区及文件系统(Linux)。 
- Windows实例请参考扩容分区与文件系统(Windows)。 
 
- (可选)设置开机自动挂载云盘分区。具体操作,请参见(可选)步骤四:配置开机自动挂载分区。 
方法二:登录实例,自行初始化数据盘
本操作以Alibaba Cloud Linux 3操作系统为例,不同操作系统的操作命令可能不同,请根据实际环境进行操作。
步骤一:登录ECS实例并查看数据盘
- 远程连接ECS实例。 - 具体操作,请参见使用Workbench终端连接登录Linux实例(SSH)。 
- 分别运行以下命令,确定待初始化数据盘的设备名称。 - sudo fdisk -lu sudo blkid- 示例的运行结果如下所示,比较两条命令的回执可知,当前ECS实例挂载了三块云盘: - /dev/vda是系统盘,随实例创建的系统盘已默认初始化,无需再初始化。
- /dev/vdb是数据盘,不存在分区/dev/vdbx但存在文件系统ext4,无需再初始化。
- /dev/vdc是数据盘,sudo blkid命令无此数据盘回执表示未初始化,需要执行初始化操作。
 - 因此示例中待初始化数据盘的设备名称为 - /dev/vdc。 
- 判断需要执行的初始化步骤。 - 如果您需要通过分区来分类存储和管理数据,且云盘容量大于2TiB或后续有扩容至2TiB以上:因分区格式限制仅能创建GPT分区,需要执行创建GPT分区(推荐)及步骤三:创建并挂载文件系统。 
- 如果您需要通过分区来分类存储和管理数据,容量小于等于2TiB且后续无扩容至2TiB需求:可以创建GPT分区(推荐)或MBR分区,需要执行步骤二:为数据盘创建分区及步骤三:创建并挂载文件系统。 
- 如果您无需通过分区管理,需要直接以裸设备创建文件系统形式使用云盘:无需执行创建分区操作,直接执行步骤三:创建并挂载文件系统即可。 
 
(条件必选)步骤二:为数据盘创建分区
- 请依照判断需要执行的初始化步骤,确认云盘是否需要执行创建分区操作。 
- 执行创建分区指令。 重要- 不同分区类型支持的最大分区容量和分区数量不同。更多信息,请参见分区格式介绍。 
- 如果您使用的云盘容量后续有可能会扩容到2 TiB以上,分区时请采用GPT分区。否则由于MBR分区容量的限制,您将无法直接扩容至所需容量大小,这可能导致需要重新分区和格式化云盘,进而导致数据丢失。 
 - 创建GPT分区(推荐)- 运行以下命令,安装Parted工具。 - sudo yum install -y parted说明- yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用以下命令安装Parted工具:- sudo apt-get update sudo apt-get install -y parted
- 使用Parted工具为数据盘进行分区。 - 运行以下命令,开始分区。本操作以数据盘 - /dev/vdb为例。- sudo parted /dev/vdb- 其中, - /dev/vdb是待分区数据盘的设备名称,请您根据实际环境替换。
- 在Parted交互命令行中输入以下内容,设置GPT分区格式。 - mklabel gpt
- 输入以下内容,划分分区,并设置分区的开始位置和结束位置。 - mkpart <分区名称> <初始位置> <结束位置>重要- 分区的开始位置和结束位置请使用二进制单位MiB、GiB等单位(创建后分区会4KiB对齐),否则会影响分区对齐,严重影响云盘性能。 - <分区名称>、<初始位置>、<结束位置>请根据实际情况进行划分。 - 单分区示例:以划分一个主分区、分区名为primary,开始位置为1MiB,100%容量给到第一个分区为例。 - mkpart primary 1MiB 100%
- 多分区示例:以划分两个分区、第一个分区名为primary,分区容量为20GiB,剩余容量划分至第二个分区secondary为例,需要分别执行: - mkpart primary 1MiB 20GiB mkpart secondary 20GiB 100%
 
- 运行以下命令,检查分区是否对齐。 - 其中, - 1是对应的分区号,通常建议您做分区对齐,以获取更好的云盘性能。- align-check optimal 1- 如果分区是对齐的,结果如下所示: - 1 aligned重要- 如果返回的是 - 1 not aligned,表示分区未对齐。如何处理,请参见初始化云盘FAQ。
- 输入以下内容,查看分区表。 - print
- (可选)如果上述分区操作有误,请输入rm+分区号,删除错误分区,再按照需求执行步骤III~V。下图示例表示为查找(利用print)并删除错误分区号为2的分区。  重要 重要- 请在删除分区前,确保分区内无数据或者数据已备份。 
- 输入以下内容,退出Parted工具。 - quit
 - 分区过程如下所示。  
- 运行以下命令,使系统重读分区表。 - partprobe
- 运行以下命令,查看新分区信息。本操作以数据盘 - /dev/vdb为例。- sudo fdisk -lu /dev/vdb- 其中, - /dev/vdb是数据盘的设备名称,请您根据实际环境替换。- 运行结果如下所示,如果 - Disk label type为gpt,表示新分区已创建完成。 说明 说明- 不同操作系统的显示略有不同。如果没有 - Disk label type字段,可通过- System字段判断。- System值为- Linux表示MBR分区,值为- GPT表示GPT分区。
- 较低版本的fdisk可能不能正常显示GPT分区表。您可以通过 - gdisk -l /dev/vdb命令查看分区类型。
 
 - 创建MBR分区- 创建一个MBR分区。 - 运行以下命令,对数据盘进行分区。本操作以数据盘 - /dev/vdb为例。- sudo fdisk -u /dev/vdb- 其中, - /dev/vdb是待分区数据盘的设备名称,请您根据实际环境替换。- 回显信息如下图所示。  
- 在fdisk交互命令行,输入p并按 - Enter键,查看数据盘的分区情况。- 回显信息如下图所示。  
- 输入n并按 - Enter键,开始新建分区。- 回显信息如下图所示。  - 表示云盘有两种分区类型: - p表示主分区。
- e表示扩展分区。说明- 关于分区的说明,请参见分区格式介绍。 
 
- 以创建一个主要分区为例。输入p并按 - Enter键,开始创建一个主分区。- 回显信息如下图所示。  - Partition number表示主分区编号,可以选择1-4。
- 输入分区编号,按 - Enter键。- 本示例以创建一个主分区为例,直接按 - Enter键,表示主分区的分区编号为- 1。- 回显信息如下图所示。  
- 输入起始扇区编号,按 - Enter键。- First sector表示分区可用空间的起始扇区编号,可以选择2048-83886079,默认值为2048。本示例中,直接按- Enter键,表示选择默认起始扇区编号- 2048。- 回显信息如下图所示。  说明 说明- 系统会自动提示分区可用空间的起始扇区编号和截止扇区编号,可以在该区间内自定义或者使用默认值。分区的起始扇区编号必须小于截止扇区编号。 
- 输入最后一个扇区编号,按 - Enter键。- Last sector表示分区可用空间的截止扇区编号,可以选择2048-83886079,默认值为83886079。本示例中,直接按- Enter键,表示选择默认截止扇区编号- 83886079。- 回显信息如下图所示。  说明 说明- 系统会自动提示分区可用空间的起始扇区编号和截止扇区编号,可以在该区间内自定义或者使用默认值。分区的起始扇区编号必须小于截止扇区编号。 
- 输入p并按 - Enter键,查看该数据盘的分区规划情况。- 回显信息如下图所示,表示新建分区 - /dev/vdb1的详细信息。 说明 说明- 如果上述分区操作有误,请输入 - q退出fdisk分区工具,之前的分区结果不会被保留,您可以按照上述步骤重新分区。
- 输入w并按 - Enter键,将分区结果写入分区表中。- 回显信息如下图所示,表示分区创建完成。  
 
- (条件必选)如果您需要为一块云盘创建多个分区,需要重复执行步骤a创建其他分区。 
- 运行以下命令,查看新分区信息。本操作以数据盘 - /dev/vdb为例。- sudo fdisk -lu /dev/vdb- 其中, - /dev/vdb是数据盘的设备名称,请您根据实际环境替换。- 运行结果如下图所示,如果出现 - /dev/vdb1且- Disk label type为dos,表示新MBR分区已创建完成。 说明 说明- 不同操作系统的显示略有不同。如果没有 - Disk label type字段,可通过- System字段判断。- System值为- Linux表示MBR分区,值为- GPT表示GPT分区。
- 较低版本的fdisk可能不能正常显示GPT分区表。您可以通过 - gdisk -l /dev/vdb命令查看分区类型。
 
 
步骤三:创建并挂载文件系统
无论云盘是否进行了分区,只要您的业务需要直接操作文件,云盘在使用前都需要创建并挂载文件系统。不同文件系统支持的分区大小不同,请您根据实际需求创建文件系统。
- 运行以下命令,创建文件系统。以下示例命令介绍如何创建ext4和xfs文件系统。 - 创建ext4文件系统- 运行以下命令,安装e2fsprogs工具。 - 此步骤中yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用 - apt-get install <软件包名称>。- sudo yum install -y e2fsprogs
- 创建ext4文件系统。 说明- 若后续有扩容至64 TiB需求,请在命令中添加 - -i 65536,指定- bytes-per-inode为65536。- 以为分区 - /dev/vdb1创建一个ext4文件系统为例,则运行如下命令:- sudo mkfs -t ext4 /dev/vdb1- 其中, - /dev/vdb1是数据盘的分区名称,请您根据实际分区名称替换。
- 以为裸设备 - /dev/vdc创建一个ext4文件系统为例,则运行如下命令:- sudo mkfs -t ext4 /dev/vdc- 其中, - /dev/vdc是裸设备名称,请您根据实际裸设备名称替换。
 说明- 当数据盘容量为16 TiB,在创建ext4文件系统报错时,您需要检查e2fsprogs工具包的版本是否高于1.42,并安装高版本的e2fsprogs工具包。具体操作,请参见如何升级e2fsprogs工具包?。 
- ext4文件系统的lazy init功能会影响数据盘的I/O性能,您可以关闭ext4文件系统的lazy init功能。具体操作,请参见如何关闭Linux实例的lazy init功能?。 
 
 - 创建xfs文件系统- 运行以下命令,安装xfsprogs工具。 - sudo yum install -y xfsprogs说明- 此步骤中yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用 - apt-get install <软件包名称>。
- 创建xfs文件系统。 - 以为分区 - /dev/vdb1创建一个xfs文件系统为例,则运行如下命令:- sudo mkfs -t xfs /dev/vdb1- 其中, - /dev/vdb1是数据盘的分区名称,请您根据实际分区名称进行替换。
- 以为裸设备 - /dev/vdc创建一个xfs文件系统为例,则运行如下命令:- sudo mkfs -t xfs /dev/vdc- 其中, - /dev/vdc是裸设备名称,请您根据实际裸设备名称进行替换。
 
 
- 运行以下命令,挂载文件系统。 - 以将分区 - /dev/vdb1挂载到/mnt目录为例,则运行如下命令:- sudo mount /dev/vdb1 /mnt- /dev/vdb1是数据盘的分区名称,请您根据实际环境替换。- /mnt是分区的挂载点。挂载点可以是无数据的已有目录,或执行- sudo mkdir -p <新目录>命令创建新目录作为挂载点,例如- sudo mkdir -p /data。重要- 如果目标挂载目录已存在数据,配置后会覆盖原目录下系统文件,可能会造成原有数据丢失,影响业务正常运行。 
- 以将裸设备 - /dev/vdc挂载到/tmp目录为例,则运行如下命令:- sudo mount /dev/vdc /tmp- /dev/vdc是裸设备名称,请您根据实际环境替换。- /tmp是分区的挂载点。挂载点可以是无数据的已有目录,或执行- sudo mkdir -p <新目录>命令创建新目录作为挂载点,例如- sudo mkdir -p /data。重要- 如果目标挂载目录已存在数据,配置后会覆盖原目录下系统文件,可能会造成原有数据丢失,影响业务正常运行。 
 
- 运行以下命令,检查挂载结果是否符合您的预期。 - df -Th- 结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。  
(可选)步骤四:配置开机自动挂载分区
您可以根据需要在/etc/fstab中写入新分区信息,配置开机自动挂载,以确保系统每次启动时会自动挂载云盘分区。
- 运行以下命令,备份/etc/fstab文件。 - sudo cp /etc/fstab /etc/fstab.bak
- 在/etc/fstab里写入新分区信息。 - sudo sh -c "echo `sudo blkid /dev/vdb1 | awk '{print \$2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab"说明- Ubuntu 12.04系统不支持barrier,您需要运行 - sudo sh -c "echo `sudo blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0 >> /etc/fstab"命令。- 其中: - /dev/vdb1:数据盘的分区名称,您需要根据实际环境进行替换(通过- df -Th命令获取)。
- /mnt:分区的挂载点,您需要根据已设置的挂载点进行替换(通过- df -Th命令获取)。
- ext4:分区的文件系统类型,您需要根据已创建的文件系统类型进行替换(通过- df -Th命令获取)。
- defaults:文件系统的挂载参数。您可以根据实际需求选择对应的挂载参数,请参见fstab说明。说明- 当参数设置为 - defaults,nofail时,即使挂载配置存在错误,也不会影响实例的正常启动。然而,由于此时系统不会上报错误,您需要特别关注自动挂载是否配置成功,以避免因配置错误导致数据存储位置不正确。
 
- (条件必选)如果单盘有多个连续分区的情况,需要分别将多个分区信息写入/etc/fstab中。 - 例如数据盘 - /dev/vdb有2个分区- /dev/vdb1和- /dev/vdb2,需要分别执行以下命令:- sudo sh -c "echo `sudo blkid /dev/vdb1 | awk '{print \$2}' | sed 's/\"//g'` </dev/vdb1的挂载点> </dev/vdb1的文件系统类型> defaults 0 0 >> /etc/fstab" sudo sh -c "echo `sudo blkid /dev/vdb2 | awk '{print \$2}' | sed 's/\"//g'` </dev/vdb2的挂载点> </dev/vdb2的文件系统类型> defaults 0 0 >> /etc/fstab"
- 运行以下命令,查看/etc/fstab中的新分区信息。 - cat /etc/fstab- 结果如下所示,可以查询已配置的 - /dev/vdb1的分区信息。 说明 说明- 如果查询的分区信息有误,您可以手动编辑/etc/fstab文件,删除错误分区信息后,再重新添加分区信息。具体操作,请参见在fstab文件中配置UUID方式自动挂载数据盘。 
- 运行以下命令,验证自动挂载功能是否生效。 - sudo umount /dev/vdb1 sudo mount -a mount | grep /mnt- 结果如下所示,可以查询文件系统挂载信息,说明自动挂载功能生效。  
初始化云盘FAQ
创建GPT分区时,分区未对齐如何解决?
Linux实例如何升级e2fsprogs工具包?
如何关闭Linux实例的lazy init功能?
系统内状态检测为什么显示为检测失败?
相关文档
当云盘使用空间不足时,可以扩容云盘容量增加云盘存储空间。更多信息,请参见扩容云盘(Linux)。
