沒有執行過rm -rf /*的開發不是好運維


沒有執行過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...

系統備份鏡像拯救世界!!!

后續操作 + 總結

  • 數據盤和系統盤分開,不要讓程序的數據導致系統不可用

  • 在費用允許的情況下設置磁盤快照策略,我這邊最極端的情況下也應該能回滾到一個星期前的版本

  • 下次大影響操作前先手動備份系統鏡像,救命稻草一般的存在.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM