一块全新的数据盘挂载到ECS实例后,还不能直接存储数据,通常您需要在数据盘进行分区、文件系统格式化、挂载文件系统等初始化操作后,才能供系统读写数据。本文介绍如何在Linux系统中初始化一块小于等于2 TiB的数据盘。
前提条件
数据盘已挂载到ECS实例。具体操作,请参见挂载数据盘。
背景信息
本文示例使用的配置如下所示,您需要根据实际环境进行操作。
操作系统 |
资源 |
描述 |
Linux系统 |
ECS实例的镜像 |
公共镜像Alibaba Cloud Linux 3.2104 64位 |
数据盘 |
|
说明
如果您使用的云盘容量大于2 TiB,初始化操作请参见初始化大于2 TiB数据盘。
操作步骤
步骤一:登录ECS实例并查看数据盘
-
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
-
运行以下命令,获取数据盘的设备名称。
sudo fdisk -lu
运行结果如下所示,表示当前ECS实例有两块云盘,
/dev/vda
是系统盘,/dev/vdb
是新增数据盘。
步骤二:为数据盘创建分区
重要
-
MBR分区不支持2 TiB以上容量。如果您使用的云盘容量大于2 TiB或者后续有可能会扩容到2 TiB以上,分区时请采用GPT分区格式。
-
Parted工具适用于MBR分区和GPT分区,fdisk分区工具只适用于MBR分区。
创建GPT分区
按以下步骤通过Parted分区工具为小于等于2 TiB的数据盘创建GPT分区,GPT分区也支持2 TiB以上容量。
-
运行以下命令,安装Parted工具。
sudo yum install -y parted
说明
此步骤中yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用
apt-get install
。 -
使用Parted工具为数据盘进行分区。
-
运行以下命令,开始分区。本操作以数据盘
/dev/vdb
为例。sudo parted /dev/vdb
其中,
/dev/vdb
是数据盘的设备名称,请您根据实际环境替换。 -
在Parted交互命令行输入以下内容,设置GPT分区格式。
mklabel gpt
-
输入以下内容,划分一个主分区,并设置分区的开始位置和结束位置。
本操作以划分一个主分区、分区名为primary且100%容量给到第一个分区为例。
mkpart primary 1 100%
说明
如果您的单块云盘需要创建多个分区,您需要重复执行本步骤去创建其他分区。
-
运行以下命令,检查分区是否对齐。
其中,
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
表示扩展分区。说明
云盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区和1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。更多信息,请参见分区格式介绍。
-
-
以创建一个主要分区为例。输入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
键,将分区结果写入分区表中。回显信息如下图所示,表示分区创建完成。
说明
如果您的单块云盘需要创建多个分区,您需要重复执行本步骤去创建其他分区。
-
-
运行以下命令,查看新分区信息。本操作以数据盘
/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文件系统。 -
步骤四:配置开机自动挂载分区
如果您需要设置开机自动挂载云盘,需要在/etc/fstab中写入新分区信息,启动开机自动挂载分区。
重要
建议您在/etc/fstab中使用全局唯一标识符UUID来引用新分区。由于释放云盘等操作可能会导致其他云盘的设备名变动,如果在/etc/fstab中直接使用设备名,当设备名变动时可能影响您的存储数据。
-
运行以下命令,备份/etc/fstab文件。
sudo cp /etc/fstab /etc/fstab.bak
-
在/etc/fstab里写入新分区信息。
root用户
运行以下命令修改/etc/fstab文件。
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab
其中:
-
/dev/vdb1
:数据盘的分区名称,您需要根据实际环境进行替换。 -
/mnt
:分区的挂载点,您需要根据实际环境进行替换。重要
该目录需要您根据实际环境自行指定,请您正确指定或者创建需要挂载的目录。您可以将分区挂载至环境已有目录下,也可以先通过
mkdir
命令创建新的目录,然后再挂载。 -
ext4
:分区的文件系统类型,您需要根据已创建的文件系统类型修改。 -
defaults
:文件系统的挂载参数。请您根据实际需求选择对应的挂载参数,以满足您对文件系统的数据安全性以及性能的要求。更多信息,请参见使用mount命令挂载ext4文件系统。
说明
-
Ubuntu 12.04系统不支持barrier,您需要运行
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0 >> /etc/fstab
命令。如果您的操作系统不是Ubuntu 12.04,请忽略该说明信息。 -
如果单盘有多个连续分区的情况,需要分别将分区信息写入/etc/fstab中。例如数据盘
/dev/vdb
有2个分区/dev/vdb1
和/dev/vdb2
,需要分别执行以下命令:echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` defaults 0 0 >> /etc/fstab echo `blkid /dev/vdb2 | awk '{print $2}' | sed 's/\"//g'` defaults 0 0 >> /etc/fstab
普通用户
手动修改/etc/fstab文件。具体操作,请参见在fstab文件中配置UUID方式自动挂载数据盘。
-
-
运行以下命令,查看/etc/fstab中的新分区信息。
cat /etc/fstab
结果如下所示。
运行以下命令,挂载/etc/fstab配置的文件系统。如果无报错输出,表示您的/etc/fstab配置无误。
sudo mount -a
-
运行以下命令,检查挂载结果是否符合您的预期。
df -h
结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。
初始化云盘FAQ
创建GPT分区时,分区未对齐如何解决?
运行以下命令,查看云盘参数。
cat /sys/block/vdb/queue/optimal_io_size cat /sys/block/vdb/queue/minimum_io_size cat /sys/block/vdb/alignment_offset cat /sys/block/vdb/queue/physical_block_size
-
运行以下命令,重新划分一个主分区。
mkpart primary s 100%
其中,
=(+)/
。例如,1024为计算得出的推荐扇区值,则您可以运行mkpart primary 1024s 100%
重新划分一个主分区。
Linux实例如何升级e2fsprogs工具包?
如果数据盘容量为16 TiB,您需要使用1.42及以上版本的e2fsprogs工具包完成ext4文件系统格式化。如果e2fsprogs版本低于1.42,会出现如下错误信息。
mkfs.ext4: Size of device /dev/vdb too big to be expressed in 32 bits using a blocksize of 4096.
您需要按以下方式安装高版本的e2fsprogs,例如本示例中使用的1.42.8。
-
运行以下命令,检查e2fsprogs当前的版本。
rpm -qa | grep e2fsprogs
运行结果如下所示。
如果当前版本低于1.42,按以下步骤安装软件。
-
运行以下命令,下载1.42.8版本的e2fsprogs。
您也可以在 e2fsprogs找到最新的软件包。
wget https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.42.8/e2fsprogs-1.42.8.tar.gz --no-check-certificate
-
编译高版本的工具。
-
运行以下命令,解压软件包。
tar xvzf e2fsprogs-1.42.8.tar.gz
-
运行以下命令,进入软件包目录。
cd e2fsprogs-1.42.8
-
运行以下命令,生成Makefile文件。
./configure
-
运行以下命令,编译e2fsprogs。
make
-
运行以下命令,安装e2fsprogs。
make install
-
-
运行以下命令,检查是否成功更新版本。
rpm -qa | grep e2fsprogs
如何关闭Linux实例的lazy init功能?
ext4文件系统默认开启lazy init功能。该功能开启时,实例会发起一个线程持续地初始化ext4文件系统的metadata,从而延迟metadata初始化。所以在格式化数据盘后的近期时间内,云盘的IOPS性能会受到影响,IOPS性能测试的数据会明显偏低。
如果您需要在格式化以后马上测试数据盘性能,请运行以下命令在格式化文件系统时关闭lazy_init功能。
sudo mke2fs -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -E lazy_itable_init=0,lazy_journal_init=0 /dev/vdb1
说明
关闭lazy init功能后,格式化的时间会大幅度地延长,格式化32 TiB的数据盘可能需要10分钟~30分钟。请您根据自身的需要选择是否使用lazy init功能。
关于阿里云ecs服务器的内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/9595.html