
{
    "version": "https://jsonfeed.org/version/1.1",
    "title": "Blog on Leo's Technical Log",
    "description": "Recent content in Blog on Leo's Technical Log",
    "home_page_url": "https://jksoftcn.com/",
    "feed_url": "https://jksoftcn.com/en/blog/index.json",
    "language": "en",
    "icon": "https://jksoftcn.com/apple-touch-icon.png",
    "favicon": "https://jksoftcn.com/apple-touch-icon.png",
    "authors": [
        {
            "name": "Leo",
            "url": "https://jksoftcn.com/about/",
            "avatar": "https://jksoftcn.com/path/to/some-image.jpg"
        }
    ],
    "items": [
        {
            "title": "My Honest Thoughts on Mice and Keyboards After All These Years",
            "date_published": "2025-12-20T00:00:00Z",
            "date_modified": "2025-12-20T00:00:00Z",
            "id": "https://jksoftcn.com/en/blog/thoughts-on-mouse-and-keyboard/",
            "url": "https://jksoftcn.com/en/blog/thoughts-on-mouse-and-keyboard/",
            "content_html": "\u003cp\u003eThis is not a review, nor a buying guide.\u003c/p\u003e\n\u003cp\u003eIt’s a collection of personal conclusions I’ve reached \u003cstrong\u003eafter falling into more than enough rabbit holes\u003c/strong\u003e, as a programmer who spends a large portion of each day behind a keyboard and mouse.\u003c/p\u003e\n\u003cp\u003eThese conclusions may not fit everyone. But if you, like me:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse a computer for long hours every day\u003c/li\u003e\n\u003cli\u003eSwitch frequently between macOS and Windows\u003c/li\u003e\n\u003cli\u003eDon’t want to waste time on pointless tinkering\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThen this article might help you \u003cstrong\u003espend less money and avoid unnecessary detours\u003c/strong\u003e.\u003c/p\u003e\n\u003ch2 id=\"a-premise-worth-stating-up-front\"\u003eA Premise Worth Stating Up Front\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e99% of electronic products have no collectible value.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eKeyboards and mice are no exception.\u003cbr\u003e\nThey age. They depreciate. They get replaced by better options.\u003c/p\u003e\n\u003cp\u003eIf a device already feels uncomfortable or awkward to use,\u003cbr\u003e\ndon’t justify it with “nostalgia,” “habit,” or “I’ll adapt eventually.”\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSell it early. Cutting your losses is already a win.\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"my-core-views-on-keyboards\"\u003eMy Core Views on Keyboards\u003c/h2\u003e\n\u003ch3 id=\"1-typing-feel-comes-first-everything-else-is-secondary\"\u003e1. Typing Feel Comes First. Everything Else Is Secondary.\u003c/h3\u003e\n\u003cp\u003eMechanical, electrostatic capacitive, or membrane—it doesn’t matter.\u003c/p\u003e\n\u003cp\u003eWhat really matters is this:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eAre you willing to type on it for 8 hours a day?\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eSpecs, switch names, layout dogma—none of that survives long-term use.\u003c/p\u003e\n\u003ch3 id=\"2-multi-device-switching-matters-more-than-you-think\"\u003e2. Multi-Device Switching Matters More Than You Think\u003c/h3\u003e\n\u003cp\u003eIf you regularly switch between \u003cstrong\u003etwo or three computers\u003c/strong\u003e,\u003cbr\u003e\nthen connection stability and switching convenience matter far more than:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKeycap material\u003c/li\u003e\n\u003cli\u003eRGB lighting\u003c/li\u003e\n\u003cli\u003e“Custom” aesthetics\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"keyboard-types-i-actually-endorse-after-long-term-use\"\u003eKeyboard Types I Actually Endorse After Long-Term Use\u003c/h2\u003e\n\u003ch3 id=\"electrostatic-capacitive-only-niz-35g\"\u003eElectrostatic Capacitive: Only NIZ 35g\u003c/h3\u003e\n\u003cp\u003eThe \u003cstrong\u003eonly electrostatic capacitive keyboard\u003c/strong\u003e I personally认可 is the NIZ 35g.\u003c/p\u003e\n\u003cp\u003eThe reasons are straightforward:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConsistent typing feel that doesn’t stiffen significantly over time\u003c/li\u003e\n\u003cli\u003eSolid compatibility with both macOS and Windows\u003c/li\u003e\n\u003cli\u003eMulti-mode connectivity that actually works in daily use\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHHKB is hard to avoid in this category, but my conclusion is blunt:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIt’s more of a geek symbol than a long-term productivity tool.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMy own HHKB Pro BT:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHas noticeably stiffened over time\u003c/li\u003e\n\u003cli\u003eThe plastic case has started to yellow\u003c/li\u003e\n\u003cli\u003eResale value is far from impressive\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf your goal is simply to \u003cstrong\u003euse a keyboard well\u003c/strong\u003e,\u003cbr\u003e\nrather than tuning rubber domes, modding parts, or buying into belief systems,\u003cbr\u003e\nyou can safely skip the HHKB.\u003c/p\u003e\n\u003ch3 id=\"mechanical-keyboards-filco-minila-as-a-representative-example\"\u003eMechanical Keyboards: Filco Minila as a Representative Example\u003c/h3\u003e\n\u003cp\u003eThe Filco Minila was the first mechanical keyboard that truly satisfied me.\u003c/p\u003e\n\u003cp\u003eIt taught me one important lesson:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStability matters more than flair.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe solid feel brought by a steel plate\u003cbr\u003e\nis far more tangible than any switch specification on paper.\u003c/p\u003e\n\u003cp\u003eYes, the ABS keycaps shine over time—that’s one of its few drawbacks.\u003cbr\u003e\nBut it barely affects actual usability.\u003c/p\u003e\n\u003ch3 id=\"membrane-keyboards-only-mx-keys-is-worth-considering\"\u003eMembrane Keyboards: Only MX Keys Is Worth Considering\u003c/h3\u003e\n\u003cp\u003eIf you’re set on a membrane keyboard, my conclusion is simple:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eOnly look at MX Keys or MX Keys Mini. Ignore the rest.\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI’ve used the K950. It looks similar to MX Keys,\u003cbr\u003e\nbut build quality, reliability, and overall experience are clearly inferior.\u003c/p\u003e\n\u003cp\u003eMX Keys has its downsides:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe keys have a noticeable central concavity\u003c/li\u003e\n\u003cli\u003eSome users need time to adjust\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBut when it comes to \u003cstrong\u003estability, multi-device support, and minimal fuss\u003c/strong\u003e,\u003cbr\u003e\nit remains the best membrane keyboard available.\u003c/p\u003e\n\u003ch2 id=\"my-core-views-on-mice\"\u003eMy Core Views on Mice\u003c/h2\u003e\n\u003ch3 id=\"1-for-a-primary-mouse-ergonomics-are-non-negotiable\"\u003e1. For a Primary Mouse, Ergonomics Are Non-Negotiable\u003c/h3\u003e\n\u003cp\u003eIf you use a mouse more than 6 hours a day,\u003cbr\u003e\n\u003cstrong\u003eergonomics aren’t a bonus—they’re the baseline.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWrist, forearm, and shoulder strain\u003cbr\u003e\nwill catch up with you in a very honest way after a few years.\u003c/p\u003e\n\u003ch3 id=\"2-travel-mice-can-compromisebut-not-too-much\"\u003e2. Travel Mice Can Compromise—But Not Too Much\u003c/h3\u003e\n\u003cp\u003ePortability matters,\u003cbr\u003e\nbut “too light to grip” or “too small to support your hand”\u003cbr\u003e\nalso leads to fatigue.\u003c/p\u003e\n\u003ch2 id=\"mouse-types-i-actually-recommend\"\u003eMouse Types I Actually Recommend\u003c/h2\u003e\n\u003ch3 id=\"office-workhorse-mx-master-series\"\u003eOffice Workhorse: MX Master Series\u003c/h3\u003e\n\u003cp\u003eThe MX Master 3s is, in my view, the \u003cstrong\u003ebenchmark for office mice\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eIt’s not for gaming,\u003cbr\u003e\nbut in productivity scenarios it offers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eStable grip\u003c/li\u003e\n\u003cli\u003eMature feature set\u003c/li\u003e\n\u003cli\u003eSmooth multi-device switching\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIts main drawback is also well-known:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe rubber coating ages and becomes oily.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis affects nearly all mid-to-high-end Logitech mice,\u003cbr\u003e\nto the point where some users resort to 3D-printed shells.\u003c/p\u003e\n\u003ch3 id=\"ergonomics-focused-mx-vertical\"\u003eErgonomics-Focused: MX Vertical\u003c/h3\u003e\n\u003cp\u003eIf you’re already feeling wrist strain,\u003cbr\u003e\nMX Vertical is a \u003cstrong\u003eserious option worth considering\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eYou don’t need to “believe in ergonomics.”\u003cbr\u003e\nAfter a few days of use, the difference becomes obvious.\u003c/p\u003e\n\u003cp\u003eLogitech also has a vertical mouse called LIFT.\u003cbr\u003e\nUnless you have very small hands, it’s generally not worth considering.\u003c/p\u003e\n\u003ch3 id=\"lightweight-option-rog-keris-aimpoint\"\u003eLightweight Option: ROG Keris AimPoint\u003c/h3\u003e\n\u003cp\u003eThis type of mouse works well as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA mobile office mouse\u003c/li\u003e\n\u003cli\u003eA secondary or backup device\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIt’s lightweight and supports multi-device switching,\u003cbr\u003e\nbut for users with larger hands, it’s not ideal as a long-term primary mouse.\u003c/p\u003e\n\u003ch2 id=\"a-few-realities-about-logitech\"\u003eA Few Realities About Logitech\u003c/h2\u003e\n\u003ch3 id=\"unifying--logi-bolt-are-not-perfectly-stable\"\u003eUnifying / Logi Bolt Are Not “Perfectly Stable”\u003c/h3\u003e\n\u003cp\u003eIn theory, they’re more reliable than Bluetooth.\u003cbr\u003e\nIn reality:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIn environments crowded with wireless devices, interference happens to everyone.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWhen issues occur,\u003cbr\u003e\nthe most effective fix is still the oldest one:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTurn it off. Turn it back on.\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"gaming-mice--good-office-mice\"\u003eGaming Mice ≠ Good Office Mice\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLow-end models are not recommended\u003c/li\u003e\n\u003cli\u003eMid-range models are usable, but imperfect\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThey often suffer from:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWorse battery life compared to office-focused lines\u003c/li\u003e\n\u003cli\u003eNo support for Unifying or Logi Bolt\u003c/li\u003e\n\u003cli\u003eAverage micro-switch reliability, with no easy replacement\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"final-takeaway\"\u003eFinal Takeaway\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDon’t mythologize keyboards or mice.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThey are tools, not beliefs.\u003cbr\u003e\nOnly three things really matter:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDo you feel fatigued after long use?\u003c/li\u003e\n\u003cli\u003eIs switching between devices smooth?\u003c/li\u003e\n\u003cli\u003eIf it breaks, does it hurt emotionally?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eIf the answers aren’t right,\u003cbr\u003e\nreplace it—and don’t hesitate.\u003c/p\u003e\n"
        },
        {
            "title": "Do You Really Need ZFS? A Practical Storage Guide for Home and Power Users",
            "date_published": "2025-12-01T00:00:00Z",
            "date_modified": "2025-12-01T00:00:00Z",
            "id": "https://jksoftcn.com/en/blog/00-do-you-need-to-use-zfs/",
            "url": "https://jksoftcn.com/en/blog/00-do-you-need-to-use-zfs/",
            "content_html": "\u003cdiv class=\"mermaid\"\u003e\r\ngraph TD\r\n    Start[Start Choosing a Storage Solution] --\u003e Q1{Is your total data\u003cbr/\u003eunder 4TB?}\r\n    \r\n    Q1 --\u003e|Yes| Q2{Do multiple devices\u003cbr/\u003eneed access?}\r\n    Q1 --\u003e|No| Q3{Is your budget\u003cbr/\u003eover ~$400?}\r\n    \r\n    Q2 --\u003e|No| Q2a{Do you want\u003cbr/\u003eautomatic backups?}\r\n    Q2 --\u003e|Yes| NAS1[2-bay entry NAS\u003cbr/\u003eSynology / QNAP\u003cbr/\u003eBuilt-in filesystem]\r\n    \r\n    Q2a --\u003e|No| HDD[External drive\u003cbr/\u003eCheapest \u0026 simplest\u003cbr/\u003eManual backups]\r\n    Q2a --\u003e|Yes| NAS1\r\n    \r\n    Q3 --\u003e|No| HDD\r\n    Q3 --\u003e|Yes| Q4{Linux experience?}\r\n    \r\n    Q4 --\u003e|No| NAS2[4-bay prebuilt NAS\u003cbr/\u003eSynology / QNAP\u003cbr/\u003eRAID5 / SHR]\r\n    Q4 --\u003e|Yes| Q5{Willing to spend time\u003cbr/\u003elearning \u0026 maintaining?}\r\n    \r\n    Q5 --\u003e|No| NAS2\r\n    Q5 --\u003e|Yes| Q6{More than 20TB\u003cbr/\u003eof data?}\r\n    \r\n    Q6 --\u003e|No| Q7{Is maximum data\u003cbr/\u003eintegrity critical?}\r\n    Q6 --\u003e|Yes| Q8{Budget over ~$1,400?}\r\n    \r\n    Q7 --\u003e|No| Q7a{Less than\u003cbr/\u003e8GB RAM?}\r\n    Q7 --\u003e|Yes| Q7b{At least\u003cbr/\u003e16GB RAM?}\r\n    \r\n    Q7a --\u003e|Yes| MDADM1[mdadm RAID1/10\u003cbr/\u003eFlexible \u0026 cheap]\r\n    Q7a --\u003e|No| Q7b\r\n    \r\n    Q7b --\u003e|No| MDADM1\r\n    Q7b --\u003e|Yes| ZFS1[ZFS on Linux / TrueNAS\u003cbr/\u003eChecksums \u0026 snapshots]\r\n    \r\n    Q8 --\u003e|No| Q9{At least\u003cbr/\u003e32GB RAM?}\r\n    Q8 --\u003e|Yes| Q10{High random I/O\u003cbr/\u003eperformance needed?}\r\n    \r\n    Q9 --\u003e|No| MDADM2[mdadm RAID6/10\u003cbr/\u003eLarge arrays]\r\n    Q9 --\u003e|Yes| ZFS2[ZFS RAIDZ2\u003cbr/\u003eLarge storage pools]\r\n    \r\n    Q10 --\u003e|Yes| HWRAID[Hardware RAID\u003cbr/\u003eBBU protected cache]\r\n    Q10 --\u003e|No| ZFS2\r\n\u003c/div\u003e\r\n\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eZFS has a reputation problem.\u003c/p\u003e\n\u003cp\u003eIn many tech communities, it is often portrayed as \u003cem\u003ethe\u003c/em\u003e \u0026ldquo;correct\u0026rdquo; way to store data—anything else is seen as risky or amateur. At the same time, seasoned admins warn that ZFS is complex, memory-hungry, and easy to misuse.\u003c/p\u003e\n\u003cp\u003eSo where does that leave ordinary users, home labbers, and small NAS builders?\u003c/p\u003e\n\u003cp\u003eThis article takes a pragmatic, experience-driven look at whether you actually need ZFS, and how to choose a storage solution that fits your data size, budget, and willingness to maintain it.\u003c/p\u003e\n\u003ch2 id=\"1-external-drives-vs-nas-start-simple\"\u003e1. External Drives vs NAS: Start Simple\u003c/h2\u003e\n\u003ch3 id=\"when-an-external-drive-is-enough\"\u003eWhen an External Drive Is Enough\u003c/h3\u003e\n\u003cp\u003eAn external hard drive is often dismissed as \u0026ldquo;too simple\u0026rdquo;, but for many people it is the \u003cem\u003eright\u003c/em\u003e answer.\u003c/p\u003e\n\u003cp\u003eExternal drives work well if:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYour total data is \u003cstrong\u003eunder 4TB\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eYou mainly back up \u003cstrong\u003eone machine\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eYou are on a \u003cstrong\u003etight budget\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eBackups are \u003cstrong\u003eoccasional\u003c/strong\u003e, not continuous\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor example, backing up a laptop with photos, documents, and personal files does not justify a NAS or RAID. A single 2–4TB external drive plus periodic backups is cheap, reliable, and easy to understand.\u003c/p\u003e\n\u003cp\u003eComplexity is a cost. Avoid it unless you truly need it.\u003c/p\u003e\n\u003ch3 id=\"when-a-nas-makes-sense\"\u003eWhen a NAS Makes Sense\u003c/h3\u003e\n\u003cp\u003eA NAS becomes attractive once your needs grow beyond a single device.\u003c/p\u003e\n\u003cp\u003eA NAS is a good fit if:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple devices need \u003cstrong\u003eshared access\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eYou want \u003cstrong\u003eautomatic, scheduled backups\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eServices must be \u003cstrong\u003eonline 24/7\u003c/strong\u003e (media server, downloads, remote access)\u003c/li\u003e\n\u003cli\u003eYour data volume is \u003cstrong\u003egrowing steadily\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEven a basic 2-bay NAS provides redundancy, convenience, and automation that external drives cannot match.\u003c/p\u003e\n\u003ch2 id=\"2-do-nas-users-need-zfs\"\u003e2. Do NAS Users Need ZFS?\u003c/h2\u003e\n\u003ch3 id=\"prebuilt-nas-usually-no\"\u003ePrebuilt NAS: Usually No\u003c/h3\u003e\n\u003cp\u003eIf you are using a commercial NAS (Synology, QNAP, etc.), \u003cstrong\u003eyou almost certainly do not need ZFS\u003c/strong\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSynology’s Btrfs implementation already provides snapshots and checksums\u003c/li\u003e\n\u003cli\u003eQNAP’s default filesystems are well-tested and supported\u003c/li\u003e\n\u003cli\u003eVendor GUIs, updates, and documentation matter more than filesystem purity\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInstalling ZFS on a prebuilt NAS usually adds risk and complexity without clear benefits.\u003c/p\u003e\n\u003ch3 id=\"self-built-nas-maybe\"\u003eSelf-Built NAS: Maybe\u003c/h3\u003e\n\u003cp\u003eZFS becomes interesting once you move into self-built systems.\u003c/p\u003e\n\u003cp\u003eZFS is worth considering if:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eData integrity truly matters\u003c/strong\u003e (irreplaceable photos, archives, work data)\u003c/li\u003e\n\u003cli\u003eYou understand concepts like pools, vdevs, datasets, and scrubs\u003c/li\u003e\n\u003cli\u003eYou have \u003cstrong\u003eenough RAM\u003c/strong\u003e (16GB minimum is realistic)\u003c/li\u003e\n\u003cli\u003eYour storage layout is \u003cstrong\u003eplanned long-term\u003c/strong\u003e, not constantly changing\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eZFS’s biggest strength is end-to-end checksumming and self-healing. Silent data corruption \u003cem\u003edoes\u003c/em\u003e happen—but whether it matters depends on your data.\u003c/p\u003e\n\u003ch3 id=\"a-reality-check-for-most-users\"\u003eA Reality Check for Most Users\u003c/h3\u003e\n\u003cp\u003eFor most home NAS users:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVendor filesystems are \u003cem\u003egood enough\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003eZFS features are underutilized\u003c/li\u003e\n\u003cli\u003eProper backups matter more than filesystem choice\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eZFS is powerful—but power only helps if you know how to use it.\u003c/p\u003e\n\u003ch2 id=\"3-when-does-a-linux-storage-server-make-sense\"\u003e3. When Does a Linux Storage Server Make Sense?\u003c/h2\u003e\n\u003cp\u003eSelf-built Linux storage is not about saving money—it is about control.\u003c/p\u003e\n\u003cp\u003eIt makes sense if:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou enjoy \u003cstrong\u003elearning and maintaining systems\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eYou already use Linux comfortably\u003c/li\u003e\n\u003cli\u003eYou need \u003cstrong\u003ecustom workloads\u003c/strong\u003e (VMs, containers, heavy media processing)\u003c/li\u003e\n\u003cli\u003eYour data exceeds \u003cstrong\u003e20TB\u003c/strong\u003e and keeps growing\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you value your time more than tinkering, a prebuilt NAS is still the better tool.\u003c/p\u003e\n\u003ch2 id=\"4-choosing-the-right-storage-technology\"\u003e4. Choosing the Right Storage Technology\u003c/h2\u003e\n\u003ch3 id=\"mdadm-simple-and-flexible\"\u003emdadm: Simple and Flexible\u003c/h3\u003e\n\u003cp\u003eLinux software RAID (mdadm) is often underrated.\u003c/p\u003e\n\u003cp\u003eIt works well when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBudgets are limited\u003c/li\u003e\n\u003cli\u003eArrays are small to medium (4–8 drives)\u003c/li\u003e\n\u003cli\u003eFlexibility matters more than elegance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImportant caveats\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRebuilds on large disks can take days\u003c/li\u003e\n\u003cli\u003eRAID5 is risky with modern drive sizes\u003c/li\u003e\n\u003cli\u003eA UPS is not optional\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRAID1 and RAID10 remain the safest mdadm choices.\u003c/p\u003e\n\u003ch3 id=\"hardware-raid-still-relevant\"\u003eHardware RAID: Still Relevant\u003c/h3\u003e\n\u003cp\u003eHardware RAID is unfashionable, but not obsolete.\u003c/p\u003e\n\u003cp\u003eIt excels when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRandom I/O performance is critical\u003c/li\u003e\n\u003cli\u003eArrays are large (8+ disks)\u003c/li\u003e\n\u003cli\u003eDowntime is unacceptable\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you go this route:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse reputable vendors (LSI/Broadcom)\u003c/li\u003e\n\u003cli\u003eEnsure cache protection (BBU or supercapacitor)\u003c/li\u003e\n\u003cli\u003eVerify OS and drive compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"zfs-powerful-opinionated-demanding\"\u003eZFS: Powerful, Opinionated, Demanding\u003c/h3\u003e\n\u003cp\u003eZFS shines when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eData integrity is non-negotiable\u003c/li\u003e\n\u003cli\u003eSnapshots and clones are core workflows\u003c/li\u003e\n\u003cli\u003ePlenty of RAM is available\u003c/li\u003e\n\u003cli\u003eThe system is designed upfront and left mostly unchanged\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eZFS struggles when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRAM is scarce (\u0026lt;8GB)\u003c/li\u003e\n\u003cli\u003eStorage layouts change frequently\u003c/li\u003e\n\u003cli\u003eHardware or power is unreliable\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eZFS rewards discipline—and punishes shortcuts.\u003c/p\u003e\n\u003ch2 id=\"5-high-level-comparison\"\u003e5. High-Level Comparison\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eSolution\u003c/th\u003e\n          \u003cth\u003ePerformance\u003c/th\u003e\n          \u003cth\u003eFlexibility\u003c/th\u003e\n          \u003cth\u003eReliability\u003c/th\u003e\n          \u003cth\u003eCost\u003c/th\u003e\n          \u003cth\u003eBest For\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003emdadm\u003c/td\u003e\n          \u003ctd\u003eMedium\u003c/td\u003e\n          \u003ctd\u003eHigh\u003c/td\u003e\n          \u003ctd\u003eMedium\u003c/td\u003e\n          \u003ctd\u003eLow\u003c/td\u003e\n          \u003ctd\u003eHome servers, small arrays\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHardware RAID\u003c/td\u003e\n          \u003ctd\u003eHigh\u003c/td\u003e\n          \u003ctd\u003eLow\u003c/td\u003e\n          \u003ctd\u003eHigh\u003c/td\u003e\n          \u003ctd\u003eHigh\u003c/td\u003e\n          \u003ctd\u003ePerformance-critical workloads\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eZFS\u003c/td\u003e\n          \u003ctd\u003eMedium–High\u003c/td\u003e\n          \u003ctd\u003eMedium\u003c/td\u003e\n          \u003ctd\u003eHigh\u003c/td\u003e\n          \u003ctd\u003eMedium\u003c/td\u003e\n          \u003ctd\u003eIntegrity-focused users\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"6-practical-recommendations\"\u003e6. Practical Recommendations\u003c/h2\u003e\n\u003ch3 id=\"a-sensible-upgrade-path\"\u003eA Sensible Upgrade Path\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eBeginner (\u0026lt;4TB)\u003c/strong\u003e\u003cbr\u003e\nExternal drive + manual backups\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIntermediate (4–12TB)\u003c/strong\u003e\u003cbr\u003e\n2–4 bay NAS with vendor filesystem\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAdvanced (\u0026gt;12TB, technical users)\u003c/strong\u003e\u003cbr\u003e\nSelf-built Linux server with ZFS or mdadm\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eProfessional (\u0026gt;50TB, critical data)\u003c/strong\u003e\u003cbr\u003e\nHardware RAID + enterprise drives + UPS + offsite backups\u003c/p\u003e\n\u003ch3 id=\"principles-that-actually-matter\"\u003ePrinciples That Actually Matter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBackups beat RAID\u003c/strong\u003e: RAID does not protect against deletion, malware, or disasters\u003c/li\u003e\n\u003cli\u003eFollow \u003cstrong\u003e3-2-1 backups\u003c/strong\u003e: 3 copies, 2 media types, 1 offsite\u003c/li\u003e\n\u003cli\u003eChoose systems you can \u003cstrong\u003emaintain long-term\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eSimpler systems fail less often\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"conclusion\"\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eMost people do \u003cstrong\u003enot\u003c/strong\u003e need ZFS.\u003c/p\u003e\n\u003cp\u003eThey need reliable hardware, boring configurations, and tested backups.\u003c/p\u003e\n\u003cp\u003eZFS is an excellent tool—when used for the right reasons, by users who understand its trade-offs. For everyone else, a simpler solution will be safer, cheaper, and easier to live with.\u003c/p\u003e\n\u003cp\u003eThe best storage system is not the most advanced one—it is the one you can keep running correctly for years.\u003c/p\u003e\n"
        },
        {
            "title": "ZFS Core Concepts and a Quick Start Guide",
            "date_published": "2025-11-30T00:00:00Z",
            "date_modified": "2025-11-30T00:00:00Z",
            "id": "https://jksoftcn.com/en/blog/01-zfs-core-concepts-and-quick-start/",
            "url": "https://jksoftcn.com/en/blog/01-zfs-core-concepts-and-quick-start/",
            "content_html": "\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eZFS (Zettabyte File System) is a revolutionary storage system originally developed by Sun Microsystems and now maintained by the OpenZFS community. Unlike traditional file systems, ZFS is not just a filesystem—it is a complete storage management solution that integrates volume management and filesystem functionality into a single coherent system.\u003c/p\u003e\n\u003cp\u003eIn this article, we’ll walk through the core concepts behind ZFS and get hands-on by creating our first ZFS storage pool on Linux.\u003c/p\u003e\n\u003ch2 id=\"what-is-zfs\"\u003eWhat Is ZFS?\u003c/h2\u003e\n\u003cp\u003eFirst released in 2005, ZFS was designed with an ambitious goal: to build a filesystem that would \u003cem\u003enever silently corrupt data\u003c/em\u003e. To achieve this, ZFS introduced a number of groundbreaking features, including Copy-on-Write (CoW), end-to-end checksumming, snapshots, and clones.\u003c/p\u003e\n\u003ch3 id=\"key-features-of-zfs\"\u003eKey Features of ZFS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eStrong data integrity guarantees\u003c/strong\u003e\nEvery data block is protected by a checksum, allowing ZFS to detect and even repair silent data corruption.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMassive scalability\u003c/strong\u003e\nTheoretical maximum storage capacity reaches 256 quadrillion zettabytes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSimplified administration\u003c/strong\u003e\nNo need for manual partitioning or traditional formatting workflows.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAdvanced built-in features\u003c/strong\u003e\nSnapshots, clones, compression, deduplication, and more.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFlexible RAID support\u003c/strong\u003e\nNative support for mirrors and RAID-Z configurations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"zfs-design-philosophy\"\u003eZFS Design Philosophy\u003c/h2\u003e\n\u003cp\u003eZFS stands out largely because of a few fundamental design principles.\u003c/p\u003e\n\u003ch3 id=\"1-end-to-end-data-integrity\"\u003e1. End-to-End Data Integrity\u003c/h3\u003e\n\u003cp\u003eZFS computes a checksum for every block of data and stores that checksum in the parent block rather than alongside the data itself. This design allows ZFS to detect corruption anywhere along the data path—whether caused by failing disks, faulty controllers, or firmware bugs.\u003c/p\u003e\n\u003cp\u003eIf redundancy is available, ZFS can automatically repair corrupted data without user intervention.\u003c/p\u003e\n\u003ch3 id=\"2-copy-on-write-cow\"\u003e2. Copy-on-Write (CoW)\u003c/h3\u003e\n\u003cp\u003eZFS never overwrites existing data. When data is modified, it is written to a new location, and only after the write succeeds are the metadata pointers updated.\u003c/p\u003e\n\u003cp\u003eThis approach provides several important benefits:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTransactional semantics that keep the filesystem always consistent\u003c/li\u003e\n\u003cli\u003eNear-zero-cost snapshots\u003c/li\u003e\n\u003cli\u003eElimination of the classic “write hole” problem\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"3-storage-pooling\"\u003e3. Storage Pooling\u003c/h3\u003e\n\u003cp\u003eZFS abstracts physical storage devices into a \u003cem\u003estorage pool\u003c/em\u003e. All filesystems draw space from this shared pool, removing the rigid constraints of traditional partition-based layouts.\u003c/p\u003e\n\u003cp\u003eFilesystems can grow dynamically as needed—no resizing or re-partitioning required.\u003c/p\u003e\n\u003ch3 id=\"4-simplified-management\"\u003e4. Simplified Management\u003c/h3\u003e\n\u003cp\u003eZFS embraces the idea that “everything belongs to the filesystem.” Tasks that traditionally require multiple tools (\u003ccode\u003efdisk\u003c/code\u003e, \u003ccode\u003emkfs\u003c/code\u003e, \u003ccode\u003elvm\u003c/code\u003e, etc.) can all be performed using a unified ZFS command set, significantly reducing operational complexity.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"core-concepts\"\u003eCore Concepts\u003c/h2\u003e\n\u003cp\u003eTo work effectively with ZFS, it’s essential to understand a few core abstractions.\u003c/p\u003e\n\u003ch3 id=\"storage-pools\"\u003eStorage Pools\u003c/h3\u003e\n\u003cp\u003eA \u003cem\u003estorage pool\u003c/em\u003e is the foundation of ZFS. It consists of one or more \u003cem\u003evirtual devices\u003c/em\u003e (vdevs) and represents a shared pool of storage capacity and I/O resources.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey characteristics:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePools can be expanded by adding new devices\u003c/li\u003e\n\u003cli\u003ePerformance depends on the layout and type of vdevs\u003c/li\u003e\n\u003cli\u003eAll filesystems in the pool share the same space and I/O bandwidth\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"virtual-devices-vdevs\"\u003eVirtual Devices (vdevs)\u003c/h3\u003e\n\u003cp\u003eA vdev is the basic building block of a ZFS pool. Common vdev types include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSingle disk\u003c/strong\u003e – simplest setup, no redundancy\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eMirror\u003c/strong\u003e – similar to RAID 1, full data replication\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRAID-Z\u003c/strong\u003e – ZFS-native RAID with parity\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRAID-Z1: single parity, tolerates 1 disk failure\u003c/li\u003e\n\u003cli\u003eRAID-Z2: double parity, tolerates 2 disk failures\u003c/li\u003e\n\u003cli\u003eRAID-Z3: triple parity, tolerates 3 disk failures\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eImportant:\u003c/strong\u003e Pool redundancy is determined by its vdevs. If any single vdev fails, the entire pool fails. For production systems, every vdev should provide adequate redundancy.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"datasets\"\u003eDatasets\u003c/h3\u003e\n\u003cp\u003eIn ZFS, \u003cem\u003edataset\u003c/em\u003e is a generic term that includes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFilesystems\u003c/strong\u003e – mountable directory trees\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVolumes (zvols)\u003c/strong\u003e – block devices, commonly used for VM disks\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSnapshots\u003c/strong\u003e – read-only point-in-time copies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClones\u003c/strong\u003e – writable copies created from snapshots\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDatasets are hierarchical and can inherit properties from their parent datasets.\u003c/p\u003e\n\u003ch3 id=\"properties\"\u003eProperties\u003c/h3\u003e\n\u003cp\u003eMany ZFS features are controlled via dataset properties, such as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecompression\u003c/code\u003e – lz4, gzip, zstd, etc.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003equota\u003c/code\u003e – space usage limits\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ereservation\u003c/code\u003e – guaranteed space\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eatime\u003c/code\u003e – access time updates\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecopies\u003c/code\u003e – number of data replicas\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eProperties can be set at any level and inherited by child datasets.\u003c/p\u003e\n\u003ch3 id=\"snapshots-and-clones\"\u003eSnapshots and Clones\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eSnapshots\u003c/strong\u003e are one of ZFS’s most powerful features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCreated almost instantly\u003c/li\u003e\n\u003cli\u003eConsume no space initially\u003c/li\u003e\n\u003cli\u003eOnly store changed data blocks\u003c/li\u003e\n\u003cli\u003eCan be rolled back or sent to another system\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eClones\u003c/strong\u003e are writable datasets created from snapshots:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitially share all data blocks with the snapshot\u003c/li\u003e\n\u003cli\u003eConsume additional space only for modified data\u003c/li\u003e\n\u003cli\u003eCan diverge independently over time\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"hands-on-installing-and-using-zfs-on-linux\"\u003eHands-On: Installing and Using ZFS on Linux\u003c/h2\u003e\n\u003cp\u003eLet’s install ZFS and create our first storage pool. The examples below use Ubuntu/Debian.\u003c/p\u003e\n\u003ch3 id=\"step-1-install-zfs\"\u003eStep 1: Install ZFS\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo apt update\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo apt install zfsutils-linux\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs version\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezpool version\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor CentOS/RHEL:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo yum install epel-release\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo yum install https://zfsonlinux.org/epel/zfs-release-2-2\u003cspan style=\"color:#66d9ef\"\u003e$(\u003c/span\u003erpm --eval \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;%{dist}\u0026#34;\u003c/span\u003e\u003cspan style=\"color:#66d9ef\"\u003e)\u003c/span\u003e.noarch.rpm\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo yum install kernel-devel zfs\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo modprobe zfs\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-2-prepare-disks\"\u003eStep 2: Prepare Disks\u003c/h3\u003e\n\u003cp\u003eIdentify available disks:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elsblk\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e Creating a ZFS pool will erase all data on the selected disks.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch3 id=\"step-3-create-your-first-pool\"\u003eStep 3: Create Your First Pool\u003c/h3\u003e\n\u003cp\u003eSingle-disk pool (not recommended for production):\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool create mypool /dev/sdb\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool status mypool\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-4-create-a-mirrored-pool-recommended\"\u003eStep 4: Create a Mirrored Pool (Recommended)\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool create mypool mirror /dev/sdb /dev/sdc\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-5-create-a-raid-z-pool\"\u003eStep 5: Create a RAID-Z Pool\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool create mypool raidz /dev/sdb /dev/sdc /dev/sdd\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-6-pool-management-commands\"\u003eStep 6: Pool Management Commands\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool list\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool status -v mypool\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool iostat mypool \u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool get all mypool\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-7-create-filesystems\"\u003eStep 7: Create Filesystems\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs create mypool/data\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs create mypool/data/projects\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs list\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSet custom mountpoints:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs set mountpoint\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e/mnt/mydata mypool/data\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-8-common-property-settings\"\u003eStep 8: Common Property Settings\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs set compression\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003elz4 mypool/data\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs set atime\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eoff mypool/data\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs set quota\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e10G mypool/data\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-9-working-with-snapshots\"\u003eStep 9: Working with Snapshots\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs snapshot mypool/data@backup-2024-11-28\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs list -t snapshot\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs rollback mypool/data@backup-2024-11-28\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zfs destroy mypool/data@backup-2024-11-28\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"step-10-monitoring-and-maintenance\"\u003eStep 10: Monitoring and Maintenance\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool scrub mypool\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool status mypool\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo zpool history mypool\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"practical-tips\"\u003ePractical Tips\u003c/h2\u003e\n\u003ch3 id=\"automated-snapshots\"\u003eAutomated Snapshots\u003c/h3\u003e\n\u003cp\u003eUse cron to create daily snapshots and clean up old ones.\u003c/p\u003e\n\u003ch3 id=\"zfs-sendreceive-for-backups\"\u003eZFS Send/Receive for Backups\u003c/h3\u003e\n\u003cp\u003eEfficient full and incremental replication between systems using \u003ccode\u003ezfs send\u003c/code\u003e and \u003ccode\u003ezfs receive\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"performance-tuning\"\u003ePerformance Tuning\u003c/h3\u003e\n\u003cp\u003eAdjust ARC size and monitor cache efficiency via \u003ccode\u003e/proc/spl/kstat/zfs/arcstats\u003c/code\u003e.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"frequently-asked-questions\"\u003eFrequently Asked Questions\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eCan disks be removed from a ZFS pool?\u003c/strong\u003e\nNot directly. Mirrors can be detached, but RAID-Z pools must be rebuilt.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow do I expand a pool?\u003c/strong\u003e\nAdd new vdevs using \u003ccode\u003ezpool add\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIs ZFS fast?\u003c/strong\u003e\nYes—especially with sufficient RAM. A common guideline is 1 GB RAM per TB of storage.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDoes ZFS support encryption?\u003c/strong\u003e\nYes. Native encryption is supported at the dataset level.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"conclusion\"\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eZFS is a powerful and reliable storage platform that seamlessly combines volume management and filesystem functionality. While it introduces several new concepts, its core ideas are straightforward: pooled storage, copy-on-write, and end-to-end data integrity.\u003c/p\u003e\n\u003cp\u003eBy following this guide, you’ve learned how to create pools, filesystems, and snapshots, and how to manage a basic ZFS setup. From here, you can explore advanced features such as replication, encryption, and deduplication.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBest practices to remember:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlways use redundancy in production\u003c/li\u003e\n\u003cli\u003eRun regular scrubs\u003c/li\u003e\n\u003cli\u003eMake extensive use of snapshots\u003c/li\u003e\n\u003cli\u003eProvision enough memory for optimal performance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHappy hacking with ZFS 🚀\u003c/p\u003e\n"
        }
        ]
}
