运维编排场景系列---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在实例启动时安装软件

相关文章
|
1月前
|
安全 Linux 虚拟化
|
29天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
116 3
|
1月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
运维 监控 网络协议
|
1月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
52 3
|
1月前
|
人工智能 安全 Linux
|
1月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
88 1
|
2月前
|
存储 运维 搜索推荐
|
2月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
63 3
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
66 1
下一篇
DataWorks