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
EZIO, Torrent-based Recovery
Search
Date Huang
May 01, 2017
Programming
0
230
EZIO, Torrent-based Recovery
Date Huang
May 01, 2017
Tweet
Share
More Decks by Date Huang
See All by Date Huang
從大學到出社會,這十年的參與和維護的開源專案
tjjh89017
0
1.1k
開源專案的商業困境
tjjh89017
0
350
Rapidly Deploy NFV with VyOS on Kubernetes
tjjh89017
0
180
設計Kubernetes Controller與CRD的實踐 - 以網路為例
tjjh89017
0
880
維護自己的開源專案EZIO的心路歷程
tjjh89017
1
500
Massive Bare-Metal Operating System Provisioning Improvement - OpenInfra Day Taiwan 2019/11/12
tjjh89017
0
91
Cloud Infrastructure Interconnect with Wireguard and OSPF
tjjh89017
0
490
Build Redundant Gaming Network with Wireguard and BGP
tjjh89017
1
2.4k
CI on OpenStack
tjjh89017
0
300
Other Decks in Programming
See All in Programming
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
1.3k
M5UnitUnified 最新動向 2025/05
gob
0
140
RuboCop: Modularity and AST Insights
koic
3
2.7k
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
840
Lambda(Python)の リファクタリングが好きなんです
komakichi
5
270
ComposeでWebアプリを作る技術
tbsten
0
130
カオスに立ち向かう小規模チームの装備の選択〜フルスタックTSという装備の強み _ 弱み〜/Choosing equipment for a small team facing chaos ~ Strengths and weaknesses of full-stack TS~
bitkey
1
140
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
philipschwarz
PRO
0
170
20250426 GDGoC 合同新歓 - GDGoC のススメ
getty708
0
110
インプロセスQAにおいて大事にしていること / In-process QA Meetup
medley
0
170
プロダクトエンジニアのしごと 〜 受託 × 高難度を乗り越えるOptium開発 〜
algoartis
0
200
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
1
200
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Raft: Consensus for Rubyists
vanstee
137
6.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
BBQ
matthewcrist
88
9.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
For a Future-Friendly Web
brad_frost
177
9.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Navigating Team Friction
lara
185
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Embracing the Ebb and Flow
colly
85
4.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Transcript
EZIO BT-based Data Transfer Yu-Chiang Huang
Outline • CloneZilla • EZIO
CloneZilla • 猋犩牏螭ܻ敟誢 • Server Edition • Multicast-based • UDPcast
Multicast • ᗭ砮 • 盄蕦褾牧ℂ㬵䷱睞螂 • 墋ᘒԏ牧觊犲 Broadcast ጱ狶ဩ
UDPcast • Multicast • ݶྍ秚ګ
CloneZilla • 猻玊 • ݢ瓟婘 • ە玊 • 殾ಅ磪ፓ秂伛猋ਠ౮胼樄ত •
殾ݶྍ蒂ቘ牧ݢ胼䨝ݑک絑ह磧眸ጱࢩᔰ段
EZIO • BT-based • 䲆礯羬翄螭ܻ • ᪡螂绚玟璸
BT
BT • BitTorrent • P2P • ֑๐瑊犵毱疝揗斉
BT 礍䯤 • 獮๗ BT • Torrent • Tracker •
盅๗ BT • Magnet • DHT
Tracker • 戢㲘㪔ᔱ玲ٌ犢 Peer ጱ蝫娄虻懱 • Peer 戢㲘 Tracker ᛔ૩ጱ虻懱
Piece • 裾ଶ傶 2^N ጱ蝫媲玟ྦྷ • 疥ಅ磪䲆礯蝫矑牧ྯ 2^N 㴟獤傶Ӟ㮆 Piece
• 虻碘涢挨ጱ磧ੜ㻌֖ • Piece 碍ᰁ蝢ଉ䨝段蝧ଶ • 蝢ଉ Piece 碍ᰁࣁ 1000 ~ 2000 ԏ樌䨝磧֯
Torrent • 蝢圸物圵ৼ • Tracker 虻懱 • 䲆礯虻懱
Torrent Info { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece
length': 262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
Tracker { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece length':
262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
Files { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece length':
262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
Piece Info { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece
length': 262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
Filename { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece length':
262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
File Hash { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece
length': 262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
BT • 猻玊 • 覍ݶྍ蒂ቘ • 虻碘涢挨 • ە玊 •
犋ݢ瓟婘
Implement
Implement • ल䲆礯羬翄蝱 Torrent • ፗ矑䌃蝱Ꮭ繕
Filesystem • Idea • Filesystem = Metadata + Data
Filesystem • Implement • Filesystem = Blocks • inode ∈
Block • data ∈ Block
None
None
Filesystem • Block 傶च器牧Block size ࢴਧ • 磪 Superblock 牧獵ӥ磪ֵአکጱ
Block ᮷ݢ犥Ꭳ • Block offset • Block size
Filename { 'announce': 'http://tracker.site1.com/announce', 'info': { 'name': 'directoryName', 'piece length':
262144, 'files': [ {'path': ['111.txt'], 'length': 111}, {'path': ['222.txt'], 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb... 8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }
Filesystem Block • ल䲆礯羬翄蝱 Torrent • Offset —> Filename •
Length —> File Length
Write Disk Directly • 眤蘛 libtorrent.org • 䋿֢ custom_storage •
ፗ矑 Block 䌃کᏝ繕ྋ嘦ጱ֖ᗝӤ
Benchmark
Benchmark • ፓ獮ጱ䋿涢᮷氥纈䨝穉 Multicast ጱ狶ဩ盠 • To be continue
Optimization
Connection • 蝫娄碍哴ݢ胼牧Ӭ犋胼犵ෝ 2 牧犥ع蝐玕 • 姘瞱犵蝫娄碍牏ṛߝ搡蝫娄
Cache • 盠玲哴ݢ胼य़ • 碉誢蝧ଶ疰犋䨝ݑ褖ෝᏝ繕蝧ଶ • 翕᪠蝧ଶ > Ꮭ繕褰秚ਂ玲蝧ଶ
Origin Server • ܻত秚ጱ蝧ଶ段碉誢蝧ଶ • ܻত秚哴ݢ胼盠
WARNING!
Warning • ݢ胼蝧ଶ盠ک䨝虏֦ጱ Switch 稴吚 • ইຎ Switch 胙礂毱疝磪猂碘 •
森 P2P ጱ翕᪠ݢ胼䨝犋胼ֵአ
How to
How to • Standalone EZIO • EZIO integrated CloneZilla