{"id":13350,"date":"2025-12-15T17:02:23","date_gmt":"2025-12-15T11:32:23","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=13350"},"modified":"2025-12-16T15:03:13","modified_gmt":"2025-12-16T09:33:13","slug":"how-to-setup-zfs-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/how-to-setup-zfs-on-linux-server","title":{"rendered":"How to Setup ZFS on Linux Server &#8211; Easy Guide"},"content":{"rendered":"\n<p>To set up ZFS on a Linux server, install the OpenZFS packages, load the zfs kernel module, plan your pool layout (mirror or RAIDZ), create the pool using \/dev\/disk\/by-id devices with ashift=12, enable lz4 compression, then create datasets, snapshots, scrubs, and alerts. This guide provides step-by-step commands for Ubuntu, Debian, and RHEL-family systems.<\/p>\n\n\n\n<p>In this beginner-friendly guide on how to setup ZFS on Linux Server, you\u2019ll learn installation, pool design, datasets, snapshots, replication, monitoring, and performance tuning backed by real-world hosting experience. Whether you\u2019re building a home NAS or a production VM host, the steps below ensure a fast, resilient OpenZFS deployment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-zfs-and-why-use-it-on-linux\"><strong>What Is ZFS and Why Use It on Linux?<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2848\" height=\"1600\" src=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-76.png\" alt=\"What Is ZFS and Why Use It on Linux?\" class=\"wp-image-13521\" srcset=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-76.png 2848w, https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-76-150x84.png 150w\" sizes=\"auto, (max-width: 2848px) 100vw, 2848px\" \/><\/figure>\n\n\n\n<p>ZFS (OpenZFS on Linux) is a copy-on-write filesystem and volume manager with checksummed data integrity, flexible RAID (mirror\/RAIDZ), snapshots, compression, and built-in replication. It\u2019s popular for servers, NAS, containers, and virtualization because it simplifies storage while boosting reliability and performance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites-and-best-practices-before-you-install\"><strong>Prerequisites and Best Practices (Before You Install)<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>64-bit Linux: Ubuntu 22.04\/24.04, Debian 12, Rocky\/Alma\/RHEL 8\/9.<\/li>\n\n\n\n<li>Root or sudo access; stable kernel; updated packages.<\/li>\n\n\n\n<li>Disks of the same size and type. Prefer HBA\/JBOD over hardware RAID.<\/li>\n\n\n\n<li>Use device IDs: \/dev\/disk\/by-id for stable disk mapping.<\/li>\n\n\n\n<li>Set ashift=12 (4K sectors) for modern HDDs\/NVMe\/SSD.<\/li>\n\n\n\n<li>ECC RAM recommended for critical data; minimum 8 GB RAM, 16+ GB preferred.<\/li>\n\n\n\n<li>UPS for safe power loss handling (especially if using SLOG).<\/li>\n<\/ul>\n\n\n\n<p>Tip: Don\u2019t overfill ZFS. Keep pool usage below ~80% to avoid fragmentation and write amplification.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-zfs-on-ubuntu-and-debian\"><strong>Install ZFS on Ubuntu and Debian<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ubuntu-22-04-24-04-and-newer\"><strong>Ubuntu 22.04\/24.04 (and newer)<\/strong><\/h3>\n\n\n\n<p>Ubuntu ships OpenZFS in the default repos and kernel. <a href=\"https:\/\/www.youstable.com\/blog\/install-load-balancer-on-linux\/\">Install and load<\/a> the module:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install -y zfsutils-linux\nsudo modprobe zfs\nzfs --version\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"debian-12-bookworm\"><strong>Debian 12 (Bookworm)<\/strong><\/h3>\n\n\n\n<p>Enable contrib and install DKMS-based OpenZFS packages:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install -y dkms linux-headers-$(uname -r) zfs-dkms zfsutils-linux\nsudo modprobe zfs\nzfs --version\n<\/code><\/pre>\n\n\n\n<p>If you see build prompts, allow DKMS to compile the ZFS module for your kernel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-zfs-on-rhel-almalinux-and-rocky-linux\"><strong>Install ZFS on RHEL, AlmaLinux, and Rocky Linux<\/strong><\/h2>\n\n\n\n<p>Use the OpenZFS repository for EL-based distros, then install zfs and load the module:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># For EL8\/EL9 (AlmaLinux\/Rocky\/RHEL), install the OpenZFS repo:\nsudo dnf install -y https:\/\/zfsonlinux.org\/epel\/zfs-release.el9.noarch.rpm  # use el8 for EL8\n\n# Install build dependencies and ZFS\nsudo dnf install -y kernel-devel kernel-headers\nsudo dnf install -y zfs\n\n# Load and verify\nsudo modprobe zfs\nzfs --version\n<\/code><\/pre>\n\n\n\n<p>If your kernel updates, DKMS may rebuild ZFS automatically. Reboot if required.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"plan-your-zfs-pool-layout-mirror-vs-raidz\"><strong>Plan Your ZFS Pool Layout (Mirror vs RAIDZ)<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mirror (2-way or 3-way): Fast reads, simple recovery, easy expansion. Best for virtualization and databases.<\/li>\n\n\n\n<li>RAIDZ1 (single parity): Capacity-focused; avoid with very large disks due to rebuild risk.<\/li>\n\n\n\n<li>RAIDZ2 (dual parity): Safer for modern large HDDs; solid balance of capacity and protection.<\/li>\n\n\n\n<li>RAIDZ3 (triple parity): For very large arrays or critical data sets.<\/li>\n<\/ul>\n\n\n\n<p>Choose vdevs carefully: the pool\u2019s performance and redundancy are defined by its vdevs. You can add more vdevs later, but you cannot change a vdev\u2019s RAID level after creation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-a-zfs-pool-step-by-step\"><strong>Create a ZFS Pool (Step-by-Step)<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"identify-disks-safely\"><strong>Identify Disks Safely<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l \/dev\/disk\/by-id\n# Example output: ... ata-ST8000DM004_ZZZ ... nvme-Samsung_SSD_970_EVO_ABC\n<\/code><\/pre>\n\n\n\n<p>Use \/dev\/disk\/by-id names for stability across reboots; avoid raw \/dev\/sdX.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-a-mirror-pool-example-two-ssds\"><strong>Create a Mirror Pool (example: two SSDs)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo zpool create -o ashift=12 \\\n  -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posixacl \\\n  tank mirror \\\n  \/dev\/disk\/by-id\/nvme-Samsung_SSD_970_EVO_ABC \\\n  \/dev\/disk\/by-id\/nvme-Samsung_SSD_970_EVO_DEF\n\n# Verify\nzpool status tank\nzfs list\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-a-raidz2-pool-example-six-hdds\"><strong>Create a RAIDZ2 Pool (example: six HDDs)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo zpool create -o ashift=12 \\\n  -O compression=lz4 -O atime=off -O xattr=sa \\\n  bulk raidz2 \\\n  \/dev\/disk\/by-id\/ata-ST8000DM004_1 \/dev\/disk\/by-id\/ata-ST8000DM004_2 \\\n  \/dev\/disk\/by-id\/ata-ST8000DM004_3 \/dev\/disk\/by-id\/ata-ST8000DM004_4 \\\n  \/dev\/disk\/by-id\/ata-ST8000DM004_5 \/dev\/disk\/by-id\/ata-ST8000DM004_6\n\n# Enable autotrim and health checks\nsudo zpool set autotrim=on bulk\nsudo zpool status bulk\n<\/code><\/pre>\n\n\n\n<p>ZFS will auto-mount at \/bulk or \/tank by default. You can set a custom mountpoint later.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-datasets-and-tune-properties\"><strong>Create Datasets and Tune Properties<\/strong><\/h2>\n\n\n\n<p>Datasets provide per-folder policies for compression, quotas, and recordsize. Use them to isolate workloads and simplify snapshots.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Generic dataset\nsudo zfs create -o mountpoint=\/srv\/data tank\/data\n\n# Workload-aware tuning\nsudo zfs create -o recordsize=1M tank\/media       # Large files (videos, backups)\nsudo zfs create -o recordsize=128K tank\/containers # Docker images, general use\nsudo zfs create -o recordsize=16K tank\/vm          # VM images \/ databases\n\n# Global toggles\nsudo zfs set compression=lz4 tank\nsudo zfs set atime=off tank\n\n# Quotas &amp; reservations\nsudo zfs set quota=500G tank\/data\nsudo zfs set reservation=100G tank\/vm\n<\/code><\/pre>\n\n\n\n<p>Deduplication is memory-intensive and risky without ample RAM; only enable if you\u2019ve measured strong benefits for your specific workload.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-native-encryption-optional\"><strong>Enable Native Encryption (Optional)<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Create an encrypted dataset\nsudo zfs create -o encryption=aes-256-gcm -o keyformat=passphrase tank\/secure\n\n# Unlock and mount when needed\nsudo zfs load-key tank\/secure\nsudo zfs mount tank\/secure\n<\/code><\/pre>\n\n\n\n<p>Store <a href=\"https:\/\/www.youstable.com\/blog\/ssh-keys-vs-password-authentication\/\">keys securely<\/a>. For unattended boots, consider keyfiles with strict permissions on an encrypted root or remote key delivery.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"snapshots-clones-and-replication\"><strong>Snapshots, Clones, and Replication<\/strong><\/h2>\n\n\n\n<p>Snapshots are instant, space-efficient restore points. Replication uses zfs send | zfs receive to copy snapshots locally or to remote servers.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create and list snapshots\nsudo zfs snapshot tank\/data@daily-$(date +%F)\nzfs list -t snapshot\n\n# Replicate to a remote host named \"backup\"\nsudo zfs send -vP tank\/data@daily-$(date +%F) | <a href=\"https:\/\/www.youstable.com\/blog\/how-to-configure-ssh-backup-via-jetbackup-in-directadmin\/\">ssh backup<\/a> \"zfs receive -uF backup\/data\"\n\n# Roll back to a snapshot (careful: this discards newer changes)\nsudo zfs rollback tank\/data@daily-2025-12-15\n<\/code><\/pre>\n\n\n\n<p>Automate with cron or systemd timers. Keep a retention policy (e.g., hourly for 48h, daily for 30d, weekly for 12w).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"routine-maintenance-and-monitoring\"><strong>Routine Maintenance and Monitoring<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scrub monthly: detects and repairs silent corruption.<\/li>\n\n\n\n<li>Enable ZED (ZFS Event Daemon) for alerts.<\/li>\n\n\n\n<li>Monitor capacity; stay under ~80% utilization.<\/li>\n\n\n\n<li>Update kernel\/ZFS thoughtfully and test before production rollout.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Monthly scrub via cron (3 AM, day 1 of month)\necho \"0 3 1 * * root \/sbin\/zpool scrub tank\" | sudo tee \/etc\/cron.d\/zpool-scrub\n\n# Health checks\nzpool status -x\nzpool status\nzpool list\n\n# Enable ZED for email alerts (Ubuntu\/Debian)\nsudo systemctl enable --now zfs-zed\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"performance-tuning-arc-l2arc-and-slog\"><strong>Performance Tuning: ARC, L2ARC, and SLOG<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ARC: In-RAM cache; more RAM improves reads.<\/li>\n\n\n\n<li>L2ARC: Read cache on fast NVMe; useful for large working sets. Add with zpool add tank cache &lt;nvme>.<\/li>\n\n\n\n<li>SLOG (ZIL log): Low-latency device for synchronous writes. Mirror high-endurance NVMe if you need sync=always workloads (databases, NFS).<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Add read cache (L2ARC) and separate log (SLOG)\nsudo zpool add tank cache \/dev\/disk\/by-id\/nvme-CacheDevice\nsudo zpool add tank log   \/dev\/disk\/by-id\/nvme-LogDevice\n\n# Force synchronous writes on a dataset that requires it\nsudo zfs set sync=always tank\/vm\n<\/code><\/pre>\n\n\n\n<p>Avoid consumer SSDs with poor power-loss protection for SLOG. For general use, ZFS defaults are excellent; measure before changing tunables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"expanding-replacing-and-recovering-disks\"><strong>Expanding, Replacing, and Recovering Disks<\/strong><\/h2>\n\n\n\n<p>Replacing a failed <a href=\"https:\/\/www.youstable.com\/blog\/check-disk-space-files-in-linux\/\">disk and expanding capacity are straightforward with the right commands<\/a> and device IDs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Offline a failing device, then replace it\nsudo zpool offline tank \/dev\/disk\/by-id\/FAULTY_DISK\nsudo zpool replace tank \/dev\/disk\/by-id\/FAULTY_DISK \/dev\/disk\/by-id\/NEW_DISK\nsudo zpool online tank \/dev\/disk\/by-id\/NEW_DISK\n\n# Add a new mirror vdev to grow capacity\nsudo zpool add tank mirror \/dev\/disk\/by-id\/DISK3 \/dev\/disk\/by-id\/DISK4\n\n# Import\/export when moving a pool\nsudo zpool export tank\nsudo zpool import tank\n<\/code><\/pre>\n\n\n\n<p>Set autoreplace and maintain spares for quicker recovery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo zpool set autoreplace=on tank\nsudo zpool add tank spare \/dev\/disk\/by-id\/SPARE_DISK\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"common-pitfalls-to-avoid\"><strong>Common Pitfalls to Avoid<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mixing disk sizes\/speeds in the same vdev (limits performance and capacity).<\/li>\n\n\n\n<li>Creating pools on top of hardware RAID; use HBA\/JBOD instead.<\/li>\n\n\n\n<li>Using \/dev\/sdX names; prefer \/dev\/disk\/by-id for stability.<\/li>\n\n\n\n<li>Skipping ashift=12; misaligned writes hurt performance.<\/li>\n\n\n\n<li>Enabling dedup without testing RAM usage and benefit.<\/li>\n\n\n\n<li>Letting pools exceed 80\u201385% usage; performance degrades.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs-zfs-on-linux\"><strong>FAQs: ZFS on Linux<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765798197574\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"is-zfs-stable-on-linux-for-production\"><strong>Is ZFS stable on Linux for production?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. OpenZFS is mature and widely used in production on Ubuntu, Debian, and EL-based distros. Most issues stem from poor pool design or hardware (consumer SSDs, unstable controllers), not ZFS itself. Follow best practices and keep regular scrubs and monitoring.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765798207304\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-much-ram-do-i-need-for-zfs\"><strong>How much RAM do I need for ZFS?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>ZFS benefits from more RAM for ARC caching. Start with 8 GB minimum; 16\u201364 GB is common for servers. The old \u201c1 GB per TB\u201d rule is outdated\u2014size RAM for your working set and performance goals, not raw capacity.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765798215987\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"should-i-use-zfs-with-hardware-raid\"><strong>Should I use ZFS with hardware RAID?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. ZFS should see raw disks to manage redundancy and checksums. Use HBA\/JBOD or disable RAID (IT mode). If hardware RAID is unavoidable, use single-disk RAID0 per drive and disable controller caching features that obscure errors.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765798223571\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"can-i-boot-linux-from-zfs\"><strong>Can I boot Linux from ZFS?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>On Ubuntu, ZFS-on-root is supported by the installer. On other distros, it\u2019s possible with manual steps but is more complex. For many, placing only data on ZFS and keeping the OS on ext4\/xfs is simpler and easier to recover.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765798232104\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-expand-a-zfs-pool-later\"><strong>How do I expand a ZFS pool later?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Add additional vdevs of the same layout (e.g., another mirror or RAIDZ2 group) with zpool add. Replacing all disks in a vdev with larger ones also grows capacity after the final resilver. You cannot convert a vdev\u2019s RAID level in place.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"final-thoughts\"><strong>Final Thoughts<\/strong><\/h2>\n\n\n\n<p>Now you know how to setup ZFS on Linux Server: install OpenZFS, plan vdevs, create pools with best practices, and operationalize snapshots, scrubs, and alerts. Start small, measure, and evolve your layout. Need a professionally tuned ZFS stack? YouStable can architect, deploy, and manage it end-to-end.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To set up ZFS on a Linux server, install the OpenZFS packages, load the zfs kernel module, plan your pool [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":13519,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[350],"tags":[],"class_list":["post-13350","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Setup-How-to-Setup-ZFS-on-Linux-Server-with-Pools-and-Datasets-on-Linux-Server-with-Pools-and-Datasets.jpg","author_info":{"display_name":"Prahlad Prajapati","author_link":"https:\/\/www.youstable.com\/blog\/author\/prahladblog"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=13350"}],"version-history":[{"count":3,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13350\/revisions"}],"predecessor-version":[{"id":13522,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13350\/revisions\/13522"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/13519"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=13350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=13350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=13350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}