• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,158
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. PrettyFS perl による分散ファイルストレージ ふしはらかん ( 株式会社モバイルファクトリー )
  • 2. 自己紹介
    • 伏原幹(ふしはらかん)
    • 3. 株式会社モバイルファクトリー所属
      • wassrをどうぞよろしく
    • 過去に作ったもの
      • wema (付箋wiki) perl 関係ない
      • 4. wasaco (wassr client) perl関係ない
      • 5. xircd (irc server) perl製
  • 6. agenda
    • Webサービスでのファイルの扱い
    • 7. 分散ファイルストレージ
    • 8. mogilefsの特徴と不満
    • 9. prettyfsの概要
  • 10. Webサービスとファイル
    • ある程度大きなファイルをどう扱うか
      • 画像(写真、イラスト)
      • 11. 音声(podcast, 着うた着メロ)
      • 12. 動画
    • ユーザーのアップロードするファイルの置場
      • ローカルに保存
      • 13. DB(RDBMS)に保存
  • 14. ローカル保存
    • 処理は簡単(普通のfile read/write)
    • 15. app serverが分散している場合
      • NFSでディスク共有
        • ディスク障害が心配……
      • rsync等でファイル同期
        • 全app serverに配布するのは勿体無い
  • 16. DBに保存
    • app serverが分散していても平気
      • MySQLのBLOBとかでつっこむ
    • 検索しやすい
    • 17. パフォーマンスに課題
  • 18. そこで分散ファイルストレージ
    • サーバの追加で容量を拡張できる
    • 19. ファイルの種類に合わせた冗長性を確保
    • 20. 実際のソフトウエア
      • mogilefs
      • 21. livedoorでのapache+mod_perlによる実装
      • 22. (amazon S3)
  • 23. mogilefsとは?
    • perlで実装された分散ファイルストレージ
    • 24. Brad Fitzpatrick氏が開発
    • 25. trackとstore(とperlbal)で構成されている
  • 26. mogilefsの構成 store store store store tracker tracker client perlbal
  • 27. tracker
    • clientとやりとりする
      • ファイルの登録
      • 28. ファイルの取得
      • 29. storeからファイルを参照するURLの一覧を返す(後述)
  • 30. store
    • ファイルを保存する
    • 31. 実体はWebDAVに対応したHTTPサーバ
    • 32. trackerが複数のstoreにファイルを保存する
  • 33. mogileのファイル管理
    • device
      • store内のストレージ最小単位
    • class
      • 保存するファイルのクラス
      • 34. class毎に幾つのdeviceにファイルを保存するか決められる
    ファイル A ファイル B
  • 35. perlbal
    • Perlで実装されたロードバランサー
    • 36. X-REPROXY-URL
      • 裏側のappが↑のURLを返すとperlbalがそのファイルを取りにいって返す
      • 37. trackerが返すstoreのURL(s)を渡して使える
      • 38. storeは適切なheader(content-typeとか)を返さないのでappで頑張る
  • 39. mogilefsの問題
    • 実質perlbalが前提
    • 40. 同じキーのデータを更新するとstoreのURLが変わる(->X-REPROXY-CACHE-FORを迂闊に使えない)
    • 41. class,deviceの概念が無駄に複雑
    • 42. 運用処理の動作が不安定(均等化、store毎コピーなど)
  • 43. 不満があるなら
    • 作ればいい!
  • 44. prettyfs
    • 手軽に使える「かわいい」分散ファイルストレージ
    • 45. 1hostに1対以上のtracker,storeが動く前提
    • 46. trackerがrevers proxyとしても動く
      • perlbal不要(ただしロードバランサはあったほうが良いかも?)
  • 47. prettyfsの起動
    • ファイルとシステムの情報を記録するdbへの接続オプションを設定に書いて起動
      • db層を抽象化してあるので、RDBMSを使うこともKVSを使うこともできる
      • 48. ファイルコピー数も指定できる
  • 49. ファイルの登録
    • クライアントからファイルを登録する
      • content-typeなど、出力時に指定したいHTTP headerを同時に指定できる
      • 50. trackerでファイルを受け付け
      • 51. workerも抽象化してあるので、job queueにどれを使うか、storeへの配置をどうやるか、等選べる
  • 52. ファイルの取得
    • mogileと同じ、クライアントによるデータ、store URLの取得も可能
    • 53. trackerがhttpd(storeに対するrevers proxy)になってる
      • http://tracker/filekey のようなURLで直接データ取得ができる
      • 54. ↑のURLはデータ更新しても当然不変
  • 55. 運用
    • mogilefs+αな管理
      • 起動中にtracker+storeを追加
      • 56. 障害の発生したstoreを切り離す
      • 57. storeからstoreへファイルを全コピー
      • 58. 全storeの使用量が均質化するようファイル移動
  • 59. 今後の展望
    • とりあえず公開したい
    • 60. trackerをplackで動くように
    • 61. worker, dbの種類を増やす
    • 62. パフォーマンス向上