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

相关文章
|
自然语言处理 监控 Linux
Linux 内核源码分析---proc 文件系统
`proc`文件系统是Linux内核中一个灵活而强大的工具,提供了一个与内核数据结构交互的接口。通过本文的分析,我们深入探讨了 `proc`文件系统的实现原理,包括其初始化、文件的创建与操作、动态内容生成等方面。通过对这些内容的理解,开发者可以更好地利用 `proc`文件系统来监控和调试内核,同时也为系统管理提供了便利的工具。
727 16
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
858 15
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
4276 7
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
426 7
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
399 8
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
1027 30
|
存储 Linux 文件存储
Linux文件系统
Linux文件系统 一切皆文件 在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括: 普通文件:存储数据的常规文件。 目录文件:包含其他文件和子目录的文件。 进程文件:在/proc目录下代表系统中运行的进程。 设备文件:位于/dev目录,代表硬件设备。 网络字节流套接字文件:用于网络通信的数据流。 链接文件:指向另一个文件的符号链接或硬链接。 管道文件:用于进程间通信的文件。
312 7
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
444 1