一种高效自动化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
相关文章
|
11天前
|
弹性计算 关系型数据库 MySQL
阿里云服务器搭建网站教程:经济型e实例2核2G快速搭建网站图文教程参考
目前在阿里云的活动中,轻量应用服务器2核2G3M带宽只要68元1年,2核4G4M带宽只要298元1年。云服务器ECS经济型e实例2核2G 3M固定带宽,价格只要99元/1年,新老用户都可购买,企业用户购买2核4G5M带宽199元一年,为用户提供长期权益。这些都是个人和普通企业用户搭建网站使用较多的云服务器,本文为大家展示使用经济型e实例2核2G3M带宽快速搭建网站的相关教程,以供参考。
105 18
|
1月前
|
存储 缓存 运维
阿里云服务器经济型e与通用算力型u1实例各自性能、适用场景区别及选择参考
在选择阿里云服务器实例规格时,经济型e实例和通用算力型u1实例因其高性价比和广泛适用性,备受个人开发者、中小企业的青睐。在同地域、相同配置的情况下,经济型e和通用算力型u1实例的价格相对于其他实例规格要低一些,很多个人和初创企业用户都会优先考虑选择这两个实例规格的云服务器,那么它们之间有什么区别?各自的性能、适用场景上有何区别?我们应该如何选择呢?本文将详细解析这两款实例的性能特点、适用场景、价格优势及购买建议,帮助用户更好地理解并选择合适的云服务器实例。
135 17
|
1月前
|
存储 弹性计算 数据挖掘
阿里云服务器ECS经济型e实例与通用算力u1区别、特性优势、使用场景及租赁费用对比
阿里云ECS云服务器的经济型e实例和通用算力型u1实例各有特点。e实例适合个人开发者和小微企业,适用于中小型网站、开发测试和轻量级应用,性价比高。u1实例则更适合中小企业,提供更高的性能和稳定性,适用于企业级应用、数据分析和中小型数据库。同等配置下,u1实例在计算、存储和网络性能上优于e实例。
202 86
|
3天前
|
存储 安全 数据安全/隐私保护
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍
随着技术的不断进步,到2025年,阿里云服务器实例也经历了多代升级,从五代实例到最新的八代实例,每一代都在性能、稳定性、能效比等方面取得了显著提升。有的用户由于是初次接触阿里云服务器,所以不是很清楚阿里云服务器五代、六代、七代、八代实例有哪些,它们各自在云服务器性能上有哪些提升。本文将详细介绍阿里云服务器五代、六代、七代、八代实例的特点及性能提升,帮助用户更好地了解并选择适合自己的云服务器实例。
|
2天前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器出新品通用型实例了,全球26个地域可选
近日,阿里云再度发力,推出了首款全新升级的轻量应用服务器——通用型实例。这款服务器实例不仅标配了200Mbps峰值公网带宽,更在计算、存储、网络等基础资源上进行了全面优化,旨在为中小企业和开发者提供更加轻量、易用、普惠的云计算服务,满足其对于通用计算小算力的迫切需求。目前,这款新品已在全球26个地域正式上线,为全球用户提供了更加便捷、高效的上云选择。
|
5天前
|
存储 弹性计算 安全
阿里云服务器经济型e实例4核16G和8核32G特惠云服务器测评参考
阿里云有两款特惠云服务器——4核16G10M带宽和4核32G10M带宽,系统盘都是100G ESSD Entry,价格分别仅需70元1个月和160元1个月。那么,这两款云服务器到底性能如何?适用于哪些场景?是否值得购买?本文将全方位深入测评这两款特惠云服务器,并为您提供详细的购买建议。
|
10天前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。
|
1月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
197 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
16天前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本
|
24天前
|
存储 缓存 资源调度
阿里云服务器经济型、通用算力型、计算型、通用型、内存型实例区别与选择指南
在我们通过阿里云的活动选购云服务器的时候会发现,相同配置的云服务器往往有多个不同的实例可选,而且价格差别也比较大,这会是因为不同实例规格的由于采用的处理器不同,底层架构也有所不同(例如X86 计算架构与Arm 计算架构),因此不同实例的云服务器其性能与适用场景是有所不同。本文将详细解析阿里云的经济型、通用算力型、计算型、通用型和内存型实例的性能特点及适用场景,帮助用户根据自己的业务需求做出明智的选择。