运维编排场景系列---Linux数据盘扩展分区和文件系统

简介: 本文讲述如何利用OOS实现扩容linux数据盘后扩展其分区和文件系统。目前支持仅有一块数据盘,扩展已有MBR分区或扩容裸设备文件系统,具体流程请参考帮助文档扩展分区和文件系统_Linux数据盘。

场景介绍

本文讲述如何利用OOS实现扩容linux数据盘后扩展其分区和文件系统。目前支持仅有一块数据盘,扩展已有MBR分区或扩容裸设备文件系统,具体流程请参考帮助文档扩展分区和文件系统_Linux数据盘

本文具体场景:为一块已分区的数据盘通过OOS进行扩容,以及扩展对应的分区和文件系统。
前提条件:对应ECS实例只挂载了一块只有主分区的数据盘。
m0

执行OOS模板扩容后:
m1

操作流程

请先登陆运维编排控制台,如果未开通此服务请放心开通,运维编排是免费的。

创建模板

a.点击我的模板,创建模板
m2

b.选择空白模板,点击选取
m3

c.选取YAML栏,复制粘贴以下模板

FormatVersion: OOS-2019-06-01
Description:
  en: Resize disk and expand file system.
  zh-cn: 扩容数据盘(Linux)。
Parameters:
  instanceId:
    Description:
      en: The id of instance.
      zh-cn: 实例ID。
    Type: String
  diskId:
    Description:
      en: The id of disk.
      zh-cn: 磁盘ID。
    Type: String
  newSize:
    Description:
      en: The size of disk.
      zh-cn: 磁盘大小。
    Type: Number
    MinValue: 20
    MaxValue: 1999
  action:
    Description: ''
    Type: String
    AllowedValues:
      - 扩展已有MBR分区
      - 扩容裸设备文件系统
  OOSAssumeRole:
    Description: The RAM role to be assumed by OOS.
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: startInstance
    Action: ACS::ECS::StartInstance
    Description:
      en: Starts the ECS instances.
      zh-cn: 启动实例。
    Properties:
      instanceId: '{{ instanceId }}'
  - Name: checkInstanceOSType
    Action: ACS::CheckFor
    Description:
      en: Get ECS instance zone id.
      zh-cn: 获取实例的ZoneId。
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        InstanceIds:
          - '{{ instanceId }}'
      DesiredValues:
        - linux
      PropertySelector: Instances.Instance[].OSType
  - Name: createSnapshot
    Action: 'ACS::ECS::CreateSnapshot'
    Description:
      en: Create a snapshot for a cloud disk.
      zh-cn: 为一块云盘创建一份快照。
    Properties:
      diskId: '{{ diskId }}'
    Outputs:
      snapshotId:
        Type: String
        ValueSelector: snapshotId
  - Name: resizeDisk
    Action: ACS::ECS::ResizeDisk
    OnError:  deleteSnapshot
    Description: Resize disk.
    Properties:
      instanceId: '{{ instanceId }}'
      diskId: '{{ diskId }}'
      newSize: '{{ newSize }}'
  - Name: choseResizeType
    Action: ACS::Choice
    Description: Choose next task by CloudAssistant status.
    Properties:
      DefaultTask: ExpandExistedPartition
      Choices:
        - When:
            'Fn::Equals':
              - '扩容裸设备文件系统'
              - '{{ action }}'
          NextTask: ExpandNewPartition
  - Name: ExpandExistedPartition
    Action: 'ACS::ECS::RunCommand'
    Description:
      en: Run cloud assistant command.
      zh-cn: 执行云助手命令。
    OnSuccess:  deleteSnapshot
    OnError: resetDisk
    Properties:
      commandContent: |-
        echo '#!/bin/bash' >> resizedisk.sh;
        echo 'umount /dev/vdb1' >> resizedisk.sh;
        echo 'echo "d' >> resizedisk.sh;
        echo 'w' >> resizedisk.sh;
        echo '" | fdisk -u /dev/vdb' >> resizedisk.sh;
        echo 'echo "n' >> resizedisk.sh;
        echo 'p' >> resizedisk.sh;
        echo 1 >> resizedisk.sh;
        echo -e '\n' >> resizedisk.sh;
        echo -e '\n' >> resizedisk.sh;
        echo 'w' >> resizedisk.sh;
        echo '" | fdisk -u /dev/vdb' >> resizedisk.sh;
        echo 'partx -u /dev/vdb' >> resizedisk.sh;
        echo 'sleep 10s' >> resizedisk.sh
        echo 'resize2fs /dev/vdb1' >> resizedisk.sh;
        echo 'mount /dev/vdb1 /mnt' >> resizedisk.sh;
        echo 'df -h' >> resizedisk.sh;
        /bin/bash resizedisk.sh
      instanceId: '{{ instanceId }}'
      commandType: RunShellScript
    Outputs:
      commandOutput:
        Type: String
        ValueSelector: invocationOutput
  - Name: ExpandNewPartition
    Action: 'ACS::ECS::RunCommand'
    Description:
      en: Run cloud assistant command.
      zh-cn: 执行云助手命令。
    OnSuccess:  deleteSnapshot
    OnError: resetDisk
    Properties:
      commandContent: |-
        resize2fs /dev/vdb
        df -h
      instanceId: '{{ instanceId }}'
      commandType: RunShellScript
    Outputs:
      commandOutput:
        Type: String
        ValueSelector: invocationOutput
  - Name: resetDisk
    Action: ACS::ECS::ResetDisk
    Description:
      en: Resets disk by snapshot.
      zh-cn: 回滚磁盘。
    Properties:
      instanceId: '{{ instanceId }}'
      diskId: '{{ diskId }}'
      snapshotId: '{{ createSnapshot.snapshotId }}'
  - Name: deleteSnapshot
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Delete the specified snapshot.
      zh-cn: 删除指定的快照。
    Properties:
      Service: ECS
      API: DeleteSnapshot
      Parameters:
        SnapshotId: '{{ createSnapshot.snapshotId }}'
Outputs:
  commandOutput:
    Type: List
    Value:
      'Fn::If':
        - 'Fn::Equals':
          - '扩容裸设备文件系统'
          - '{{ action }}'
        - '{{ ExpandNewPartition.commandOutput }}'
        - '{{ ExpandExistedPartition.commandOutput }}'

d.输入模板名称,点击创建模板 
m4

   

执行模板

a.创建执行
m5

b.设置参数
m6

c.确认风险并执行
m7

查看结果

m8



系列文章

主题文章

阿里云重磅发布云上自动化利器——运维编排OOS

最佳实践

玩转运维编排服务的权限:Assume Role+Pass Role
阿里云运维编排新功能:一键批量克隆ECS
批量在多台ECS内执行命令

场景系列

运维编排场景系列----更新ECS镜像
运维编排场景系列----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
运维编排场景系列----每日统计多Region实例的运行状态
运维编排场景系列----如何使用jq
运维编排场景系列----分批到机器上运行命令
运维编排场景系列----更新镜像后自动更新伸缩配置镜像
运维编排场景系列----向Linux实例上传文件
运维编排场景系列----运行远端shell脚本
运维编排场景系列----在ECS实例上运行Ansible-playbook
运维编排场景系列----下载JVM堆栈到OSS
运维编排系列场景----将实例的固定公网IP转换为其它新EIP
运维编排场景系列----自动定时升级临时带宽
运维编排场景系列----批量更新云助手客户端
运维编排系列场景----批量释放实例
运维编排场景系列----ECS实例系统快照下载到本地
运维编排场景系列----批量更换系统盘
运维编排场景系列----基于镜像的日常发布
运维编排场景系列----自动创建多个区域同类型存储空间
运维编排场景系列----Autoscaling 通过LifecycleHook在实例启动时安装软件

相关文章
|
9月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
10月前
|
自然语言处理 监控 Linux
Linux 内核源码分析---proc 文件系统
`proc`文件系统是Linux内核中一个灵活而强大的工具,提供了一个与内核数据结构交互的接口。通过本文的分析,我们深入探讨了 `proc`文件系统的实现原理,包括其初始化、文件的创建与操作、动态内容生成等方面。通过对这些内容的理解,开发者可以更好地利用 `proc`文件系统来监控和调试内核,同时也为系统管理提供了便利的工具。
565 16
|
9月前
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
399 6
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
668 15
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
3065 7
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
319 7
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
2043 3
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。

热门文章

最新文章