tag:crieit.net,2005:https://crieit.net/tags/%E9%AC%BC/feed
「鬼」の記事 - Crieit
Crieitでタグ「鬼」に投稿された最近の記事
2021-06-15T00:26:03+09:00
https://crieit.net/tags/%E9%AC%BC/feed
tag:crieit.net,2005:PublicArticle/17404
2021-06-15T00:24:38+09:00
2021-06-15T00:26:03+09:00
https://crieit.net/posts/var
大事なサーバの/varを消した話。悪夢の無限列車編👹
<p>お久しぶりです!<br />
ここの所、立て込んでいたり(表題の件で)、メンタルやられ気味だったり(表題の件で)で余裕がなかった私です。</p>
<p>あれほど講師の方に、「<strong>rmを使うときは気を付けよう</strong>」と言われていたのに…</p>
<hr />
<h4 id="v目次にゃv"><a href="#v%E7%9B%AE%E6%AC%A1%E3%81%AB%E3%82%83v">v目次にゃv</a></h4>
<p>1.どんなサーバなのか<br />
2.CentOSの/varを消したお話ー悪夢の始まり無限列車編<br />
3.CentOSの/varを消したお話ー血鬼術の落とし穴編<br />
4.消した後ーお前ももうおやすみ・・・<br />
5.起こったこと<br />
6.復旧作業<br />
7.結末<br />
8.考えられる復元法<br />
9.回避の呼吸!型集</p>
<hr />
<h4 id="どんなサーバなのか"><a href="#%E3%81%A9%E3%82%93%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AA%E3%81%AE%E3%81%8B">どんなサーバなのか</a></h4>
<p>私はゲーム制作サークルのサーバ担当(仮?)をしてますねこー。<br />
ざっくり挙げると<br />
・ホームページ<br />
・工程、プロジェクト管理ソフトの管理<br />
・Gitサーバ<br />
を管理をしているきんぎょ。<br />
昔はメールサーバもやっていたけど色々考えて、Google Workspaceと兼用させてるぎょぴ。</p>
<p>ちなみに、VPSでCentOS7をつかっていますきんぎょ。<br />
<strong>これは消してはいけない。障害を起こしてはダメなやつだ()</strong></p>
<hr />
<h4 id="CentOSの/varを消したお話ー悪夢の始まり無限列車編"><a href="#CentOS%E3%81%AE%2Fvar%E3%82%92%E6%B6%88%E3%81%97%E3%81%9F%E3%81%8A%E8%A9%B1%E3%83%BC%E6%82%AA%E5%A4%A2%E3%81%AE%E5%A7%8B%E3%81%BE%E3%82%8A%E7%84%A1%E9%99%90%E5%88%97%E8%BB%8A%E7%B7%A8">CentOSの/varを消したお話ー悪夢の始まり無限列車編</a></h4>
<p>今回、新しいシステムの導入にあたって、色々入れたり、消したりをしていたねこ~。<br />
とある理由から<br />
/var/hogehoge/nekoneko/<br />
/var/hogehoge/kitune/<br />
/var/piyopiyo/fugafuga/<br />
のkingyo.poi を×10個くらい(仮称)を消す必要があったにゃ。<br />
そこで下記のコマンドを実行し、対象ファイルを削除していきました。</p>
<pre><code>rm -rf /var/hogehoge/#抹消対象#
</code></pre>
<p><strong>そう。これが悪夢の始まりだったのにゃー…</strong></p>
<hr />
<h4 id="CentOSの/varを消したお話ー血鬼術の落とし穴編"><a href="#CentOS%E3%81%AE%2Fvar%E3%82%92%E6%B6%88%E3%81%97%E3%81%9F%E3%81%8A%E8%A9%B1%E3%83%BC%E8%A1%80%E9%AC%BC%E8%A1%93%E3%81%AE%E8%90%BD%E3%81%A8%E3%81%97%E7%A9%B4%E7%B7%A8">CentOSの/varを消したお話ー血鬼術の落とし穴編</a></h4>
<p>先ほど紹介した<strong><em>rm -rf /var/hogehoge/#抹消対象#</em></strong> の血鬼術ですが、重大な"<strong>欠陥</strong>"がある鬼~。<br />
そう、"<strong>血</strong>"鬼術だけに…(欠陥と血管をかけた)</p>
<p>基本的にLinuxにはWindowsでいう<strong>ゴミ箱</strong>が存在しないきんぎょ。<br />
つまり、消したものは、ほぼ<strong>二度と元には戻りません</strong>。</p>
<h5 id="今回の落とし穴(後悔ポイント)"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E8%90%BD%E3%81%A8%E3%81%97%E7%A9%B4%EF%BC%88%E5%BE%8C%E6%82%94%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%EF%BC%89">今回の落とし穴(後悔ポイント)</a></h5>
<p><strong>・cdで/varに移動して作業していれば消えるフォルダは最小で済んだ<br />
・脳死でポチポチやっていた<br />
・脳死のためエンターキーとTabキーを間違えた</strong></p>
<p>抹殺対象を消すために、1つ1つ手打ちで打っていたわけです。正規表現しようにも、ダブりで消せないファイルもあるので…<br />
数もそれなりにあるので、脳死状態でポチポチ術を発動していきます。Tab変換を活用して…</p>
<p><strong>rm -rf /var エンターキーポチッ!</strong>\(^o^)/アッオワッタ<br />
実行した瞬間、理解できず、思考がグルグル走馬灯。一瞬が5分くらいに長く感じ、冷や汗が全身をつたいました。</p>
<hr />
<h4 id="消した後ーお前ももうおやすみ・・・"><a href="#%E6%B6%88%E3%81%97%E3%81%9F%E5%BE%8C%E3%83%BC%E3%81%8A%E5%89%8D%E3%82%82%E3%82%82%E3%81%86%E3%81%8A%E3%82%84%E3%81%99%E3%81%BF%E3%83%BB%E3%83%BB%E3%83%BB">消した後ーお前ももうおやすみ・・・</a></h4>
<p>/varを消した直後、<br />
”今動いているシステムは消せないよ”とのメッセージが。<br />
lsで確認すると<strong>tmp以外消えている!!!!!!!!!</strong><br />
【VirtualBoxで再現した写真↓もちろん今回はバックアップをとってある】<br />
<a href="https://crieit.now.sh/upload_images/c8e3813e38831a16492d64162853d8f060c75922bdfa5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c8e3813e38831a16492d64162853d8f060c75922bdfa5.png?mw=700" alt="image.png" /></a>!</p>
<hr />
<h4 id="起こったこと"><a href="#%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8">起こったこと</a></h4>
<p>・/varに配置しているものは<strong>全て消失</strong>しました。<br />
→ホームページの消失<br />
→行程、プロジェクト管理のデータ消失(Webで動作するもののため)<br />
→プロジェクト管理のデータベース消失<br />
・yumが死んだ。(rpmもだめ)<br />
・firewallが起動できない(iptablesはギリ生きていたっぽい?)<br />
・SSHアクセスが弾かれる<br />
・私は内心大泣き<br />
・私、汗だく</p>
<p>・gitも死んだと思っていたら、/var以外の場所で管理していたのでセーフ(本当に良かった。)<br />
・wgetやcurlは使用可能</p>
<hr />
<h4 id="復旧作業"><a href="#%E5%BE%A9%E6%97%A7%E4%BD%9C%E6%A5%AD">復旧作業</a></h4>
<p>どうやら<strong>extundeleteコマンド</strong>で復旧可能らしい!<br />
標準では入っていないので、<strong>yum install extundeleteで導入</strong>します!<br />
<strong>_人人人人人人人人人人人_<br />
> yumが使えない!! <<br />
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄</strong><br />
はい。終わりました。<br />
どうやら<strong>yumにかかわるデータが/var以下</strong>にあったようで、<strong>正常に動作しなくなりました</strong>。</p>
<p>他にデータ復元方法はいくつかあり、試しましたが全部だめでした。<br />
他のcentから消えたデータを移植したり、リカバリーモードを起動したり、OSの書き換えを試みたり…</p>
<hr />
<h4 id="結末"><a href="#%E7%B5%90%E6%9C%AB">結末</a></h4>
<p>結局、新しくサーバを立て、生きているデータを故サーバからサルベージ。移行する手段を取りました。<br />
VPSという特性上いろいろ気を遣う作業が多かったです。(今回ばかりはハードを直で触れる自宅サーバを羨みました。)</p>
<hr />
<h4 id="考えられる復元法"><a href="#%E8%80%83%E3%81%88%E3%82%89%E3%82%8C%E3%82%8B%E5%BE%A9%E5%85%83%E6%B3%95">考えられる復元法</a></h4>
<p>私の知識、経験不足ゆえに、実現しませんでしたが、この状況でも復活できる可能性はありました。<br />
・wgetやcurlを使って修復系パッケージの導入<br />
・健全なサーバより消滅したデータを移行。権限や依存関係も手動で設定<br />
・パーティションやプロセスから復元<br />
いずれも果てしない労力と戦場で培うべき経験、正しい知識が必要なためペーペーの私は力尽きました…</p>
<hr />
<h4 id="回避の呼吸!型集"><a href="#%E5%9B%9E%E9%81%BF%E3%81%AE%E5%91%BC%E5%90%B8%EF%BC%81%E5%9E%8B%E9%9B%86">回避の呼吸!型集</a></h4>
<p><strong>今から大事なことを書きます!</strong><br />
<strong>・rmコマンドの扱い</strong><br />
まずはrmコマンドを使うときは慎重に行きましょう。絶対です。<br />
特に-rf オプションを使うときは<strong>要注意</strong>です。なんでも消せちゃいます。イレイザーヘッドです💦<br />
<strong>・バックアップを取っておく</strong><br />
何事も作業前にバックアップを取っておきましょう。VirtualBoxならスナップショット。VPSならイメージOSの保存とかね。<br />
<strong>・extundelete等の復元ツールは予め入れておく</strong><br />
ことが起きてからでは遅いです。今回みたくyumひいてはOSそのものがダウンして緊急時には何が使えなくなるか分かりません。前もって対策しておきましょう。<br />
<strong>・実験環境を用意、活用する</strong><br />
普通なら本番と全く同じ実験環境(兼バックアップ)を利用すべきです。コストがかかるのは仕方ないですが、<strong>データ復旧費や今までの労力が水の泡になるよりは安い</strong>です!<br />
サークル活動でのリアルな実験環境費用捻出は難しいですが…<br />
本当に業務上じゃなくてよかった…<br />
<strong>・ある程度子ディレクトリに入って作業をする</strong><br />
今回は絶対パスで/varと打っていたのも原因の1つです。<br />
仮にvarにい状態で作業していれば<strong>varそのものが消えるという事態は避けられていました</strong>。</p>
<hr />
<h4 id="エンドタイトル"><a href="#%E3%82%A8%E3%83%B3%E3%83%89%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB">エンドタイトル</a></h4>
<p>ということで悪夢の無限列車編を締めくくりたいと思います。<br />
<strong>何かあってからでの対策では遅い</strong>ということを痛感しました。<br />
色々やばすぎて、語尾を忘れるくらいですからきんぎょ。<br />
本当に業務での失態でなくてよかったです…おそらく私じゃ払いきれない額の損害でしょうから(震え)<br />
さらに辛かったのが「<strong>var消しちゃった</strong>💦」で検索しても<strong>ヒットしなかった</strong>ことです。varを消す馬鹿野郎は私くらいということですかね~(すっとぼけ)</p>
<p>今回はここまで🐾<br />
みなさん、私の屍を超えていけ!!!!</p>
keito_woood