またマニアックな話、需要は少ないとは思いますが(笑) Linuxのファイルサーバーのバックアップの話。 Linuxでファイルサーバーを運用していまして。 Linuxなら無料ですからね。古いパソコンがあるなら、大容量HDD繋げてタダでファイルサーバー作れますから。 会社がケチだと、サーバー用に新しいPCを買ってもらえないなんてケースもありますから(ウチがそうだった・笑)
今どきは、Windowsパソコン買ってファイル共有して、バックアップソフトを自動で走らせるとかですかね? でも、Windowsは同時アクセス数に制限があったような・・・あれ?同時アクセス数は増えたんでしたっけ? (※同時アクセス数は20まで増えたようですね。VISTA以前は10でした。) 20台以上パソコンがあると、足りなくなってしまいますね。 というか、20台以上パソコンがある状況なら、ちゃんとサーバーOSとライセンス数を用意してると思いますので(笑) まぁ現実的には問題ないという状況でしょうか。
でも、だんだん、サーバーの重要度が増してくると、高性能サーバーを買う予算が組まれたりするようになる。。。
サーバーの重要度が増してくるほど、バックアップが重要になってきます。 サーバーが壊れた時に、重要なデーターがすべて消えてしまう、と言う事が起きますから。 で、もう一台、バックアップ用のサーバーを用意して、毎日バックアップをとっていたのですが。 本当は、RAID組んでリアルタイムでバックアップが取れれば良いのでしょうが、それはそれで結構専門的な設備が必要になるので。余ったPCで、HDD沢山用意して・・・と結構大変。 RAIDも前にやってましたが、HDDも結構高かった時代だったので、小容量のHDDを沢山つなぐのも、またインターフェースをたくさん用意しなければならないし、インターフェースが多くなると、故障やトラブルも多くなるんですよね。。。 今は、大容量HDDが安く手に入るようになりましたので、HDD1台でバックアップが取れるので、良い時代になりました。
で、バックアップの方法として、シンプルに、スクリプトで rsync を cron で定期実行してます。 (※ cron は Windows で言えば、タスクスケジューラーみたいなもの。rsync はバックアップ用コマンドですね。) が、それで昔一度、トラブルが起きまして。 どんなトラブルだったか、もう一度整理、覚え書きです。同じことしないように。。。 Linuxの場合、マウントポイントというのを作って、そこにHDDを接続します。 Windowsで言うフォルダですね。 Windowsではドライブとフォルダが別の表示になりますが、Linuxでは一つのフォルダがドライブ(HDD)そのものの中身となっている、という感じです。 手順として、 (1)フォルダを作る (2)そのフォルダにHDDを「マウント」する 必要があるわけです。 ところが、ここで、マウントに失敗するとどうなるか? フォルダは存在しているけれど、そこにHDDがマウントされていない。つまり、ただ、普通に、HDDの中にフォルダがあるだけの状態。 Windows風に説明すると、Cドライブに250GBのHDDが使われていたとして、そこに、もう1台、外付けの2TBのUSB-HDDを繋ぐ。 Cドライブの中にフォルダ(マウントポイント)を作って、そのフォルダの中身=2TBのHDDとなるようにマウントする。 そのフォルダはCドライブの他のフォルダと同じように見えますが、中身は2TBの別のHDDになっている、という状態になるわけです。 そこで、外付けの 2TB USB-HDD が取り外されてしまったとします。 あるいは、そもそも外付けHDDが接続されていなかった、とか。 そうすると、Cドライブの中には、マウントポイントしてのフォルダだけが残っている状態。 そのフォルダの中身は外付けHDDではなく、Cドライブの中の1フォルダに過ぎない状態になります。 さぁ、そこで、そのフォルダに向かってバックアップデータを書き込むとどうなるか? Cドライブの空き容量があるうちはデータがCドライブのそのフォルダに書き込まれて行きます。 しかし、2TBのHDDのつもりで書き込んでいますが、Cドライブには250GBしか容量がないわけで、空き容量がやがて尽きます。 そして、バックアップに失敗、HDDの空き容量ゼロで、システムが不安定に・・・(笑) これを、やってしまったのです。。。
実際には、バックアップ側のサーバーの中でこれをやったので、空き容量がなくなってハングアップしていたのはバックアップ側のサーバーだったのですが。 長らく、その状態に気付いていなかったのです。。。orz そして、ある日、メインのサーバーが壊れましたwww なあに、バックアップがあるから大丈夫・・・ あれ?!?!?! ない?!?!?! ハングアップしてる?どうして?! という事に。。。orz 別のHDDにもバックアップを取っていたり、DVD-Rに書き出していたりした分があったので、全部喪失したわけではないのですが、かなりの量のデータが、消えました。 もう何年も前の話なのですが、今でも時折、あのデータがない?!ああ、消えてしまった中にあったのか・・・と言う事がたまにあります。。。(T~T)
手動でやってれば、異常にはすぐに気付いたはずですが、スクリプトで自動実行していたので気づきませんでした。 Linuxって、全然トラブルなく何年でも動いてくれちゃうので、つい、見る機会が減っていくのですよね。。。
とりあえず、マウントポイントは、バックアップ側に用意する事で、メインのサーバーのHDDが容量いっぱいになってしまうことは避けられます。 と言う事は、バックアップスクリプトは、バックアップ側で動かすのが基本、と言う事になるでしょうか。 ネットワークフォルダをマウントして、その中にマウントポイントを作って、とか ----そんな事できるのか分かりませんが---- ややこしいですしね。 というか、そもそも、マウントに失敗したときに、バックアップ処理を停止するようにスクリプトを書いておけばOKなわけで。 今はそうしています(笑)
⇒ Linuxコマンド覚書「rsync」 ⇒ Linux ディレクトリが空かどうかをチェックするシェルスクリプト
コメント