一种高效自动化ECS实例数据盘挂载和格式化方式

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 默认情况下创建的 ECS 实例只有一个40G 的高效云盘系统盘,通过任何形式(控制台、ECS SDK 等) 方式创建的实例,如果需要使用数据盘,必须先进行额外的格式化数据盘工作。如果需要批量创建大量的有特定格式化需求数据盘的 ECS 实例,那么单独为每一台实例格式化数据盘肯定是一件浪费运维资源的工作。

默认情况下创建的 ECS 实例只有一个40G 的高效云盘系统盘,通过任何形式(控制台、ECS SDK 等) 方式创建的实例,如果需要使用数据盘,必须先进行额外的格式化数据盘工作。

如果需要批量创建大量的有特定格式化需求数据盘的 ECS 实例,那么单独为每一台实例格式化数据盘肯定是一件浪费运维资源的工作。所以,这里介绍一种比较简单的 ECS 实例数据盘自动挂载和格式化的方式,也许有更好的方法,请各位大神拍砖。

背景

阿里云 ECS 实例对数据盘的使用,由于涉及到用户自己的业务逻辑,对盘的数目、分区方式、文件系统要求等都不尽相同,所以 ECS 服务提供了自主的方式,将数据盘的格式化工作全部交托给用户自行处理,这样就导致了用户需要进行一步的运维工作,才能对数据盘进行正常的使用。如果用户需要创建批量的实例,那么对这些实例分别进行数据盘的初始化操作必然会成为运维中的一项额外的工作。

以 Linux 系统为例,主要的步骤如下:

格式化磁盘步骤.png

如果是新购买的数据盘,那么需要先挂载数据盘。如果是和实例一同购买的数据盘,那么可以直接进行数据盘的格式化即可。

我们知道,ECS 提供了自定义镜像的功能,用户可以从现有的实例构建镜像,此后就可以使用该镜像作为新的实例创建的模板,"克隆"业务所需的实例了。那么数据盘的格式化信息是否也能被"录制"到镜像中呢?当然可以。

如何制作数据盘格式化了的镜像

这里以 Linux 系统(实例基础镜像为 linux_17_01_64_20G_cloudinit_20171222.vhd),挂载 SSD 云盘,创建一个单分区,并挂载文件系统为例。使用 ECS 的 SDK 进行相关的操作。

首先,通过 CreateInstance 创建一个 ECS 实例,注意,创建参数中 DataDisk 参数的内容:

type DataDiskType struct {
    Size                     int
    Category             DiskCategory //Enum cloud, ephemeral, ephemeral_ssd
    SnapshotId         string
    DiskName           string
    Description         string
    Device                string
    DeleteWithInstance bool
}
  • Size: 数据盘大小,单位 GB
  • Category: 数据盘的类型,如 ephemeral_ssd, cloud_efficiency 和 cloud_ssd 等,分别对应本地 SSD , 高效云盘,高效 SSD 等。
  • Device: 数据盘挂载点的设备名称,如果不填,默认由系统分配,I/O 优化实例的数据盘设备名从
    /dev/vdb 递增排列,包括 /dev/vdb− /dev/vdz。如果数据盘设备名为 dev/xvd 是 a−z 的任意一个字母),表示您使用的是非 I/O 优化实例。

在创建时,DataDisk 参数中只有一块 DataDiskType 类型,我们选择使用默认的 Device 。此时创建出来的实例,带有一块数据盘,但是未格式化。如果登录机器,通过 fdisk -l 可以看到对应的数据盘的信息以及挂载点。但是文件系统中是没有任何该数据盘的信息的。

image.png

image.png

接下来就是自定义机器的业务逻辑,比如,需要如何配置系统、安装什么软件等等,可以通过 SSH Client 相关工具对机器进行自动化操作。比如数据盘格式化的操作,可以生成这样的 shell 文件,通过 SSH Client 拷贝到实例机器上,然后执行就可以了。

set -e
setup_disk() {
    tee ./command <<-EOF
n
p
1


w
p
EOF
    fdisk -u /dev/vdb < ./command
    mkfs.ext4 /dev/vdb1
    echo /dev/vdb1 /your_dir ext4 defaults 0 0 >> /etc/fstab
    mkdir -p /your_dir
    mount /dev/vdb1 /your_dir
}

setup_disk

执行完成之后,你可以看到系统信息已经发生变化:

image.png

image.png

当然,为了验证磁盘格式化信息正确持久化,你可以对这个实例重启,然后再进行相关的 check,check 逻辑可以简单如下:

set -e

df -h|grep '/your_dir'|grep '/dev/vdb1'
fdisk -l|tail -1|grep '/dev/vdb1'

最后,通过 CreateImage 构建镜像即可。

如何通过镜像复制实例

通过上面的步骤,你应该已经制作了一个带有数据盘格式化信息的镜像了,那么这时你需要通过这个镜像来创建你需要的实例。创建实例的过程和一开始通过 CreateInstance 相同,但是有一些坑需要注意:

  • CreateInstance 的参数中 DataDisk 必须填写,并且 DataDisk 中的一块数据盘的 Device 信息必须和镜像中的数据盘设备名完全相同。如果不填或者填错,那么系统会当做一块新的数据盘进行处理,此时创建出来的实例会有两块数据盘。分别挂载 /dev/xvdb 和 /dev/xvdc。而 /dev/xvdb 是镜像自带的已经格式化的数据盘,/dev/xvdc 才是你在这次 CreateInstance 指定的数据盘,而且只挂载没有格式化化。下图展示了我的一次失败的操作结果:

image.png

image.png

  • 镜像中仅仅保存了数据盘格式化的信息,但是并未保存磁盘类型信息,比如在创建进行的时候使用的实例挂载的数据盘是 cloud_ssd,但是如果不指定 DataDisk 中数据盘的 Category ,默认使用的是高效云盘。因为数据盘类型属于业务属性,镜像本身并没有这个属性。
  • Device 的值并不是你在机器上通过 fdisk -l 看到的,可以需要通过 DescribeImages 查看。我们通过 fdisk -l 可以看到上面的数据盘都是在 /dev/vdb 这个设备名上,但是 DescribeImages 的返回结果却是:

image.png

这个值和虚拟化的类型相关,所以,请以 DescribeImages 的结果为准。

总结

一个简单的数据盘格式化模板构建方式,小总结一下~~谢谢拍砖。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
20天前
|
弹性计算 监控 负载均衡
|
3天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c8i实例解析:实例规格性能及使用场景和最新价格参考
计算型c8i实例作为阿里云服务器家族中的重要成员,以其卓越的计算性能、稳定的算力输出、强劲的I/O引擎以及芯片级的安全加固,广泛适用于机器学习推理、数据分析、批量计算、视频编码、游戏服务器前端、高性能科学和工程应用以及Web前端服务器等多种场景。本文将全面介绍阿里云服务器计算型c8i实例,从规格族特性、适用场景、详细规格指标、性能优势、实际应用案例,到最新的活动价格,以供大家参考。
|
8天前
|
存储 弹性计算 缓存
阿里云服务器通用型g8i实例性能与使用场景介绍及最新收费标准参考
阿里云ECS通用型g8i服务器采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。ECS通用型g8i实例支持开启或关闭超线程配置,单台g8i实例最高支持100万IOPS。阿里云ECS通用型g8i实例CPU采用Intel®Xeon®Emerald Rapids或者Intel®Xeon®Sapphire Rapids,主频不低于2.7 GHz,全核睿频3.2GHz。本文为大家介绍通用型g8i实例性能与使用场景介绍及最新收费标准,以供参考。
|
9天前
|
弹性计算 缓存 数据挖掘
阿里云服务器经济型e和通用算力型u1实例区别及选择参考
在阿里云目前的活动中,经济型e和通用算力型u1实例是两个比较热门的云服务器实例规格,收费标准相对其他计算型、通用型和内存型实例来说要更低一些,经济型e实例ECS云服务器2核2G3M带宽新购和续费都是99元1年,通用算力型u1实例2核4G5M带宽新购和续费都只要199元1年、4核8G云服务器955.58元1年。有的新手用户并不清楚他们之间的区别及如何选择,本文将介绍阿里云服务器中的经济型e实例和通用算力型u1实例的特点、区别以及新手选择参考。
|
17天前
|
存储 缓存 安全
阿里云服务器内存型r7、r8a、r8y、r8i实例区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y和内存型r8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:8,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍内存型r7、r8a、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
15天前
|
存储 Linux
服务器数据恢复——使用fsck后Ext4文件系统挂载不上的数据恢复案例
关于Ext4文件系统的几个概念: 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组结构基本上相同。 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,主要描述块位图、i-节点位图及i-节点表的地址等信息。 超级块(Superblock):用于存储文件系统的配置参数(块大小、总块数、i-节点数等)和动态信息(当前空闲块数和i-节点数)。Ext4文件系统的超级块始于1024字节处,即2号扇区。 i节点:描述文件的时间、大小、块指针等信息。
|
20天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器c7/c8a/c8y/c8i/g7/g8a/g8y/g8i/r7/r8a/r8y/r8i实例区别及选择参考
在阿里云目前的活动中,除了特价的轻量应用服务器和经济型e及通用算力型u1实例之外,属于计算型实例的实例有计算型c7/c8a/c8y/c8i,属于通用型实例的有通用型g7/g8a/g8y/g8i,属于内存型实例的有内存型r7/r8a/r8y/r8i。本文将详细介绍阿里云服务器中的c7、c8a、c8y、c8i、g7、g8a、g8y、g8i、r7、r8a、r8y、r8i等实例规格的性能、适用场景及选择参考,帮助用户更好地选择合适的云服务器实例。
|
23天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、c8a、c8y、c8i实例性能、适用场景区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于计算型实例规格的云服务器有计算型c7、计算型c8a、计算型c8y和计算型c8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:2,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍计算型c7、c8a、c8y、c8i实例的性能、适用场景的区别以及选择参考。
|
23天前
|
运维 应用服务中间件 调度
自动化运维:使用Ansible实现服务器批量管理
【10月更文挑战第26天】在当今快速发展的IT领域,自动化运维已成为提升效率、降低人为错误的关键技术手段。本文通过介绍如何使用Ansible这一强大的自动化工具,来简化和加速服务器的批量管理工作,旨在帮助读者理解自动化运维的核心概念和实践方法。文章将围绕Ansible的基础使用、配置管理、任务调度等方面展开,通过实际案例引导读者深入理解自动化运维的实现过程,最终达到提高运维效率和质量的目的。

热门文章

最新文章

下一篇
无影云桌面