Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
dsync: Efficient Block-wise Synchronization of ...
Search
Yuuki Tsubouchi (yuuk1)
May 23, 2014
Technology
2
26k
dsync: Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data
論文輪読会#4
ブロックデバイスレベルで実現するrsyncより高速なバックアップについて
Yuuki Tsubouchi (yuuk1)
May 23, 2014
Tweet
Share
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
SREはサイバネティクスの夢をみるか? / Do SREs Dream of Cybernetics?
yuukit
1
120
SREのためのテレメトリー技術の探究 / Telemetry for SRE
yuukit
13
2.5k
AIスパコン「さくらONE」の オブザーバビリティ / Observability for AI Supercomputer SAKURAONE
yuukit
2
1k
AIスパコン「さくらONE」のLLM学習ベンチマークによる性能評価 / SAKURAONE LLM Training Benchmarking
yuukit
2
900
とあるSREの博士「過程」 / A Certain SRE’s Ph.D. Journey
yuukit
11
5.1k
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
1.6k
クラウドのテレメトリーシステム研究動向2025年
yuukit
4
1.1k
博士論文公聴会: Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining / PhD Defence
yuukit
1
350
博士学位論文予備審査 / Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining
yuukit
1
2.2k
Other Decks in Technology
See All in Technology
AI 駆動開発勉強会 フロントエンド支部 #1 w/あずもば
1ftseabass
PRO
0
370
MLflowで始めるプロンプト管理、評価、最適化
databricksjapan
1
230
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
150
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
7
1.6k
ログ管理の新たな可能性?CloudWatchの新機能をご紹介
ikumi_ono
1
750
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
250
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
150
mairuでつくるクレデンシャルレス開発環境 / Credential-less development environment using Mailru
mirakui
5
490
【AWS re:Invent 2025速報】AIビルダー向けアップデートをまとめて解説!
minorun365
4
520
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
180
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
320
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
6
1.5k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Navigating Team Friction
lara
191
16k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
[SF Ruby Conf 2025] Rails X
palkan
0
520
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
100
The Invisible Side of Design
smashingmag
302
51k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
dsync: Efficient Block-wise Synchronization of Multi Gigabyte Binary data Thomas
Knauth and Christof Fetzer, Technische Universität Dresden ! LISA’13 Best Paper Award id:y_uuki 2014/05/22 จྠಡձ#4
Agenda Backup Problem Implementation Device mapper Evaluation Discussion Conclusion
Better Backup • ωοτϫʔΫτϥϑΟοΫͷ࠷খԽ • νΣοΫαϜܭࢉͷCPUίετ͕ͳ͍ • σΟεΫͷread/writeͷ࠷খԽ • OSͷϖʔδΩϟογϡԚછͷ࠷খԽ
Backup ͷલఏ • ఆظతʹͳΔ͘සൟʹόοΫΞοϓ͍ͨ͠ • σʔλࣗମʹ΄ͱΜͲมߋ͕ͳ͍ • શσʔλྔʹରͯ͠มߋͷ͋ͬͨσʔλ ͔ᷮ
Problem • nc/scp: શσʔλίϐʔ • ωοτϫʔΫτϥϑΟοΫେ • 10Gbps Ethernet,100GB, 83
sec (1.2GB/s) • rsync: ͚ࠩͩసૹ • ࠩܭࢉͷͨΊʹશσʔλಡΈग़͠ඞཁ • νΣοΫαϜܭࢉͷCPUίετߴ͍ • OSͷΩϟογϡԚછ
rsync ᶃ ૹ৴ଆͱड৴ଆͷಉظ͍ͨ͠ϑΝΠϧΛݻఆϒϩοΫʹׂ ! ϒϩοΫ୯ҐͰࠩΛௐͯɺࠩͷ͋ΔϒϩοΫ͚ͩసૹ͍ͨ͠ ! ᶄ ֤ϒϩοΫʹରͯ͠νΣοΫαϜΛܭࢉ͠ɺϒϩοΫͷ༰ͷΘ ΓʹνΣοΫαϜ͚ͩΛૹ৴ !
ᶅ νΣοΫαϜΛൺֱ͕ͯࠩ͋͠Δ͔Ͳ͏͔ΛνΣοΫ ऑ͍νΣοΫαϜ(ܭࢉίετ)ͱڧ͍νΣοΫαϜ(ܭࢉίετߴ) ऑ͍νΣοΫαϜʢϩʔϦϯάνΣοΫαϜʣͰࠩͷ͋ΔϒϩοΫΛ ચ͍ग़ͯ͠ɺڧ͍νΣοΫαϜͰ࣮֬ʹࠩνΣοΫ
Idea • όοΫΞοϓ࣌ʹมߋՕॴΛܾఆ… • νΣοΫαϜΛൺֱ͢Δ͔͠ํ๏͕ͳ͍ • ࠷ॳ͔ΒมߋՕॴΛτϥοΩϯά͢Δ
Implementation • ϒϩοΫσόΠεϨϕϧͰมߋ͞Εͨϒϩο ΫͷτϥοΩϯάใΛอ࣋ • τϥοΩϯάใ: ϒϩοΫ͝ͱͷมߋ༗ແͷ ϑϥά ʢ1bit /
blockʣ • ߹ܭσʔλ: 4TiB -> ϑϥά: 128 MiB
Interface • ϢʔβεϖʔεΠϯλϑΣʔε • ֤σόΠε͝ͱʹ /proc ҎԼʹରԠ͢ΔϑΝΠϧ͕Ͱ͖Δ • /proc/mydev: ϒϩοΫ൪߸ͷϦετɻ͜Εʹॻ͖ࠐΉͱ
bit vector ॳظԽ͞ΕΔ • dmextract: มߋͷ͋ͬͨϒϩοΫͷநग़ stdout:ʢϒϩο Ϋ൪߸, σʔλʣ • dmextract mydev | ssh remotehost dmmerge /dev/ mapper/mydev
Block Device ϒϩοΫσόΠευϥΠό ετϨʔδσόΠε(HDD/SSD) ൚༻ϒϩοΫσόΠευϥΠό ΞϓϦέʔγϣϯ ϖʔδΩϟογϡ ϑΝΠϧγεςϜ ϑΝΠϧͷಡΈॻ͖ཁٻ ϑΝΠϧͱσόΠεͷϒϩοΫͱͷϚοϐϯά
*0ཁٻΛσόΠεʹదͨ͠ܗʹฒସ͑ͳͲ 3".ʹಡΈॻ͖σʔλΛΩϟογϡ ݸʑͷϋʔυΣΞʹ͋Θͤͨॲཧ ε τ Ϩ c δ σ ό Π ε ந Խ
Device mapper http://lc.linux.or.jp/lc2009/slide/T-02-slide.pdf ϒϩοΫσόΠευϥΠό ετϨʔδσόΠε(HDD/SSD) ൚༻ϒϩοΫσόΠευϥΠό ΞϓϦέʔγϣϯ ϖʔδΩϟογϡ ϑΝΠϧγεςϜ ϑΝΠϧͷಡΈॻ͖ཁٻ
ϑΝΠϧͱσόΠεͷϒϩοΫͱͷϚοϐϯά *0ཁٻΛσόΠεʹదͨ͠ܗʹฒସ͑ͳͲ 3".ʹಡΈॻ͖σʔλΛΩϟογϡ ݸʑͷϋʔυΣΞʹ͋Θͤͨॲཧ ε τ Ϩ c δ σ ό Π ε ந Խ %FWJDF NBQQFS ϒϩοΫͷಡΈॻ͖ཁٻΛ ͍Ζ͍Ζม
Device mapper (1) • ෳͷཧϒϩοΫσόΠεΛҰͭͷཧσόΠεͱͯ͠ ଋͶΒΕΔ • Mirror, Stripe, Snapshot
• RAID 0,1,5,10 • Snapshot: ཧσόΠεͷશมߋΛཧσόΠεʹϦμ ΠϨΫτ(Copy on Write) • ͋ͱͰཧσόΠεͱཧσόΠεΛϚʔδՄೳ • ཧσόΠε͔ΒόοΫΞοϓσόΠεʹϦϞʔτϦμ ΠϨΫτͰόοΫΞοϓ࡞ΕΔʁʁ
Device mapper (2) • 2ͭͷࢹ͕͔͚͍ͯΔ -> Snapshot Ͱແཧ • શมߋΛҰ࣌తʹཧσόΠε͕όοϑΝ͢Δඞ
ཁ͕͋Δ όοϑΝ͕͋;Εͯσʔλϩετ • ΦϦδφϧσʔλΛόοΫΞοϓઌͰϚʔδ͢Δ ඞཁ͕͋Δ • Device mapper ϒϩοΫมߋΛτϥοΩϯά͢Δ ͨΊͷશͯͷใΛͭ • liner mapping mode ࣌ͷ’map’ function
Architecture • ཧσόΠεʹରͯ͠τϥοΩϯά͢Δ͔ΘΓʹɺɹ ϧʔϓόοΫσόΠεʹରͯ͠τϥοΩϯά͢Δ • ϧʔϓόοΫσόΠε: ҰൠతͳϑΝΠϧΛϒϩοΫ σόΠεͰ͋Δ͔ͷΑ͏ʹѻ͏ͨΊͷػೳ ϒϩοΫσόΠε %FWJDFNBQQFS
ΞϓϦέʔγϣϯ ϒϩοΫσόΠε ϑΝΠϧγεςϜ ϧʔϓόοΫσόΠε %FWJDFNBQQFS ΞϓϦέʔγϣϯ
Data Structure • RAM্ʹมߋใΛ1ϒϩοΫ͋ͨΓ1bitͰͭ • 1bit ͷཁૉΛͭϒϩοΫͷྻ • ϝϞϦΞϩέʔγϣϯͷ •
kmalloc(), __get_free_pages(), vmalloc() • vmalloc() ͷΈ࣮֬ʹϝΨόΠτ୯ҐͰ֬อՄೳ • kmalloc() εϥϒΦϒδΣΫτ੍ݶ͕͋Δ(32MiB)ɺvmalloc ϖʔδ୯ҐͰ֬อ • ΦϯϝϞϦͳσʔλߏͳͷͰɺγϟοτμϯ࣌ʹτϥοΩϯ άใΛϩετ͢Δ • γϟοτμϯ࣌ʹτϥοΩϯάใΛσΟεΫʹॻ͖ࠐΜͰɺ ىಈ࣌ʹಡΈग़͢ • յΕ͍ͯΕϑϧಉظ
Evaluation (tools) • scp/nc • rsync • blockmd5sync • rsync
ͷϩʔϦϯάνΣοΫαϜͳ͠൛ • ZFS • features: ཧϘϦϡʔϜɺsnapshotɺ2ͭͷsnapshotͷࠩநग़ • ϒϩοΫσόΠεϨϕϧͩͱΞΫηεͰ͖ͳ͍ใ: /tmp ͚ͩແࢹ͢Δ • dsync • ϑΝΠϧγεςϜʹґଘ͠ͳ͍ • ϑΝΠϧγεςϜͷใ͕ͳ͍ͷͰ੍ݶ͋Δ (mtime ͳͲ) • νΣοΫαϜܭࢉͷ͔ΘΓʹɺϒϩοΫ͝ͱʹτϥοΩϯάεςʔλεΛͨ ͤΔ
Evaluation (Benchmarks) • 6-core AMD Phenom II processor • 2
TB spinning disk (Samsung HD204UI), • 128 GB SSD (Intel SSDSC2CT12) • εΠον͝͠ʹΪΨϏοτΠʔαωοτͰଓ
ಉظ࣌ؒ HDD/SSD rsync: 33min, dsync: 7 min )%% 44%
CPUར༻ STZODड৴ଆνΣοΫαϜ STZODૹ৴ଆνΣοΫαϜ ίΞ͍ͬͯΔ
ωοτϫʔΫଳҬ
Discussion • ৗʹ dsync > rsync • rsync dsync
ͷεʔύʔηοτ • rsync dsync ͱಉ͡Α͏ʹશͯͷߋ৽͞ΕͨϒϩοΫ Λread/transmit/merge͢Δ • rsync dsync ʹՃ͑ͯɺߋ৽ϒϩοΫΛܾఆ͢ΔͨΊ ʹɺ”શͯͷϒϩοΫ”Λreadɺchecksumܭࢉ͕ඞཁ • bit vector ͷߋ৽Φʔόϔου • ΦϯϝϞϦ͔ͩΒେͨ͜͠ͱͳ͍
Conclusion • ఆظతͳڊେόΠφϦσʔλͷޮతͳಉظํ ๏ͷఏҊ/࣮ • νΣοΫαϜΛܭࢉ͢ΔΘΓʹɺΦϯϥΠϯ ͰมߋΛτϥοΩϯά • Linux kernel
ͷ Device mapper֦ு • dmextract and dmmerge • rsycnc vs dsync, 32 min vs 7 min
ײ • rsync ͕͕͢͞ʹ͔Θ͍ͦ͏ͳͷͰɺసૹྔ͕͖͍ͯ ͘ΔΠϯλʔωοτܦ༝ͷಉظ࣌ؒൺֱ͕͋ΔͱΑ͞ ͦ͏
Linux 3.2 kernel module patch https://bitbucket.org/tknauth/devicemapper/