当前位置: 首页 > news >正文

亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程

一、背景

Amazon EBS提供了块级存储卷以用于 EC2 实例,EBS具备弹性的特点,可以动态的增加容量、更改卷类型以及修改预配置的IOPS值。但是EBS不能动态的减少容量,在实际使用中,用户也许会存在此类场景:

  • 在创建AWS EC2实例时,直接指定了较大的根卷大小,在实际使用场景中,根卷的使用量并未达到预期利用率,使得超出预期的EBS容量产生额外费用

本文基于上述情况进行如下案例设定,并成功将Amazon EC2实例的EBS根卷缩容,具体操作步骤如下。

二、动手实践

实验前,请对您的服务器拍摄快照,以备错误情况下快速恢复到正常状态

2.1 实验配置

实例系统规格根卷
origin-serverAmazon Linux 2c5.large50GiB
shrink-ebs-serverAmazon Linux 2t3.large20GiB

2.2 实验步骤

2.3 origin-server概览

模拟用户真实使用环境,在此origin-server上安装一些服务且存放一份实例信息

  1. Docker同时启用一个always restart 的nginx容器,暴露主机端口10080,
  2. nginx,暴露主机端口tcp 80
  3. 在/root目录下存放一份origin-server-info的信息

image.png
image.png
image.png

2.4 创建shrink-ebs-server并操作

2.4.1 创建并停止实例

在和origin-server同一可用区创建的shrink-ebs-server需要和origin-server保持一致的AMI(系统镜像),创建并成功运行后,停止实例
image.png

2.4.2 分离shrink-ebs-server根卷

image.png
image.png
image.png

2.5 origin-server挂载shrink-ebs-server根卷并复制数据

2.5.1 挂载shrink-ebs-server根卷

image.png
image.png

2.5.2 origin-server查看并复制磁盘数据

2.5.2.1 查看fstab中文件系统挂载信息,同时修改uuid为具体的磁盘设备名称
cat /etc/fstab
blkid /dev/nvme0n1p1
sed -i 's/UUID=nvme0n1p1的UUID/\/dev\/nvme0n1p1/' /etc/fstab

image.png

2.5.2.2 查看所有磁盘及其uuid

可以看到新挂载的磁盘和当前磁盘有同样的UUID

# 使用blkid命令 可查看磁盘uuid
lsblk
blkid

image.png
image.png

2.5.2.3 挂载shrink-ebs-server根卷到/mnt目录
mount -t xfs -o nouuid /dev/nvme1n1p1 /mnt
df -Th

image.png

2.5.2.4 使用rsync复制当前根卷数据到shrink-ebs-server根卷

使用exclude参数排除不必要的目录,请勿在–exclude={}参数 中{}使用空格

# 使用rsync进行复制
rsync -aAXv --exclude={"/home/","/home","/dev/","/proc/","/sys/","/tmp/","/run/","/mnt/","/media/*","/lost+found","/","/mnt"} / /mnt

image.png
image.png

2.6 使用缩容磁盘启动实例

2.6.1 停止origin-server并分离所有EBS卷

经过上述操作后,我们得到已经从origin-server根卷复制数据的shrink-ebs-server根卷,现在我们需要将origin-server关机,并取消掉所有挂载的EBS卷
image.png
image.png
image.png

2.6.2 挂载shrink-ebs-server根卷到origin-server

需要注意挂载的设备名称为 2.6.2中提到的 xvda
image.png
image.png
image.png

2.6.3 启动origin实例

2.6.3.1 查看origin-server之前创建的文件

image.png

2.6.3.2 查看origin-server之前的服务是否正常image.png

image.png
image.png

2.6.4 删除shrink-ebs-server及origin-server源磁盘

确保您的数据无误后,请手动删除shrink-ebs-server及其origin-server的源磁盘,避免不必要的费用产生!
image.png
image.png

三、总结

通过上述步骤操作,您已经成功将Amazon EC2实例的EBS根卷从50GiB缩容至20GiB。同时您也可以通过该方案将非EBS根卷进行缩容,例如宝塔所挂载的数据卷。
如果您只是参照文章进行实验,请注意在试验后应释放所有创建的资源以避免不必要的费用产生!

相关文章:

  • git 分支管理命令及说明
  • 【C语言】6-6 数组循环右移 分数 20
  • 技术分享-Jenkins
  • C++ opencv RGB三通道提升亮度
  • Linux 一键部署TeamCity
  • 我的创作纪念日2048
  • c# 使用OpenCV
  • 【K8s】1# 使用kuboard-spray安装K8s集群
  • Java代码审计Mybatis注入文件上传下载读取(非常详细!!)
  • FFmpeg实现rtp推流
  • 黑豹程序员-安装docker-ce
  • 使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理
  • linux搭建gitlab
  • 漫谈UNIX、Linux、UNIX-Like
  • JMeter常见配置及常见问题修改
  • 【技术性】Search知识
  • 78. Subsets
  • CentOS7 安装JDK
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Cumulo 的 ClojureScript 模块已经成型
  • extract-text-webpack-plugin用法
  • Linux各目录及每个目录的详细介绍
  • Material Design
  • MYSQL 的 IF 函数
  • Shell编程
  • 马上搞懂 GeoJSON
  • 前端攻城师
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 数组大概知多少
  • 原生 js 实现移动端 Touch 滑动反弹
  • 责任链模式的两种实现
  • 阿里云API、SDK和CLI应用实践方案
  • ​比特币大跌的 2 个原因
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (八十八)VFL语言初步 - 实现布局
  • (第61天)多租户架构(CDB/PDB)
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (十五)使用Nexus创建Maven私服
  • (译) 函数式 JS #1:简介
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .NET 常见的偏门问题
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 使窗口永不获得焦点
  • .NetCore部署微服务(二)
  • .Net各种迷惑命名解释
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net下简单快捷的数值高低位切换