パスワードを忘れた? アカウント作成
15534051 story
変なモノ

京都大学で約77TB分のデータが消失するトラブル。原因は日本HPEのプログラム不具合 92

ストーリー by nagazou
いタタタ 部門より
昨年の末に京都大学のスーパーコンピューターに保存していたデータ約77TB分が消失するというトラブルが発生していたそうだ。京都大学のリリースによると、このトラブルは12月14日17時32分から12月16日12時43分にかけて発生。大容量ストレージの一部データを意図せず削除するトラブルが起きたという。消失したデータは約77TB分約3400万件におよび、一部は復元ができたもののそのうちの約28TB分については完全に消失してしまったとのこと(京都大学学術情報メディアセンターScanNetSecurity)。

日本ヒューレット・パッカード製のストレージをバックアップするプログラムの不具合が原因。同社がバックアッププログラムの機能改修時に適用手順に問題があったとしている。それにより本来は不要となった古いバックアップログファイルを削除する処理が、特定ディレクトリ配下のファイルを削除する誤動作を引き起こしたとしている。

nemui4 曰く、

なんかすごいね

自己追記によるFizzBuzz

処理に時間がかかるシェルスクリプトの実行中に、そのスクリプトを上書きしたところ処理の途中から上書きした方のスクリプトの方が途中から動きだしてしまい、整合性が取れてないために大事故になったらしい

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • しらんかった (スコア:5, 参考になる)

    by nemui4 (20313) on 2022年01月05日 9時24分 (#4179514) 日記

    てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。

    京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。

    走らせているスクリプトを変更する機会は今までになかった。
    期待どおりに動いていないのがわかったらkillしてから書き換えてるし。
    それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。

    スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。
    小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。
    ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。

    • Re:しらんかった (スコア:5, 参考になる)

      by Anonymous Coward on 2022年01月08日 7時12分 (#4181581)

      いろいろなパターンがあって難しい...

      bash スクリプトの実行中上書き動作について
      https://zenn.dev/mattn/articles/5af86b61004bdc [zenn.dev]

      親コメント
    • by Anonymous Coward on 2022年01月05日 11時03分 (#4179552)

      Windowsのbatファイルも同じ感じだよね。
      ↓みたいなの書いてpause中にファイル編集してみるとわかる。

      echo 1
      pause
      echo 2
      pause
      echo 3
      pause
      echo 4

      親コメント
      • by Anonymous Coward on 2022年01月05日 11時49分 (#4179558)

        echo 1
        pause
        echo 2
        pause

        となっているとき、1回目の pause 時に1行目を「echo ABCDEFGHIJKLMNOPQRSTUVWXYZ」に書き換えたら、
        「'KLMNOPQRSTUVWXYZ' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
        ってエラーメッセージを出した。
        なるほど、「pause(CR)(LF)」の次の位置を憶えていてそこから再開しようとするのか。

        親コメント
        • by Anonymous Coward

          覚え違えかもだけど、すごい昔の日本語DOSか、MS-DOSか、PC-DOSかCP/Mだかはメモリに読み込んでた記憶があるような。
          BATが入ったフロッピーディスクを途中で入れ替えする事が有るからメモリにある程度バッファリングしてたのかな。

          現在のBATは実行中に書き換えると、上記のようにファイルポインタ位置でずれて意図しない現象が起きるので危険です。

          • by Anonymous Coward

            1driveマシンもあったので、FDD入れ替えはありましたね

          • by Anonymous Coward

            昔のMS-DOSというと

            COPY *.TXT HOGE.TXT

            でファイル破壊する仕様があったような……。
            HOGE.TXTがあると上書きを始めちゃうから、ワイルドカードの展開でHOGE.TXTの番になったところで
            MS-DOSができないことを検出してエラーで止めるものの、その時点でHOGE.TXTの中身は破壊されているという

            今は「一時ファイルを作って最後にHOGE.TXTに上書きする」みたいな処理にして回避してそう

            • by Anonymous Coward

              MS-DOSすっかり忘れた
              cat *.TXT >> HOGE.TXT
              でよさげ

              • MS-DOSでテキストを表示するのはcatではなく TYPE コマンドですよ。
                さらに、COMMAND.COM のTYPEコマンドはワイルドカードに対応してないので、 TYPE *.TXT はできません

                親コメント
              • by Ryo.F (3896) on 2022年01月08日 6時33分 (#4181565) 日記

                PowershellでHOGE.TXTがある状態で

                Get-Content *.TXT >> .\HOGE.TXT

                を実行すると、無限ループになってHOGE.TXTが際限なく大きくなる。
                期待通りの動作であって、これをバグとは言わないと思う。
                ちなみに、

                Copy-Item *.TXT .\HOGE.TXT

                だと、ワイルドカード展開の順番でHOGE.TXTが来た時にエラーになる。
                HOGE.TXTの内容は、HOGE.TXTが最初に展開されれば変更されないし、そうでなければ、その直前に展開されたファイルの中身と同じになる。
                これも期待通りの動作。
                MS-DOSだと何か違う動作になったのかな?

                親コメント
            • by Anonymous Coward

              それはそもそもどんな動作を期待して実行するコマンドなんだ……
              コピー先見て勝手にコピー順を変えたり一時ファイル生成されるのも迷惑だし、
              逐次実行してってエラー出たら止まりってのは至極普通の動作だろ。
              君はエラー時にロールバック(操作前の状態を維持)してほしいかもしれんけど
              出来たところまででも結果がほしい、エラー時の状態を知りたいってパターンもある。
              シェルに概ねお任せするGUIならともかく、
              コマンドなら愚直に実行してくれたほうが有り難いと思う。
              気配りしたいなら自分でそういうコマンド列ないしはバッチ書いて好きに制御すべし。
              # その意味ではファイル名等のエスケープ関連こそ批難すべき挙動だと思う。

          • by Anonymous Coward

            当時のやつは、CONFIG.SYSのBUFFERSの設定によると思います。
            BUFFERSにそれなりの大きな値を設定してたらフロッピー上のバッチファイルも一度に読み込みますが、BUFFERS=1とかだとカッチンカッチンと…。

    • by Anonymous Coward

      上書きじゃなくてmvしよう。

      • by nemui4 (20313) on 2022年01月05日 13時06分 (#4179579) 日記

        はい、仰せの通りに mv しています

        親コメント
      • by nekopon (1483) on 2022年01月05日 13時15分 (#4179591) 日記
        ファイルシステムをまたいでのmvて安全じゃないんすよ
        親コメント
        • by nemui4 (20313) on 2022年01月06日 11時34分 (#4180160) 日記

          スクリプト書き換えるときは同じdirectoryでやるからファイルシステムマタギは安全そう。

          親コメント
        • by Anonymous Coward

          自明かと思って注意しなかった。
          renameシステムコールを使おう、ならあってる?

          あとはemacs使えとか。
          vimはどうかな?

          • こうレベルの話だと、「emacsやvimで本番環境のファイルを直接編集する」時点でアウトじゃないですかね。
            「あらかじめテスト環境で動作確認を取ってから、本番環境に上げる」ようにしないと。

            となると、ファイル更新に使うツールはscpとかrsyncとかだけど、
            自分がやるなら、「別ディレクトリにアップしておいてから、rename(mv)」かな。

            実行中書き換えの問題がなくても、
            「ファイルコピー中の、中途半端な状態のファイルで実行してしまう」リスクが怖いので、
            ファイルを用意してからatomicに切り替えるようにすべき。

            親コメント
    • by Anonymous Coward

      これを故意に使ったのが自己書き換えプログラムなのでは。
      自分では使ったことないけど。

      • by Anonymous Coward

        広義にはそう言えるかもしれないけど、こういうのはタレコミのソースにもあるように「自己追記」とでも呼ぶべきものであって「自己書き換え」とは言わないすね

  • by hogehogehogehoge (27968) on 2022年01月08日 6時01分 (#4181560)

    本当にもうないのだろうか?
    暗号化していたら絶望的だが、HDDだろうから、それなりの業者に頼めばもう少し復元できそうな気もするけど、コストに見合わないかな。スパコンなら元のコードは大抵手元にあるだろうけど。

    • by Anonymous Coward on 2022年01月08日 6時17分 (#4181561)

      コードなら使用者の手元にありそうですけど、スパコンの計算結果とかが消えてたらどこが困るんでしょう…学術や公共用途の利用だけだとしたら被害額どう計算するのかか

      親コメント
      • by hogehogehogehoge (27968) on 2022年01月08日 6時48分 (#4181573)

        卒論完成間近の学生、早く成果を出さなきゃいけないポスドク、その給料を払っていたPI。そして、多くの研究費の原資は税金だから、納税者。

        親コメント
        • by Anonymous Coward

          データが飛んだので、卒論OKください!

      • by Anonymous Coward

        計算結果が消えたせいで卒論できなくて内定取り消されたら生涯賃金1年分の補償とかになるんじゃないですかね

        • by Anonymous Coward

          昇給にも関わってくるから一年分きっかりじゃすまないけどな。

          奨学金使ってたら、奨学金が留年を認めてくれるとも思えないから退学せざるを得なくなったりして……
          人生設計が瓦解した学生がいないことを祈る。

          • by Anonymous Coward

            HPEが責任とって雇うしかない

            …まさかそれが狙いか!

    • by Ryo.F (3896) on 2022年01月08日 6時52分 (#4181574) 日記

      当該ストレージをすべて停止できるのなら、削除データの復旧は可能かも知れない。
      しかし、この手のシステムでそんなことやると、関連している複数の研究がすべて止まっちゃう。
      それはできない、ってことだったんじゃないかな。

      影響を受けた77TBの内、バックアップデータからの復旧ができなかったのは、28TByte・2500万ファイル、内不急不要のものを除く深刻な被害は8TByte・350万ファイル。
      他のすべての研究を止めて、その8TByte・350万ファイルを救いに行くのかどうか、って話になるね。

      親コメント
    • by Anonymous Coward

      一部(約49TB)分は復元できたってことだから、それなりの業者に頼んだ結果がこれなんじゃないですかね

      • by Ryo.F (3896) on 2022年01月08日 7時57分 (#4181595) 日記

        違うでしょ。全体が77TBで、

        バックアップが存在しないことで復旧できないファイルは,容量約28TByte,約2500万ファイルでした.

        と言ってるんだから、77-28=48TB分はバックアップ(データ)から復旧した、と言う事ですね。「それなりの業者」とは無関係。

        「一部(約49TB)」とは1TB程差がありますけど、その分は「それなりの業者」の頑張りだったのかもしれません。
        が、その49って数字はどこから持ってきました?

        親コメント
  • by Anonymous Coward on 2022年01月06日 12時47分 (#4180213)

    将来的にはこれまでのミラーリングによるバックアップだけでなく

    なんて実装にしちゃうんですかね…。ランサムウェア攻撃なんて受けた日には全滅でしょうに…。

    • by Ryo.F (3896) on 2022年01月08日 6時43分 (#4181569) 日記

      そうですね。
      バックアップは2世代以上は保持しとくのが普通だと思います。
      でなければ、1回バックアップに失敗しただけで、復旧不能になる可能性が有るわけだし。
      しかもシェルスクリプトでコピー(rsync?)でバックアップとか、そんな貧乏くさいことを…
      お金が無かったんですかね。

      親コメント
    • by Anonymous Coward

      ウチはミラーリングを「データのバックアップ」と称したら叱られます。

      • by Ryo.F (3896) on 2022年01月08日 23時36分 (#4181903) 日記

        ここで言う「ミラーリング」と言うのは、RAID1的なものでは無く、D2Dなコピーの事じゃないかと思う。
        それでも「データのバックアップ」と称したら叱られますか?

        親コメント
    • by Anonymous Coward

      28TBが完全に消失とあったので世代バックアップを復元したらいいんじゃないかと思ったらやってないんですね。

      世代バックアップと遠隔地バックアップは当たり前と思っていましたがやってないのか。

  • 卒論の提出が近づいてきた時期に、PCトラブルでデータ飛んだり、操作ミスでデータ飛んだりするんだよな
    卒論にそなえて、ちゃんと週次バックアップしておきましょう

    sotsuron-20220107.zip
    みたいに、関連データ丸ごと毎週バックアップして、別のPCに保存&オフラインでも保存が基本

  • by Anonymous Coward on 2022年01月08日 8時51分 (#4181618)

    HPとみずぽの中の人は、おめでたくない正月だっただろうな。

  • by Anonymous Coward on 2022年01月08日 8時58分 (#4181621)

    やっぱりPowerShellだよな

    • by Anonymous Coward

      WSL「せやせや」docker「ま、まあそうだなうん」

    • by Anonymous Coward

      それでもやっぱりスパコンでWindows使いたくないな。

      • by Anonymous Coward

        このスパコンって普通にLinuxじゃねーの?
        そのままPowerShell入れれば良いだけだろ

  • by Anonymous Coward on 2022年01月08日 12時07分 (#4181692)

    全然規模が違うけど、今まさにバックアップ作業中に障害が起きてWindowsが再起動を繰り返している。
    最初のうちは再起動メニューが出ていて最新のシステム更新をキャンセルするかとか、いついつのポイントを復元するかとか選択できたけど、どれもできませんでしたとか言われる。
    今や延々再起動を繰り返すようになっちゃった。助けて

typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...