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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ファイルシステムの歴史: ジャーナリング編
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
naota
February 14, 2015
Technology
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ファイルシステムの歴史: ジャーナリング編
naota
February 14, 2015
More Decks by naota
See All by naota
btrfs領域管理一代記
naota
2
1.2k
DockerでGentooのテスト
naota
3
1.9k
Btrfsのころしかた(だったもの)
naota
0
1.1k
Btrfsの構造
naota
5
2.9k
Other Decks in Technology
See All in Technology
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
230
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
560
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
170
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.4k
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
130
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
3
170
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
110
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.8k
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
280
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
130
ASTを使って影響範囲を特定する
nealle
0
120
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
340
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
870
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
How to make the Groovebox
asonas
2
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Become a Pro
speakerdeck
PRO
31
6.2k
Transcript
ϑΝΠϧγεςϜͷྺ࢙: δϟʔ φϦϯάฤ Naohiro Aota (@naota344)
ࣗݾհ ໊લ: ੨ాେ ͓͋ͨͳ͓ͻΖ @naota344 ܚጯٛक़େֶͰϑΝΠϧγεςϜͷݚڀ Gentoo ίϛολ झຯ: FS
Λյͨ͠ਓͷإ͕ݟ͍ͨ
࠷ۙͷ͜ͱ: btrfsck Λ͔͚ͯͨ
ࡢ btrfsck ͷதͷਓ͔ Βϝʔϧ͕དྷͨ
ࡢ btrfsck ͷதͷਓ͔ Βϝʔϧ͕དྷͨ ۙ patch ͕ߘ༧ఆ! ͩͦ͏Ͱ͢
ຊͷ͓ δϟʔφϦϯάͷྺ࢙
δϟʔφϦϯά ͖ͯͱʔʹ FS ʹॻ͘ͱ FS յΕΔ Ұ؏ੑΛ࣋ͬͯॻ͖͘มߋ͕த్ʹͳͬ ͯյΕΔ δϟʔφϦϯά ҰδϟʔφϧྖҬʹ͜Ε͔Βॻ͘༰Λࣄલ
ʹॻ͘ δϟʔφϧॻ͖ऴΘΔ -> ຊମʹॻ͖͜Έ ్தͰࢮΜͰେৎ ͍ΘΏΔ write-ahead-logging
δϟʔφϦϯάॳग़ Reimplementing the Cedar file system using logging and group
commit Robert Hagmann Xerox PARC 1987 Dorado, Dandelion ্Ͱಈ͍͍ͯͨ Cedar Λ Dragon ʹҠ২͢Δʹ͋ͨͬͯʮδϟʔφϦϯάʯ ͕Ճ͞Εͨ
Cedar, Dorado, Dandelion, Dragon Cedar ϓϩάϥϛϯάݴޠͷ໊લ ͔ͭ, Cedar ͕ಈ࡞͢Δʮϓϩάϥϛϯάڥʯ ͷ໊લ
Dorado, Dandelion D-Machine, Lisp Ϛγϯ Dorado 24bit ͱ͍͏ large virtual address space 1024x808 ͷ large Ͱ high-resolution ͳനࠇσΟε ϓϨΠ ࠷େ 32MB ͷཧσΟεΫ
લδϟʔφϦϯά࣌: TridentσΟε Ϋ Dorado, Dandelion Trident σΟεΫΛ༻ http://www.computerhistory.org/ collections/catalog/102681543
Image courtesy of Computer History Museum
TridentσΟεΫ Trident disk for the Alto (1979) Trident σΟεΫͷඪ४తͳϑΥʔϚοτ͕ॻ͍ ͍ͯΔ
֤τϥοΫ (10080 words) = 9 ηΫλ x 1120 words ηΫλ͕ 3 ͭͷ෦ʹ͚ΒΕΔ ϔομ (2 words) ͦͷηΫλͷσΟεΫΞυϨε͕ॻ͍ͯ͋Δ ίϯτϩʔϥ͕ݕࠪ͢Δ ϥϕϧ (10 words) store file dependent information σʔλຊମ (1024 words) ֤ηΫλʹʮϥϕϧʯ͕͚ΒΕΔ
δϟʔφϦϯάҎલͷCedar File Name Table B-tree FS ্ͷશͯͷ file ͷ໊લͱ
header ใΛอ࣋ ϥϕϧΛ༻͍ͨҰ؏ੑอূ uid, page number page type (header, free, data) ͕ه͞ΕΔ
FSD (File System for Dragon)
ͦͷଞ ࠓ FS յΕͯͳ͍͚Ͳɺ εϥΠυॻ ͨ͘Ίͷ Emacs ͕ SEGV Ͱىಈ͠ͳ
͔ͬͨΓɺԿ࿈ଧͯͨ͠Βٸʹىಈ ͯ͠Έ͍ͨͳײ͡ʹͳΓ·ͨ͠
ͳΜͰ? emacs/src/xfns.c XGetICValues X ͷ input context ͷใͱͬͯ͘Δ Τϥʔͩͱ࠷ॳͷͱΕͳ͔ͬͨଐੑ໊͕ฦΔ attr
= XVaCreateNestedList (0, XNAreaNeeded, &needed, NULL); XGetICValues (xic, XNStatusAttributes, attr, NULL); XFree (attr); if (needed->width == 0) { attr = XVaCreateNestedList (0, XNArea, &needed, NULL); XGetICValues (xic, XNStatusAttributes, attr, NULL); XFree (attr); } ʜ XFree (needed); <- ͜͜ͰࢮΜͰΔ
ͦΓΎʔ͠ΐΜ ͳΜͰଐੑऔಘΤϥʔʹͳͬͯͨ? imsettings ͷ͍ͤͬΆ͍: imsettings = ͍ΖΜͳ IM ͷڞ௨ϨΠϠʹ͓Ε͕ͳΔ! uim
ͱ͔ fcitx Λಈతʹม͑ΒΕΔͥ! ͦΓΎʔ͠ΐΜ XMODIFIERS=@im=fcitx emacs XMODIFIERS= emacs
·ͱΊ δϟʔφϦϯάͷΛੲ͔Βࠓ·Ͱͬ͘͞ͱ ͨ͠ imsettings ͩΊͩ