通过给EBS类型的根设备扩容解决AWS磁盘容量已满

问题描述

  • 在EC2实例上执行df -h命令不断的报错说no space
  • 根据指令执行结果/dev/xvda1目录的使用Use% 占了100%
  • 首先采取删除不需要的文件,可以维持一会,但是由于不断的运行jenkins job所以导致该目录的占用率又达到100%

问题推理过程:

  • Q1:使用了指令df -h发现一个目录已经满了,那么这个指令到底是什么作用?使用它log出的那些文件都是什么?这个满了的目录又是什么?
  • A1:
    • 首先关于命令的解释:
      - df显示现有磁盘空间使用率,或者显示Linux文件系统上总空间以及可用空间的信息(显示的是所有已经安装到该机器上的文件系统或者说已经安装到该文件系统的物理磁盘(存储卷))以及在当前Linux文件系统中的挂载点。
      - df -h: log出来的
      - Filesystem 代表这块存储卷的名字
      - Mounted on 代表这个存储卷挂载到了实例文件系统的位置
      Linux文件系统将所有物理硬盘统一到一个目录结构中(就是这个实例的文件系统)。这一切都是从顶部(/)目录开始的
      - df .显示当前目录所在的文件系统(物理磁盘或者存储卷)的相关信息
      - 因此可得出挂载到ec2实例上的某一个存储卷已经被占满了,接着发现指令输出的该文件的mounted on属性是'/' 说明该存储卷挂载到了实例的根目录上。说明此时根目录对应的磁盘空间不足了,当然也就意味着实例的文件系统都满了,直接导致实例不能正常工作了
      - 补一张Linux文件系统很low的示意图
      image.png
  • Q2:对于EC2实例而言挂载在根目录的存储卷是什么呢?
  • A2:对于一个EC2实例文件系统的使用的存储卷分成两类:实例存储卷和EBS存储卷。在前者中存储的数据会随着实例的删除而丢失,后者存储的数据是独立于实例的,因此删除实例并不影响EBS存储卷上存储的数据,它可以被看做安装在实例上的硬盘。
    • 如何查询根目录的存储卷类型:打开aws ec2 ui界面,查看某一个正在运行的ec2实例


      image.png

可以看到根设备类型以及根设备:可知根目录挂载的是一个EBS存储卷,并且存储卷的Filesystem是/dev/sda1

- ps:大多数的AMI(镜像)的跟设备都是EBS,当启动一个跟设备是EBS存储卷的实例时,会自动创建一个EBS存储卷挂载在实例的跟目录。
- EBS存储卷是一种块存储设备
  • Q3:根据df结果可以看到挂载的EBS存储卷被使用了100%,那么该如何处理呢?
  • A3:首先我们可以先去了解一下这个EBS存储卷的情况


    image.png

点击EBS ID即可跳转至


image.png

可以看到这个EBS存储卷的大小,对比df指令输出的结果,发现挂载到根目录的卷占用size就是256GB,因此我们可以采用两种方案:

  • 重启一个其他类型的实例(该跟设备容量大)

  • 给当前的ebs扩容(nice)

  • Q4:如何给当前跟设备对应的EBS扩容呢?

  • A4:

    • 给EBS扩容之前,一定要先创建一个EBS快照!!!!!
    • 接着按照如下扩容即可


      image.png
  • 当EBS状态变成


    image.png

!!请注意:对于EBS的扩容就完成了

  • 此时使用df -h发现根存储卷size没变
  • Q4:为什么挂载在根目录下的EBS存储卷容量都变大了,但是实例文件系统的表现好像没有发现EBS扩大?如何同时扩大实例的文件系统
  • A4: 调整完EBS存储卷大小之后,必须要对实例的文件系统进行扩展可以理解为实例的文件系统没有感知到EBS的扩大,所以还没有给扩大的容量分配地址。
    • 首先使用lsblk可以查看附加到实例上的所有存储卷的真实size以及分区情况

      image.png

      - xvda是一个存储卷,xvda1是存储卷上的一个分区,但是发现并不是一个存储卷被挂载到根而是存储卷上的一个分区被挂在跟上
      
分区的解释:
- 如果您将EBS存储卷视为容器,则分区是卷中的另一个容器,并且数据位于分区上。
- 增大EBS存储卷大小并不会增大分区;如果根目录要利用较大存储卷,分区必须扩展为新大小
- 由于数据是存在分区上的,因此如果存储卷size大于分区的,那么大出的size就是没有被使用的,也就是浪费的。
- 因此最佳实践应该将分区(如果卷上只有一个分区)大小扩大的和存储卷一样
  • 如果分区的size小于卷size此时先将该分区size扩大,使用sudo growpart /dev/xvda 1将/dev/xvda上的1分区扩容到和卷一样大小(请注意将设备名称与分区名称分隔开)
    • 可以通过lsblk再次查看.可以确认分区 /dev/xvda1 现已填充卷 /dev/xvda 上的可用空间
    • 最后对实例的文件系统进行扩容:sudo resize2fs /dev/xvda1resize2fs后面跟着EBS存储卷名称
    • 执行df -h发现已经扩容
  • 最后:要记住挂载在根目录上的是EBS存储卷上的分区而不是这个卷,而且卷被扩容但是分区大小不变依旧不能扩容
  • Q5:在哪里可以选择包含大一点的根设备AMI?
  • A5:通过查看实例类型,不同的实例类型对应不同cpu、内存。。。。

写在最后

感觉EC2上的概念和机器一样:

  • 实例存储(实例停止数据就丢失,速度快) --- 内存 (断电数据丢失,读取速度是硬盘的好几倍)
  • EBS --- 物理磁盘
    独立存在不会因为挂载的实例而导致丢失数据
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,241评论 1 17
  • Linux系统磁盘基本管理命令挂载文件系统――mount mount命令语法: mount [参数] [设备名称]...
    LaLaLaLaAAA阅读 2,527评论 0 1
  • 目录磁盘结构磁盘分区磁盘分区管理文件系统管理挂载 一、磁盘结构 (一)设备文件 设备文件:linux系统下一切皆文...
    哈喽别样阅读 987评论 0 0
  • 你的特别关心好比一条无形白绫,快要令我无法呼吸。 你不可能永远遇见的都是好人,更不可能都是可以一辈子相互信任志同道...
    心里扑通扑通乱跳阅读 555评论 0 1