स्टोरेज की हमेशा से वही तीन दुश्मन रहे हैं: झूठ बोलने वाली डिस्क, अधूरे लिखे गए डेटा, और अपडेट के बीच में होने वाले क्रैश। ZFS इनसे निपटने के लिए कुछ मूल विचारों का सहारा लेता है, और Uberblok, एक अनुभवी स्टोरेज इंजीनियर द्वारा बनाया गया इंटरैक्टिव संग्रहालय, इन विचारों को एक-एक कक्ष करके दिखाता है, सीधे उस कोड से लेकर जो इन्हें लागू करता है। हर एनिमेशन Open ZFS zfs-2.4.4 की कोड पंक्तियों से जुड़ा है, जो commit 71a9f9578616 पर स्थिर है, और हर कोड अंश स्रोत कोड से लिंक है। लेखक ZFS को इस क्षेत्र की सबसे प्रभावशाली इंजीनियरिंग मानते हैं। उन्होंने इस परियोजना को उसे श्रद्धांजलि देने और उसके इंटरनल्स को बेहतर समझने के लिए बनाया है, और कोड को बेहतर जानने वाले पाठकों के सुधारों का स्वागत करते हैं।
संग्रहालय का आरंभ 'हॉल' से होता है, जहाँ uberblock है, वह छोटा रिकॉर्ड जो पूरे pool की जड़ का नाम बताता है। इसमें एक transaction group संख्या, ub_txg, और एक block pointer, ub_rootbp, होता है, जिससे बाकी हर block तक पहुँचा जा सकता है। हर डिस्क पर चार labels होते हैं, और हर label में 128 KiB का uberblock ring होता है। नया uberblock पिछले को कभी overwrite नहीं करता; वह N mod slots संख्या वाले slot में लिखा जाता है। Import के समय ZFS हर slot पढ़ता है और सबसे अधिक txg वाला वैध uberblock रखता है।
अगले कक्षों में परियोजना का इतिहास, tree, और यह कि copy-on-write, checksums और self-healing बिना fsck के pool को कैसे सुसंगत रखते हैं, शामिल हैं। साथ ही transaction groups की open, quiescing और syncing अवस्थाएँ, और vdev की संरचना, जिसमें mirror, raidz, draid, log, cache और special devices आते हैं। संग्रहालय RAID-Z, snapshots, ARC, metaslabs, ZIL और send/receive को भी एनिमेटेड आरेखों के साथ समझाता है।
यह परियोजना uberblok.storagebits.workers.dev पर उपलब्ध है और इसका स्रोत GitHub पर algotitanhq/uberblok में है।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित