悪戦苦闘

サーバ



データを消す、というのに、これだけ手間取るとは思わなかった。


職場でちょっとした情報管理者のようなことをしていて、つい1週間ほど前にデータのバックアップをスケジュールで自動的に取れるように作業した。これまでは定期的にハードディスクを繋いでコピーを取る、いうことにしていたのだが、バックアップの間隔がどうしても長くなるからだ。


単純な仕組みではあるが、危険回避のためもあって、サーバを2本立ててそれぞれに違う種類の共有データを置き、アクセスが分散するようにしてある。
スケジューリングするには、バックアップ用に常時繋いでおける別立てのハードディスクが2ついる、と思ったからあきらめていたのだが、「なんだAのデータをBに、BのデータはAに、それぞれバックアップすりゃいいじやないか」と思ったのがサーバー間のリモートバックアップをしてみようと思ったきっかけである。
…結局これが冒頭の悲嘆のため息を呼んだ。


リモートバックアップは、バックアップするフォルダを指定できず、ディスク全部をバックアップしてしまう。それをあまり深く意識していなかったのだが、今振り返れば、それはきわめて重要なポイントだった。
一晩クロスバックアップすると、「行き」のバックアップでAのデータがBへコピーされてBのデータは(A+B)となる。「帰り」のバックアップでは、(A+B)となったBのデータがAへコピーバックされてくる(!)。つまりAはたった一晩で{A+(A+B)}と約3倍のデータに膨れ上がるのだ。放置すると、次の晩にはそれが入れ子構造になって、データ量がそのさらに3倍…。


…週末に作業したために、3晩を経たサーバはバックアップデータでパンク寸前…。「まさか」と気がついて月曜にすぐチェックして止めたために、運用に支障を来すような事態に至らなくてよかったが、自分のアホさ加減に呆れてしまった。


ちょっと考えればわかることだが、バックアップの流れをAからB(つまり(A+B))にして、それを外付けの1台のハードディスクにコピー、という一方向にバックアップの流れをそろえれば、ハードディスク1台できれいにスケジュールバックアップができるのだった。
AからBは「毎回上書き」、Bから外付けでは「履歴○回」とすれば、パンクもせず、履歴も取れる。


あーあ、じゃあ早速そうするか、と作業しようとしたら、次は「初期化せずに、運用しながら、200ギガ以上のデータを消す」というのが、大変に時間のかかる作業であることを思い知らされることになった。
まずは「エラー1148」や「ファイルを消去できません」のアラート連発。最初は、データの数の多さや、まれに混じっている「ファイル名のやたら長いファイル」のせいかと、一つ一つ探し出しては消していたが、さっぱり埒があかない。
そのうち、どうもそれが主要な問題でないことがわかってきた。


スムーズに消せない最大の原因は、入れ子でバックアップが繰り返されたことによる異様に深い「階層」だと気がついた。
エクスプローラー」で一番下の階層まで行って巨大なフォルダを「切り取り」、上の階層に「貼り付けて」やれば、どんな中身だろうと消去作業が始められるのだ。ただし、相当に時間はかかる。1フォルダの消去に1時間、なんてのはざらである。
それでも古いOS(たとえばWindows2000)では、消去できる階層の深さも対象ファイル数も余裕がなくてエラーになることがある。結果的に、職場の人たちには申し訳ないが、接続している中で一番新しくてスペックの高いXpマシンを、消去作業に専従させることになってしまった。


仕事の合間にまめにやっても、数日はこの作業だけでかかりそうである。
いい勉強にはなったけれど…、間抜けな失敗が、時間的には高くついてしまった。


[fin]