没有执行过rm -rf /*的开发不是好运维

起因

突然收到用户反馈说网站在手机端打开是白屏, 很奇怪的问题.

在电脑端试了下,确实也是白屏,HTML加载进来了,好像有个核心JS加载失败.

看到一个错误是: We're sorry but house doesn't work properly without JavaScript enabled. Please enable it to continue.

还有一个http请求的错误是: ERR_INCOMPLETE_CHUNKED_ENCODING

于是尝试了一下的解决方案:

  • 无脑重启看看能不能解决问题?重启了一下对应Docker容器,无果

  • 可能是现在版本引入的Bug?回滚代码重新build,无果.

  • nginx的问题? 重启nginx,无果.

  • 查看nginx日志,没什么有用的东西,无果.

灵机一闪,不会是磁盘空间满了吧.

df -h 看了一眼,99.99%的磁盘使用率.

某个Docker容器的磁盘空间用掉了34G.

看一眼Docker容器,直觉告诉我应该是Elasticsearch服务...

不算太重要的服务,先停了清理空间再说.

删掉了容器删了data文件,重启nginx,一切都正常Work了.

问题解决!!!

不过Elasticsearch总要重新回复回来嘛,看了下腾讯云云硬盘盘价格,也不是很贵嘛.

单独给Elasticsearch 起个数据盘吧.

作死开始

首先根据腾讯云的指示,挂在了数据盘到服务器上面.

然后给数据盘分区,接着mount到对应的路径.

嗯,好像有个警告.

难道不是这个磁盘么?换另外一个看看.

执行另外一个mount.

全程命令如下:

进入对应目录清空一下云盘数据吧.(PS:脑子有病才做这个,刚刚初始化的云盘哪有东西.)

ls 看一下,咋这么多奇奇怪怪的文件,难道是原来Elasticsearch docker 容器留下来的.

先删了再说.

执行 rm -rf ./*

咦,怎么有文件busy无法删除.

额,咋ls都没有了.

哈?cat 也没有了.

噗,copy也炸了.

cd 还在.

哇卡,这可咋办了.

先复盘一下做了什么事情

  • 初始化磁盘的时候没有格式化,但是mount失败

  • mount失败后没有检查原因,直接尝试把另一个磁盘mount进去

  • mount系统盘到指定文件夹后并没有检查内容,直接rm -rf ./*

  • rm -rf ./* 此时已经基本没救了

拯救尝试

还在跑的服务基本是活着的,所以暂时来说API和Web网站都是好的。

服务器上面跑的基本都是Docker容器, Docker镜像都在阿里云上面存着,基本不怕丢失的问题。

不过应用配置文件/服务器证书之类的东西都在上面,这个估计要折腾一下了。

cd 还能用,ls没了,cat也没了。

尝试cat xxx.conf也没用了,难道只能一点点翻配置文件么.

群里的朋友提了一句,看看你的云盘有没有备份之类的.

咦,好像两个星期前找腾讯云技术支持的时候做过一次系统镜像.

是不是可以直接拿回来直接用?

看了下具体的镜像版本和备注信息,看起来那时候上面的内容和现在的估计没太多变化.

直接重装之后更新一下各个服务的镜像到最新版本应该就好了.

放弃拯救,直接使用备份的系统镜像重装

Work...

系统备份镜像拯救世界!!!

后续操作 + 总结

  • 数据盘和系统盘分开,不要让程序的数据导致系统不可用

  • 在费用允许的情况下设置磁盘快照策略,我这边最极端的情况下也应该能回滚到一个星期前的版本

  • 下次大影响操作前先手动备份系统镜像,救命稻草一般的存在.

没有执行过rm -rf /*的开发不是好运维的更多相关文章

  1. 没执行过 rm -rf /* 的开发不是好运维

    阅读本文大概需要 1 分钟. 打开终端,获取 root 权限,执行以下命令:rm -rf /*,会发生什么呢?估计只要接触过 Linux 的人,肯定没少听过它的故事,清楚之后会发生什么可怕的事情. 科 ...

  2. linux系统中不小心执行了rm -rf ./* 怎么办?解决:文件系统的备份与恢复

    XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据.xfsdump 按inode顺序备份一个XFS文件系统.centos7选择xfs格式作为默认文件系统,而且不 ...

  3. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  4. centos rm -rf 恢复删除的文件

    Linux有时候执行了 rm -rf 等操作误删了文件绝对是一件可怕的事情,好在有一些解决的办法可以临时救急.这时我们就要用到一款叫做extundelete的工具了. 目录[-] 依赖 安装 查找要恢 ...

  5. 不止跑路,拯救误操作rm -rf /*的小伙儿

    摘要:误执行了 rm -rf /* 之后,除了跑路还能怎么办? 本文分享自华为云社区<拯救被 rm -rf 伤到的小伙>,作者:Gauss 松鼠会. 灵魂画师再次上线   在开饭前我们先了 ...

  6. [sh]rm -rf*的防护和普通用户执行命令

    尽量用普通用户执行,因为普通用户无法删除root的文件,避免误删除 rm -rf 不可取, 尽量find+rm -rf 尽量cd && rm -rf * 加上逻辑 cd /tmp/re ...

  7. mac 上执行 rm -rf /

    # 很可怕的指令,清空磁盘所有资料,千万不要用 sudo 尝试,吓的小心肝差掉跳出来 rm -rf / 无聊,想执行rm -rf /会怎样,想起没加sudo时对~/download执行提示权限不足,被 ...

  8. 执行"rm -rf /"之后世界安静了吗

    对于Unix/Linux程序员来说,"rm -rf /"一直被认为是一个极度危险的操作,因为直接把根目录给删除了,整个操作系统也就崩溃了.但实际上会是这样的吗?呵呵,请看图: 啊哈 ...

  9. paramiko使用exec_command执行rm -rf删除目录的坑

    paramiko删除目录后的上传操作请参考步骤1.2.3的说明 try: ssh = SSHClient(ip,user) sftpClient = ssh.getSftpClient() outpu ...

随机推荐

  1. SVM中为何间隔边界的值为正负1

    在WB二面中,问到让讲一下SVM算法. 我回答的时候,直接答道线性分隔面将样本分为正负两类,取平行于线性切割面的两个面作为间隔边界,分别为:wx+b=1和wx+ b = -1. 面试官就问,为什么是正 ...

  2. BZOJ1334:[Baltic2008]Elect(背包DP)

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  3. [19/05/02-星期四] GOF23_行为型模式(状态模式、观察者模式、备忘录模式)

    一.状态模式 [状态接口] /*** * 房间"状态"接口 */ package cn.sxt.state; public interface State { void handl ...

  4. Spring(十三)之SQL存储过程

    SimpleJdbcCall 类可以被用于调用一个包含 IN 和 OUT 参数的存储过程.你可以在处理任何一个 RDBMS 时使用这个方法,就像 Apache Derby, DB2, MySQL, M ...

  5. EasyConnect 使用方法

    一.此处以安卓系统为例进行介绍. 1.通过谷歌市场下载 EasyConnect,安装完成后,打开EasyConnect,界面如下图 1 所示 <ignore_js_op> 2.输入 SSL ...

  6. PAT——1066. 图像过滤

    图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一行给出一幅图像的分辨 ...

  7. nRF5 SDK for Mesh(八) Exploring Mesh APIs using light switch example,使用 灯开关 案例探索BLE mesh 的APIS

    Exploring Mesh APIs using light switch example The light switch example is meant to showcase the API ...

  8. 编译nginx错误:make[1]: *** [/pcre//Makefile] Error 127

    --with-pcre=DIR 是设置源码目录,而不是编译安装后的目录.

  9. 你真的了解Scrum吗?

    敏捷开发是以用户的需求为核心,采用迭代.循序渐进的方法进行软件开发.而Scrum是实现敏捷开发的具体方式之一.然而你对Scrum又了解多少呢? 什么是Scrum Scrum是橄榄球运动的一个专业术语, ...

  10. 『ACM C++』 PTA 天梯赛练习集L1 | 018-020

    终于一周有这么一天能够安静下来好好学习打打题,还是很美滋滋的哈哈~加油加油~ ------------------------------------------------L1-018------- ...