現状考えうる最良のext3ファイル復元ツールを実装した

ext3ファイルシステムの復元の代表的なツールとしてextundeleteがあります。

しかし、extundeleteは「ext3ファイルシステムとファイルの削除・復元について」のエントリにおける正確なファイルの紐付けやその検知ができていません。extundeleteで復元してしまうと、「ext3ファイルシステムとファイルの削除・復元について」で述べた通り、復元対象ファイルのinodeが以前にも違うファイルで使われていて、そのinodeの以前の情報がディレクトリエントリから抽出できてしまった場合、先に見つかったファイル名でinodeの指し示すデータブロックを復元してしまいます。そのため、意図していないファイル名とデータブロックのファイルが復元される可能性があります。

そこで、そういった問題を解決した現状考えうる最良の復元ツールをextundeleteをベースに実装してみました。やっぱり理論だけでは面白くないなぁと思ったのです。コードはGitHubに置いているので自己責任で試してみて下さい。ext4もできるんじゃないかなぁと思っていますが試していません。機能としては、以下になります。

  • ファイル復元
  • 復元の際はディレクトリエントリ上でinodeの重複をチェック
  • 重複していた場合は、inodeから得られる複数のファイル名でファイルを復元
  • 重複していたファイルとinodeの組み合わせをリストで生成

続きを読む

mod_mrubyでモジュール型PHPもsuEXEC

mod_mrubyでsuEXECのようなアクセス制御を実装できるようにしました。

しかも、CGIだけでなくモジュール型のPHPやmod_perl等、所謂DSOも簡単にsuEXECのようにサーバプロセスと権限を分離して実行することができます。

以下に、実装例を紹介します。

続きを読む

mruby-cgroupとmod_mrubyでApacheのリソースを制御、そこから得られるcgroupの挙動とは

C言語で書かれた任意のホストプログラムにmrubyを組み込み、そのプロセスリソースを簡単かつ強力に制御するために、mruby-cgroupというmrbgemを作り、以前の記事で紹介しました。

もちろん、mruby-cgroupmod_mrubyに組み込むことで、ホストプログラムであるmod_mruby、さらにはApacheそのもののリソース制御が可能になり、Webサーバへのリクエスト単位でもリソース制御が可能になります。

しかし、軽量なリクエストに対して、無条件にリソース制御の機能を適応してしまうと、リソース制御を適応すること自体がボトルネックになる可能性が十分あります。また、それとは別に、cgroupの想定していない挙動が得られるかもしれません。それがどういうものなのかを評価してみました。

続きを読む

ApacheとNginxの性能比較でevent_mpmの本気を見た

Apache2.4から正式にデフォルトのMPMになったevent_mpmですが、いまいち良さを実感する事ができていませんでした。たいしてパフォーマンスも出ないし、これ本当に意味あるの?という人が多かったかもしれません。

そこで、マルチプロセッシング周りを真面目にチューニングしてみようと思い、あれこれ試してみると、ある設定値において急にevent_mpmが本気を出し始め、すごいベンチマークスコアを叩きだしたので、それらをまとめようと思います。正直びっくりしています

続きを読む