1日1回だったバックアップを高速化するWaLB
最後にサイボウズ・ラボの星野喬氏から説明されたのが、「WalB」と呼ばれるバックアップ/レプリケーションシステムだ。
cybozu.comではデータ消失の回避のためのバックアップと、可用性の向上を実現するレプリケーションをストレージレイヤーで実装している。ユーザーデータは、ソフトウェアRAIDとiSCSIストレージでレプリケーションされ、このストレージのデータを世代バックアップ。さらにバックアップデータのレプリケーションを実施し、全体で4重のデータ保護を実現している。
従来、ストレージデータの世代バックアップとレプリケーションは「TBS」という自社開発のシステムを採用。TBSではCOW(Copy On Write)方式のdm-snapで物理ボリュームのスナップショットを取得し、前回との差分を管理するためのdiffデータをバックアップホストに転送。インクリメンタルフォーエバーでデータをバックアップしていた。しかし、TBSではdiffの取得にはスナップショットのフルスキャンが必要なほか、COWのオーバーヘッドが大きく、性能に影響。ホスト当たり、9TBのフルスキャンが必要になるため、1日1回のバックアップが限界だったという。
ここで導入したのが、フルスキャンが不要になるWalB(Write-ahead-logging on Block Device)だ。WalBではリード・ライトの負荷が重いCOWではなく、書き込み履歴(wlog)を先に書くWAL(Write-Ahead Logging)を採用。wlogをdiffに変換し、重複排除してソートすることで、フルスキャンなしで差分データの管理が可能になる。
サイボウズではLinuxカーネルで動作するWaLBデバイスドライバーを開発し、wlogを使った仮想ブロックデバイスとして見えるようにした。また、従来のTBSに相当するWalBツールを開発し、バックアップやレプリケーション、冗長化などを可能にした。これらはほぼ開発完了しており、OSSとして公開される予定。WalBを用いたストレージ管理ツールも現在開発中で、前述した4重のデータ保護システムに導入される予定となっている。
まとめに入った萩原氏は、今後の取り組みを披露。ログ収集や解析基盤の整備のほか、分散ストレージ、検索サービスの開発、Linuxコンテナ技術の導入を進めていくと説明した。コストのかかる商用製品に頼らず、自前での運用管理を実現するためのサイボウズの“カイゼン”は今後も絶え間なく続いていくという。