Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
MugenFS: クラウドストレージ利用時におけるキャッシュ戦略
Search
Kazunori Jo
February 03, 2017
Programming
210
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
430
ビデオ会議の音をよくする / 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
250
うごいてるコードレビュー
itochan
1
860
高校生におけるソーシャルメディア適正利用を奨励する活動について
itochan
0
420
Bitcoinでお金を稼ぐ #dentoolt
itochan
0
740
ラブアンドルビー
itochan
0
1.5k
Other Decks in Programming
See All in Programming
Webの地図
yosuke_furukawa
PRO
6
4k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
600
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
高専キャリア LT 発表内容
crysta1221
6
5.6k
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
130
信頼性の目標を誰も求めてない
shubox
0
500
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
150
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
150
Foundry Localでエージェント開発
seosoft
0
170
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Design in an AI World
tapps
1
310
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
440
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
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 …