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
Btrfsの構造
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
naota
October 19, 2013
Programming
2.9k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Btrfsの構造
naota
October 19, 2013
Transcript
51 slides
Btrfs ͷػೳɾಛ BtrfsͬͯͲΜͳϑΝΠϧγεςϜ? 2013-06-14 1 / 51
Btrfs ͷػೳɾಛ 2013-06-14 2 / 51
Btrfs ͷػೳɾಛ . . Copy On Write 2013-06-14 3 /
51
Btrfs ͷػೳɾಛ . . Journal 2013-06-14 4 / 51
Btrfs ͷػೳɾಛ 2013-06-14 5 / 51
Btrfs ͷػೳɾಛ 2013-06-14 6 / 51
Btrfs ͷػೳɾಛ . . Journal ͷऑ ʮδϟʔφϧʯͱʮຊମʯͱೋճॻ͔ͳ͚Ε͍͚ͳ͍ σʔλδϟʔφϧԽ͢Δͷޮ͕ѱ͍ ϝλσʔλͳΒ͍͚Δ 2013-06-14
7 / 51
Btrfs ͷػೳɾಛ 2013-06-14 8 / 51
Btrfs ͷػೳɾಛ . . Copy On Write Ұճ͔͠ॻ͔ͳ͍͍ͯ͘ σʔλɾϝλσʔλ྆ํͷ߹ੑΛอͭͷʹ͑Δ 2013-06-14
9 / 51
Btrfs ͷػೳɾಛ . . εφοϓγϣ οτ 2013-06-14 10 / 51
Btrfs ͷػೳɾಛ . . σϑϥά 2013-06-14 11 / 51
Btrfs ͷػೳɾಛ . . Quota QGroup ͱݺΕΔಛघͳ quota εφοϓγϣ οτ͕͋ΔͷͰʮڞ༗σʔλʯ͕ଘࡏ͢Δ
ʮશମͷαΠζʯͱʮڞ༗͞Ε͍ͯͳ͍αΠζʯʹΑΔ੍ݶ͕Ͱ͖Δ ڈͷ Software Design10 ݄߸ʹࡌͬͯ·͢ 2013-06-14 12 / 51
Btrfs ͷػೳɾಛ . . Ext2/3 ͔Βͷ convert ext2/3 ͷσʔλ͕ͦͷ··มͰ͖·͢ ؾʹ͍Βͳ͚Εݩʹͤ·͢
2013-06-14 13 / 51
Btrfs ͷػೳɾಛ . . ͦͷଞ 16EiB ·Ͱ͑Δ (XFS ͷ 2
ഒ!) checksum ͕͋Δ͔ΒϒϩοΫͷ߹ੑνΣ οΫ OK! ಁաతѹॖͰ༰ྔઅ! RAID Ͱ৴པੑ্! send/receive ͰޮతͳόοΫΞοϓ! Hot add/remove ͰΒ͘Β͘σΟεΫަ! dedup Ͱॏෳഉআ! SSD ༻࠷దԽ͋ΔΑ! 2013-06-14 14 / 51
Btrfs ͷػೳɾಛ . . কདྷతʹ ॻ͖͜Έͱಉ࣌ʹࣗಈ dedup hot data tracking
ͰΑ͘ΞΫηε͢ΔϑΝΠϧΛ SSD ʹΩϟ ογϡ! fsck? 2013-06-14 15 / 51
Btrfs ͷػೳɾಛ . . ͍ͨ͘ͳ͖ͬͯͨͰ͠ΐ? 2013-06-14 16 / 51
B . . B Btrfs ͷ΄ͱΜͲ͍ͨΔͱ͜ΖͰΘΕΔσʔλߏ ͜Ε͕Θ͔Βͳ͍ͱ Btrfs
͕Θ͔Βͳ͍ ͳΜͱ͍ͬͯ “BtrFS” = “B-Tree File System” Ͱ͔͢Βͳ! 2013-06-14 17 / 51
B . . ೋ୳ࡧ 2013-06-14 18 / 51
B . . B 2013-06-14 19 / 51
B . . B ͷૠೖ 2013-06-14 20 / 51
B . . ׂ 2013-06-14 21 / 51
B . . CoW ૠೖ 2013-06-14 22 / 51
B 2013-06-14 23 / 51
B 2013-06-14 24 / 51
B 2013-06-14 25 / 51
B 2013-06-14 26 / 51
B 2013-06-14 27 / 51
B 2013-06-14 28 / 51
Btrfs ͷ . . Btrfs ͷ B Key ΦϒδΣΫτ
ID λΠϓ Φϑηοτ ϊʔυͱϦʔϑ Ұ൪Լ͕ϦʔϑɺΓ͕Λϊʔυ ϦʔϑʹΩʔʹରԠ͢Δσʔλ͕อ͞ΕΔ 2013-06-14 29 / 51
Btrfs ͷ 2013-06-14 30 / 51
Btrfs ͷ . . ༷ʑͳ Root tree FS tree extent
tree chunk tree device tree CSum tree 2013-06-14 31 / 51
Btrfs ͷ . . Root Tree جຊͷ! ଞͷͷ root Λอ࣋
αϒϘϦϡʔϜߏͷऔಘ 2013-06-14 32 / 51
Btrfs ͷ . . FS Tree αϒϘϦϡʔϜɾεφοϓγϣ οτ͝ͱʹ FS tree
ͷ root ͕͋Δ σΟϨΫτϦߏ i-node ใ ϑΝΠϧσʔλҐஔ (extent address) 2013-06-14 33 / 51
Btrfs ͷ . . chunk ͱ extent 2013-06-14 34 /
51
Btrfs ͷ . . device treeɾCSum tree device tree Btrfs
ʹొ͞Ε͍ͯΔσόΠεͷཧ CSum tree 4KB ͝ͱͷ checksum 2013-06-14 35 / 51
Btrfs ͷ . . ୳ͯ͠ΈΑ͏ 2013-06-14 36 / 51
bootstrap Btrfs ͷ tree ϑΝΠϧશͯ extent address(ཧΞυϨε) ͰΞΫ ηε Root
tree extent address ͰΞΫηε͞ΕΔ chunk tree ࣗ Ͳ͏ͬͯ࠷ॳͷ extent address ΛཧΞυϨεʹϚοϐϯά͢ Δͷ? 2013-06-14 37 / 51
bootstrap . . superblock btrfs Ͱ།ҰཧతʹΞυϨε͕ܾ·͍ͬͯΔ ύʔςΟγϣϯ ઌ಄͔Β 6410KiB, 6410MiB,
25610GiB, 1PiB root ͷ extent address root tree chunk tree system chunk ͷ chunk ใ chunk tree ͷϊʔυ, Ϧʔϑ system chunk ͔ΒׂΓͯΒΕΔ 2013-06-14 38 / 51
bootstrap . . system chunk 2013-06-14 39 / 51
bootstrap 2013-06-14 40 / 51
࠷ۙͷ͜ͱ ࠷ޙʹ͜ͷ 1 ݄͙Β͍;Έ·ͬͯ͘Δ assert ʹ͍ͭͯ͠·͢ 2013-06-14 41 / 51
࠷ۙͷ͜ͱ . . dump [42604.796633] BTRFS assertion failed: !memcmp_extent_buffer( b,
&disk_key, offsetof(struct btrfs_leaf, items[0].key), sizeof(disk_key)), file: fs/btrfs/ctree.c, line: 2444 2013-06-14 42 / 51
࠷ۙͷ͜ͱ . . Ωʔ୳ࡧͷ࠷దԽ 2013-06-14 43 / 51
࠷ۙͷ͜ͱ . . snapshot aware defrag 2013-06-14 44 / 51
࠷ۙͷ͜ͱ 2013-06-14 45 / 51
࠷ۙͷ͜ͱ . . tree mod log B-tree ͷมߋ࣌ʹมߋલʹͲ͏͍͏͕ೖ͍͔ͬͯͨΛه transaction ͝ͱʹϦηοτ͞ΕΔ
ϝϞϦ্͚ͩͰσΟεΫʹॻ͔Εͳ͍ ͜ΕͰʮੲͷ B-treeʯΛͱΓ͕ͩͦ͢Ε͕όάͬͯΔ? 2013-06-14 46 / 51
࠷ۙͷ͜ͱ . . ݪҼʜͳΜͰͩΖ͏? 2013-06-14 47 / 51
࠷ۙͷ͜ͱ ·͋ͱΓ͋͑ͣʮࣗಈσϑϥάʯ͓͚ͬͯ (σϑΥϧτ:Φϑ) ͍͍ͱ ࢥ͏Α? 2013-06-14 48 / 51
࠷ۙͷ͜ͱ . . ͓͠·͍ 2013-06-14 49 / 51
ϦϯΫ . . ࢀߟจݙ https://btrfs.wiki.kernel.org/ https://events.linuxfoundation.org/sites/events/files/ slides/LinuxCon_2013_NA_Eckermann_Filesystems_btrfs.pdf http://people.redhat.com/lczerner/files/btrfs_lczerner.pdf https://www.usenix.org/legacy/event/lsf07/tech/rodeh.pdf 2013-06-14
50 / 51
ϦϯΫ . . ը૾ http://www.flickr.com/photos/artofphotography-ramsner/9592744354 http://www.flickr.com/photos/surferbill/2506950772/ http://www.flickr.com/photos/rore/1304728223/ http://ja.wikipedia.org/wiki/ %E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB: Binary_search_tree.svg
http://www.flickr.com/photos/protohiro/85504626/ http://www.flickr.com/photos/rubyji/74176893/ http://www.flickr.com/photos/rore/1304728223/ http://www.flickr.com/photos/dolfiedream/5060030894/ 2013-06-14 51 / 51
More Decks by naota
See All by naota
btrfs領域管理一代記
naota
2
1.3k
ファイルシステムの歴史: ジャーナリング編
naota
2
1.1k
DockerでGentooのテスト
naota
3
1.9k
Btrfsのころしかた(だったもの)
naota
0
1.2k
Other Decks in Programming
See All in Programming
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
250
AI-Powered Domain-Driven Design
ziobrando
0
440
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.3k
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.5k
止まらない比較を止める — 余帰納法で無限ストリームを比べる
tarao
0
140
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
310
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
310
Spec-driven Development with AI
simas
PRO
0
2.3k
Distance field of Julia set
kinakomoti321
0
320
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
Become a Pro
speakerdeck
PRO
31
6.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
750
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Designing for humans not robots
tammielis
254
26k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Writing Fast Ruby
sferik
630
63k
Darren the Foodie - Storyboard
khoart
PRO
5
4.1k
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
Building Applications with DynamoDB
mza
96
7.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
460