技術者ブログ
クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

▼ 2012年5月 アーカイブ
ext3上のMongoDBでプチフリを回避する方法
2012年5月30日
はじめに
MongoDBをLinux上で稼働させる場合には、比較的新しいバージョンのカーネルを使用し、ファイルシステムにはext4またはxfsを使用するようにオフィシャルのドキュメント内で説明されています。この理由は、MongoDBではデータベースの中身が増えていくに従い、段階的にやや大きめのファイルがディスク上にあらかじめ確保(プリアロケート)されますが、その際のパフォーマンスにファイルシステムによって大きな差が出るからです。
ext3ではプリアロケートの際、ゼロを連続して書き込むという挙動が発生しますが、ext4やxfsでは実際には書き込みを行わずに済ませてしまうというアプローチを採るようです。そのため、ext3とext4を比較すると大きなパフォーマンスの差が発生します。下記エントリなどが参考になります。
「MongoDBをext3とext4でベンチマークしてみたらext4が圧勝だった。」
MongoDBがファイルをプリアロケートする理由は、ファイルに対してプリアロケートせずに段階的に書き込みを行っていくと、ディスク上において、該当するファイルの実際のデータがあちこちに散らばってしまう(断片化してしまう)からだと思われます。
続きを読む ≫ ext3上のMongoDBでプチフリを回避する方法