超大量ファイルをイメージ化して扱う

Linux Maildir 形式のメールサーバを運用していて利用者・利用量が増大してくるとだんだん 1~10Kbyte 程度のメールファイルが異常な量になってくることがあります。こんな時「インフラの入れ替えだ!」といってメールサーバのマイグレーションを行うと大変なことになります。

数万件程度のファイルであれば問題なさそうですが、数十万~数百万件レベルのファイルを別のサーバにコピーしようとすると異常な I/O 負荷により scp 等でも数日かかってしまうことも出てくるでしょう。tar で固めようにも gzip しようにもとにかく時間ばかりかかって八方塞がり状態になります。

このままではマイグレーション予行練習もできず、がんばってやろうとして ext3 ファイルシステムが壊れてしまった経験もあります。

ファイルをイメージ化してみる

私がこんな時、手軽にマイグレーション予行練習・調査ができるよう考えたのは ハードディスクベースのファイルシステム(ext3)にファイルベースファイルシステムを作成し、その上で作業することです。

ハードディスクベースの上にファイルシステム(例えば image A)を作り、その上に一度全てのファイルをコピーして作業する訳ですがもちろんこのコピーにも時間がかかります。

ただ、一度実施してしまえば、それ以降のファイルの移動が簡便になり(バックアップ等が取りやすい)、なおかつファイルシステムが破損した場合のリスクが少ないというメリットがあります。

ファイルシステムをイメージ化した場合のデメリット

一方でハードディスクベースファイルシステム上のファイルベースファイルシステムを使う場合、デメリットもあります。

  • 負荷が余計にかかる(この場合 IO も CPU も)
  • Read/Write 性能が落ちる
  • ドキュメント等がない場合、初めて見た人にはよく分からない可能性がある

どうしても 2つのファイルシステムを使う為、2回ファイルシステムを扱う処理が走ります。その分性能が劣化してしまいます(実運用には向かないかもしれません)。

また、サーバ関連の知識をあまり知らない人に理解してもらうには口頭でなくドキュメントが必要になってきてしまいます。

こういったイメージ化の手法は古くからあるのですが今ひとつ使い道が難しい部分があります。ただ普段から気にしているだけでもうまい使い方ができるかもしれません。

Published by in マイグレーション using 37 words.