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

相关文章
|
14天前
|
安全 Linux 虚拟化
|
22天前
|
运维 监控 网络协议
|
8天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
25 3
|
15天前
|
人工智能 安全 Linux
|
1月前
|
存储 运维 搜索推荐
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
35 1
|
1月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
42 1
|
1月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
|
2月前
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
2月前
|
消息中间件 运维 Linux
linux之centos运维kafka
linux之centos运维kafka