Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MugenFS: クラウドストレージ利用時におけるキャッシュ戦略
Search
Kazunori Jo
February 03, 2017
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MugenFS: クラウドストレージ利用時におけるキャッシュ戦略
Kazunori Jo
February 03, 2017
More Decks by Kazunori Jo
See All by Kazunori Jo
爆速で組織になじみ “Work is Fun” を体現するIVRyのオンボーディング
itochan
1
410
ビデオ会議の音をよくする / Making Sound Better with Video Conference
itochan
0
450
我々はいかにして安全な 名前解決を手に入れるか / How do we get secure name resolution
itochan
0
170
PacketFS: ファイルシステムによるバックアップの自動化
itochan
0
170
おはようのとりかた
itochan
0
240
うごいてるコードレビュー
itochan
1
850
高校生におけるソーシャルメディア適正利用を奨励する活動について
itochan
0
420
Bitcoinでお金を稼ぐ #dentoolt
itochan
0
730
ラブアンドルビー
itochan
0
1.5k
Other Decks in Programming
See All in Programming
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
120
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
その節約、円になってますか?
isamumumu
1
710
FDEが実現するAI駆動経営の現在地
gonta
2
280
React本体のコードリーディング
high_g_engineer
1
140
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
450
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
600
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
110
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.5k
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
220
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
エンジニアに許された特別な時間の終わり
watany
108
250k
What's in a price? How to price your products and services
michaelherold
247
13k
The agentic SEO stack - context over prompts
schlessera
0
860
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
790
Designing for Timeless Needs
cassininazir
1
430
Navigating Team Friction
lara
192
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Deep Space Network (abreviated)
tonyrice
0
250
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
Transcript
[WIP] MugenFS: クラウドストレージ利⽤時に おけるキャッシュ戦略 Arch B2 itochan 1
背景 • 今⽇では数多くのクラウドストレージサービスがある • Dropbox, Google Drive, iCloud Drive, OneDrive,
etc... • いくつかのサービスではローカルにファイルを同期をせずオン ライン上に置いたままローカルのファイルブラウザから閲覧で きるものが存在する • そこでファイルの種類に応じてキャッシュをすることで、適切 にアクセスを考慮できればオンライン上にあるファイルのアク セスを⾼速化できるのではないかと考えた 2
背景 • クラウドストレージのPCにあるストレージとの統合が進む • iCloud Drive • ローカルにあるディレクトリの同期 • リモートにあるファイルをローカルにあるかのように振る舞
う • iCloud DriveはmacOSの機能であるためmacOSでのみ提供 3
先⾏事例 • iCloud Drive1 • “デスクトップ” と “書類” ディレクトリをiCloud上に同期 •
リモートにあるファイルをローカルにあるかのように振る舞う • macOSの機能であるためmacOSでのみ提供 • Dropbox: Smart Sync2 • 個別のファイル単位でオンラインのみ、ローカルに保存を選択 • ファイルサイズなどの情報はローカルにキャッシュ • macOSではカーネル拡張を使⽤ 4 1 https://www.apple.com/jp/icloud/icloud-drive/ 2 https://www.dropbox.com/help/9293
先⾏事例 • rclone3 • クラウドストレージでファイルの操作やローカルとの同期を⾏ うCUIツール • マウントポイントにリモートのファイルをマウントするモード が存在 •
ファイル情報のキャッシュは⾏うがプロセスを終了すると破棄 5 3 http://rclone.org/
⽬的 • アクセスパターンを考慮したプリフェッチやキャッシュ戦略を⾏う • 低速なネットワーク回線でも快適に利⽤できるようにする 6
⼿法 7 Client 指定したマウントポイントにFUSEのファイルシステムをマウン ト (e.g. ~/drive) ~/drive FUSE Filesystem
mount
⼿法 8 Client このとき、ファイルシステム上にはクラウドストレージに置かれ ているファイル・ディレクトリを表⽰ FUSE Filesystem ~/drive Cloud Storage
request
⼿法 9 Client FUSEを通してREADがあればクラウドストレージ上の ディレクトリ内にあるデータをキャッシュ 動画や⽂書などファイルの種類によってキャッシュ戦略を変える FUSE Filesystem ~/drive response
Cache Cloud Storage store read
⼿法 10 Client ⼀度アクセスしたメタデータ・ファイルはキャッシュから参照 FUSE Filesystem ~/drive Cache Cloud Storage
exist? read hit!
成果: MugenFS • Google DriveのREST APIを⽤いて認証 • Google Driveに格納されているファイルのディレクトリの メタデータは⼀度取得されたらKVSにキャッシュする
• ファイルの属性の取得など何度も呼ばれることがある • 毎度APIを叩いていてはAPIの制限にも達する可能性がある 11 1 https://github.com/hanwen/go-fuse 2 https://github.com/boltdb/bolt https://github.com/itochan/mugenfs
成果: MugenFS • Goを⽤いて実装 • ファイルシステムを扱うため、オーバーヘッドを最⼩限にす ることがねらい • FUSEにgo-fuse1を使⽤しているが、Cのlibfuseと⽐較しベンチ マークでは5%程度の差で済んでいる
• キャッシュシステムにBoltDB2を採⽤ • KVS • SSDに最適化されている 12 1 https://github.com/hanwen/go-fuse 2 https://github.com/boltdb/bolt https://github.com/itochan/mugenfs
実装 13 Client MugenFS BoltDB Google Drive exist? hit! FUSE
Filesystem run REST API read
今後の展望 • マルチプラットフォーム対応 • Goにはクロスコンパイラが搭載されている • メタデータをキャッシュする際パージするタイミングを決める • 単純な時限キャッシュであればリモートとの整合性が壊れる •
キャッシュ戦略 14
キャッシュ戦略 • クラウドストレージ上にあるファイルのキャッシュ • ⼀度アクセスしたものをキャッシュする(LRU) • 拡張⼦で判定 • READしようとしているファイルの先読み機能 •
例: 動画の次を読み込む 15
キャッシュ戦略例: 動画先読み • ファイル名などで判定 • シリーズであれば 第1話, ep.1 といった類似したファイル名 で複数のファイルが存在
• 次に開かれるファイルを予測 し、あらかじめダウンロード 16 Client hogehoge 第1話.mp4 hogehoge 第2話.mp4 hogehoge 第3話.mp4 MugenFS …