一块全新的数据盘挂载到Linux系统的ECS实例后,还不能直接存储数据,通常需要初始化后才能被操作系统识别并用于存储数据。如果您的数据盘容量小于等于2 TiB且需要通过云盘分区来分类存储和管理数据,可以按照本文进行分区、挂载文件系统等初始化操作。
Linux初始化操作仅适用于随ECS实例创建的空数据盘或新创建并挂载至ECS实例的空数据盘。更多信息,请参见操作场景。
前提条件
数据盘已挂载到ECS实例(数据盘状态为使用中)。具体操作,请参见挂载数据盘。
随实例创建的数据盘已经挂载,可忽略。
操作步骤
本操作以Alibaba Cloud Linux 3操作系统为例,不同操作系统可能操作命令不同,请根据实际环境进行操作。
步骤一:登录ECS实例并查看数据盘
远程连接ECS实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
运行以下命令,获取数据盘的设备名称。
sudo fdisk -lu
运行结果如下所示,表示当前ECS实例挂载了两块云盘:
①:
/dev/vda
是系统盘,随实例创建的系统盘已默认初始化,无需再初始化。②:
/dev/vdb
是待初始化的数据盘。
(条件必选)步骤二:为数据盘创建分区
如果您需要通过云盘分区来分类存储和管理数据,例如将应用程序、文件或数据等分开存放,便于管理和维护,您需要执行本步骤创建分区。如果您希望直接以裸设备形式使用云盘,无需分区直接创建文件系统即可。具体操作,请参见在裸设备上创建文件系统。
不同分区类型支持的最大分区容量和分区数量不同。更多信息,请参见分区格式介绍。
如果您使用的云盘容量后续有可能会扩容到2 TiB以上,分区时请采用GPT分区。否则由于MBR分区容量的限制,您将无法直接扩容至所需容量大小,这可能导致需要重新分区和格式化云盘,进而导致数据丢失。
创建GPT分区
按以下步骤通过Parted分区工具为小于等于2 TiB的数据盘创建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等(默认4096B对齐)单位,否则会影响分区对齐,严重影响云盘性能。
<分区名称>、<初始位置>、<结束位置>请根据实际情况进行划分。
单分区示例:以划分一个主分区、分区名为primary,开始位置为1MiB,100%容量给到第一个分区为例。
mkpart primary 1MiB 100%
多分区示例:以划分两个分区、第一个分区名为primary,分区容量为20GiB,剩余容量划分至第二个分区secondary为例,需要分别执行:
mkpart primary 1MiB 20GiB mkpart secondary 20GiB 100%
(条件必选)如果您的单块云盘需要创建多个分区,您需要重复执行步骤c创建其他分区。
运行以下命令,检查分区是否对齐。
其中,
1
是对应的分区号,通常建议您做分区对齐,以获取更好的云盘性能。align-check optimal 1
如果分区是对齐的,结果如下所示:
1 aligned
说明如果返回的是
1 not aligned
,表示分区未对齐。如何处理,请参见初始化云盘FAQ。输入以下内容,查看分区表。
print
输入以下内容,退出Parted工具。
quit
分区过程如下所示。
运行以下命令,使系统重读分区表。
partprobe
运行以下命令,查看新分区信息。本操作以数据盘
/dev/vdb
为例。sudo fdisk -lu /dev/vdb
其中,
/dev/vdb
是数据盘的设备名称,请您根据实际环境替换。运行结果如下所示,如果出现gpt的相关信息,表示新分区已创建完成。
创建MBR分区
按以下步骤通过fdisk分区工具为小于等于2 TiB的数据盘创建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
键,将分区结果写入分区表中。回显信息如下图所示,表示分区创建完成。
(条件必选)如果您的单块云盘需要创建多个分区,需要重复执行步骤1创建其他分区。
运行以下命令,查看新分区信息。本操作以数据盘
/dev/vdb
为例。sudo fdisk -lu /dev/vdb
其中,
/dev/vdb
是数据盘的设备名称,请您根据实际环境替换。运行结果如下图所示,如果出现
/dev/vdb1
的相关信息,表示新分区已创建完成。
步骤三:创建并挂载文件系统
无论云盘是否进行了分区,云盘在使用前都需要创建并挂载文件系统,才能被操作系统识别并正常使用。不同文件系统支持的分区大小不同,请您根据实际需求创建文件系统。
运行以下命令,安装e2fsprogs工具。
sudo yum install -y e2fsprogs
说明此步骤中yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用
apt-get install <软件包名称>
。运行以下命令,创建文件系统。以下示例命令介绍如何创建ext4和xfs文件系统。
创建ext4文件系统
sudo mkfs -t ext4 /dev/vdb1
其中,
/dev/vdb1
是数据盘的分区名称,请您根据实际环境替换。说明当数据盘容量为16 TiB,在创建ext4文件系统报错时,您需要检查e2fsprogs工具包的版本是否高于1.42,并安装高版本的e2fsprogs工具包。具体操作,请参见如何升级e2fsprogs工具包?。
ext4文件系统的lazy init功能会影响数据盘的I/O性能,您可以关闭ext4文件系统的lazy init功能。具体操作,请参见如何关闭Linux实例的lazy init功能?。
如下图所示的示例信息表示为数据盘分区
/dev/vdb1
创建一个ext4文件系统。创建xfs文件系统
sudo mkfs -t xfs /dev/vdb1
其中,
/dev/vdb1
是数据盘的分区名称,请您根据实际环境替换。如下图所示的示例信息表示为数据盘分区
/dev/vdb1
创建一个xfs文件系统。运行以下命令,挂载文件系统。
说明挂载ext4文件系统时,您可以根据业务需求在
mount
命令中使用不同的挂载参数,以满足您对文件系统的数据安全性和性能要求。更多信息,请参见ext4文件系统挂载参数说明。sudo mount /dev/vdb1 /mnt
其中:
/dev/vdb1
是数据盘的分区名称,请您根据实际环境替换。/mnt
是分区的挂载点。挂载点可以是已有目录,或执行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 `blkid /dev/vdb1 | awk '{print \$2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab"
其中:
/dev/vdb1
:数据盘的分区名称,您需要根据实际环境进行替换(通过df -Th
命令获取)。/mnt
:分区的挂载点,您需要根据已设置的挂载点进行替换(通过df -Th
命令获取)。ext4
:分区的文件系统类型,您需要根据已创建的文件系统类型进行替换(通过df -Th
命令获取)。defaults
:文件系统的挂载参数。您可以根据实际需求选择对应的挂载参数,请参见fstab说明。
说明Ubuntu 12.04系统不支持barrier,您需要运行
sudo sh -c "echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0 >> /etc/fstab"
命令。(条件必选)如果单盘有多个连续分区的情况,需要分别将多个分区信息写入/etc/fstab中。
例如数据盘
/dev/vdb
有2个分区/dev/vdb1
和/dev/vdb2
,需要分别执行以下命令:sudo sh -c "echo `blkid /dev/vdb1 | awk '{print \$2}' | sed 's/\"//g'` </dev/vdb1的挂载点> </dev/vdb1的文件系统类型> defaults 0 0 >> /etc/fstab" sudo sh -c "echo `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功能?
相关文档
如果您的云盘容量大于2 TiB且需要通过云盘分区来分类存储和管理数据。具体操作,请参见初始化大于2 TiB数据盘。
如果您希望直接以裸设备形式使用(即不需要对云盘进行分区),您只需在初始化过程中为该裸设备创建文件系统即可。具体操作,请参见在裸设备上创建文件系统。
当云盘使用空间不足时,可以扩容云盘容量增加云盘存储空间。更多信息,请参见云盘扩容指引。