【エンジニアの悪夢】日本HPE、京大スパコンのデータ77TBをLOST、全面謝罪▶理由を読んだ皆さん「インタプリタ怖い」「胃が痛くなる」
対策は?
対策はやっぱオブジェクトストレージで世代管理が鉄板ですかね…?
@excelspeedup findというより-execとかxargs使って検索結果を使ってなにかする場合に気をつけないとってことですよね
2021-12-29 09:50:51@furyutei はい。 xargsとかに予想外の値が来る可能性もあり得ることを想定しておかないとということですね。 とはいえ、想定したところで、どういう対策があり得るのかはわかりませんが・・・。
2021-12-29 09:57:22@excelspeedup 難しいですよね… 今回の場合 find $LOGPATH -type f -mtime +10 -delete みたいなことをやっていて、$LOGPATHが未定義だった(結果としてカレントディレクトリである/LARGE0以下が処理対象となった)…ということでしょうか これなら一応 twitter.com/furyutei/statu… で予防は可能…?
2021-12-29 10:25:57あわせて冒頭に set -euo pipefail と書いておくこと、と📝 ashishb.net/all/the-first-… setのオプションの意味は -e : コマンドでエラーが発生したらスクリプト終了 -u : 未定義変数が使用されたらスクリプト終了 -o pipefail : パイプ実行でエラー発生時、最初に失敗したコマンドの終了ステータスを返す
2021-12-29 10:04:58@furyutei そういうパターンだとすると、カレントディレクトリを無害な場所に動かしておくと、少しは被害を軽減できるのかもしれませんね。
2021-12-29 11:14:40読んでるだけで胃が痛くなるな……。 とりあえず set -u をすべてのシェルスクリプトに書くようにルール化しよう。 iimc.kyoto-u.ac.jp/services/comp/…
2021-12-29 00:17:09これ、全体をアトミックにデプロイしていれば防げたかというと、プロセス(atomicity とか考えていない)が既に走っているわけだから、必ずしもそうではなさそうなんだよな。もっと詳細聞きたい // Lustre ファイルシステムのファイル消失について iimc.kyoto-u.ac.jp/services/comp/…
2021-12-29 08:11:15そういうことか。でも本件はそうだが、たとえば同一パスでも内容が更新された設定ファイルだけが古い内容のスクリプトに遅れて読み込まれたりすると怖いので、やはりデプロイ時には止めておくのが吉か // Tips: 実行中のシェルスクリプトを書きかえるときには - Qiita qiita.com/kitsuyui/items…
2021-12-29 08:33:10もちろん多重起動も禁止でね。罠多いよな // シェルスクリプト多重起動の防止(flock(2) を用い、極力可搬に) - Qiita qiita.com/knaka/items/58…
2021-12-29 09:00:10バックアップストレージと間違えてメインストレージのデータ消しちゃったって状況は分かるんだけど、復元できなくなったのは古いファイルなんだよね > 2021 年 12 月 3 日 17 時 32 分以降、更新がなかったファイル つまり、多段バックアップをしていなかったということになるのか・・・? twitter.com/KotorinChunChu…
2021-12-29 10:52:39ほーう。バックアッププログラムの適用ミスか。バックアップって単純に見えてミスると本末転倒なことになるから、本当に。本当に。慎重にやらないとなんだよね。私も100TBの・・略 スーパーコンピュータシステムのファイル消失のお詫び | お知らせ | 京都大学情報環境機構 iimc.kyoto-u.ac.jp/ja/whatsnew/in…
2021-12-28 23:15:14@KotorinChunChun >バックアップストレージと間違えてメインストレージのデータ消しちゃった ではなく、ログディレクトリを指定するはずが(環境変数が空だったため)カレントディレクトリと解釈されて(カレントディレクトリがメインストレージ:/LARGE0だったので)そこの10日以上前のファイルを消したみたいですね
2021-12-29 11:06:12@KotorinChunChun iimc.kyoto-u.ac.jp/services/comp/… twitter.com/furyutei/statu… このツイートに書いたようなイメージ pic.twitter.com/DUYmGAOSdu
2021-12-29 11:09:36以前のファストサーバを彷彿とさせるデータの誤削除事故。「100%責任」って言い切るの凄い……。バックアップをテープデバイスとかオブジェクトストレージとか、ファイルシステムじゃないとこに取っておくのが安全だよなぁ。 彡(゚)(゚) iimc.kyoto-u.ac.jp/services/comp/…
2021-12-29 07:21:49うぎゃあ 人類にはTypeScriptみたいなアルトシェルスクリプトが必要かもね iimc.kyoto-u.ac.jp/services/comp/…
2021-12-29 00:51:18京大のスパコンのファイル消失の件、そもそもlustreの運用自体がわりとニッチでノウハウが偏りそうだし、エラー見るとblue-greenデプロイができるように(次から)頑張るくらいしか解がないのかもしれない… iimc.kyoto-u.ac.jp/services/comp/…
2021-12-29 11:36:08Piro/結城洋志さんの解説連ツイ
Piro/結城洋志 Tree Style Tab等Firefoxアドオンを作ったり「ITエンジニア1年生のためのまんがでわかるLinux」を日経ソフトウエア誌で連載したり。「数学ガール」の結城浩先生は別人です。青バッジはTweetDeck用。https://t.co/k9rUtG6zV7 @piro_or_mokei
大量ファイルの消失事故事例。シェルスクリプト製の重いタスクが走ってる最中に、そのスクリプトを更新した結果、(bashの「実行中のスクリプトが書き換わった場合、書き換え後の内容で処理が継続される」仕様 qiita.com/kitsuyui/items… のために)想定外のファイルがごっそり消えたという。恐ろしい。 twitter.com/nekoruri/statu…
2021-12-29 02:27:40こんな短い恐怖文書めったにない / “Lustre ファイルシステムのファイル消失について | 日本ヒューレット・パッカード合同会社” htn.to/2cZ1noXwiR
2021-12-29 02:15:55継続位置はバイト数単位で決まるようで、例えば #!/bin/bash sleep 30 echo OK というスクリプトを実行中に #!/bin/bash : sleep 30 echo OK と書き換えると、30秒後に「echo」からでなく「0」の位置から実行が再開されるのだけど、「0: command not found」と言われるだけで、そのまま処理は続く。
2021-12-29 02:43:58この例では、 set -e してあれば「0: command not found」の時点で実行が止まるけど、不幸にも編集後の内容がそのまま何のエラーにもならず実行できてしまった場合、防衛策としては機能しないことになる。
2021-12-29 02:50:25github.com/bminor/bash GNU bashのソースの非公式ミラーがあったので、「スクリプトが読み込み中に書き換わったら実行を止める」みたいなオプションないのかなと思って見てみたけど、特にそういうのはなさそうかな……
2021-12-29 03:25:00最初に参照したQiitaの記事にあるとおり、inodeが変わるようにすれば大丈夫らしいけど、いちいちやってられなそうだし、突き詰めると 「実行中のスクリプトは書き換えるな」 「書き換えるならその前に止めろ」 しか言えないかなあ。
2021-12-29 03:27:51本番環境でやらかしちゃった人アドカレ qiita.com/advent-calenda… の閉幕後に特大級の物を見てしまって、ため息しかでないや
2021-12-29 03:29:36実行中である可能性があるシェルスクリプトに新しい内容を上書きする際、cpではなく、実質的にその上位互換として使えるrsyncを使うと、inodeが変わるので安全とのこと。そういうやり方もあるんだ! twitter.com/nekoruri/statu…
2021-12-29 03:58:06たとえばcpではなくrsyncならば新しいinodeに書かれてから置換されるので、デフォルトそっちを使う癖を付ける、というのも一つの手。 pic.twitter.com/72jTbs6fRW twitter.com/piro_or/status…
2021-12-29 03:50:53