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
Btrfsの構造
Search
naota
October 19, 2013
Programming
2.9k
5
Share
Btrfsの構造
naota
October 19, 2013
More Decks by naota
See All by naota
btrfs領域管理一代記
naota
2
1.2k
ファイルシステムの歴史: ジャーナリング編
naota
2
1.1k
DockerでGentooのテスト
naota
3
1.9k
Btrfsのころしかた(だったもの)
naota
0
1.1k
Other Decks in Programming
See All in Programming
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
2
370
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.9k
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
430
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
460
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
4
530
Agent Skills を社内で育てる仕組み作り
jackchuka
1
2.2k
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
2
210
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
580
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
3.2k
SkillsをS3 Filesに置く時のあれこれ
watany
3
1.7k
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
120
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
1
160
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Faster Mobile Websites
deanohume
310
31k
Leo the Paperboy
mayatellez
7
1.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Typedesign – Prime Four
hannesfritz
42
3k
The Curse of the Amulet
leimatthew05
1
12k
Believing is Seeing
oripsolob
1
130
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
150
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
190
Mind Mapping
helmedeiros
PRO
1
190
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
120
Transcript
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