ZFS-CREATE(8)

πŸ’– zfs-create β€” create ZFS dataset πŸ’–

okay bestie, welcome to zfs-create(8), straight out of the System Manager's Manual πŸ’… this is the one that makes your datasets exist. yes, the glow-up moment. ✨


🌸 SYNOPSIS 🌸

zfs create [-Pnpuv] [-o property=value]… filesystem
zfs create [-ps] [-b blocksize] [-o property=value]… -V size volume

two whole modes, no cap. one for filesystems, one for volumes. pick your fighter. 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

✨ the filesystem era ✨

zfs create [-Pnpuv] [-o property=value]… filesystem

Creates a new ZFS file system. πŸ’– The file system is automatically mounted according to the mountpoint property inherited from the parent, unless the -u option is used. so like, it mounts itself, that's just the vibe.

  • -o property=value β€” Sets the specified property as if the command zfs set property=value was invoked at the same time the dataset was created. Any editable ZFS property can also be set at creation time. Multiple -o options can be specified. An error results if the same property is specified in multiple -o options. (pick one, we are NOT doing duplicates, that's giving chaos πŸ™ˆ)
  • -p β€” Creates all the non-existing parent datasets. Datasets created in this manner are automatically mounted according to the mountpoint property inherited from their parent. Any property specified on the command line using the -o option is ignored. If the target filesystem already exists, the operation completes successfully. lowkey the "build the whole tree while you're at it" button πŸ‘‘
  • -n β€” Do a dry-run ("No-op") creation. No datasets will be created. This is useful in conjunction with the -v or -P flags to validate properties that are passed via -o options and those implied by other options. The actual dataset creation can still fail due to insufficient privileges or available capacity. it's giving dress rehearsal πŸŽ€ β€” remember, the real thing can still flop later.
  • -P β€” Print machine-parsable verbose information about the created dataset. Each line of output contains a key and one or two values, all separated by tabs. The create_ancestors and create keys have filesystem as their only value. The create_ancestors key only appears if the -p option is used. The property key has two values, a property name that property's value. The property key may appear zero or more times, once for each property that will be set local to filesystem due to the use of the -o option. tabs are the separator, the robots are fed πŸ’€
  • -u β€” Do not mount the newly created file system. (it exists. it's just... not showing up. mysterious. πŸŒ™)
  • -v β€” Print verbose information about the created dataset. tell me everything, bestie πŸ—£οΈ

πŸŽ€ the volume era πŸŽ€

zfs create [-ps] [-b blocksize] [-o property=value]… -V size volume

Creates a volume of the given size. πŸ”₯ The volume is exported as a block device in /dev/zvol/path, where path is the name of the volume in the ZFS namespace. The size represents the logical size as exported by the device. By default, a reservation of equal size is created.

size is automatically rounded up to the nearest multiple of the blocksize. (yes queen, it rounds up, don't fight it ✨)

  • -b blocksize β€” Equivalent to -o volblocksize=blocksize. If this option is specified in conjunction with -o volblocksize, the resulting behavior is undefined. ⚠️ do not. do NOT mix them. that's not a vibe, that's a mystery box and not the cute kind.
  • -o property=value β€” Sets the specified property as if the zfs set property=value command was invoked at the same time the dataset was created. Any editable ZFS property can also be set at creation time. Multiple -o options can be specified. An error results if the same property is specified in multiple -o options.
  • -p β€” Creates all the non-existing parent datasets. Datasets created in this manner are automatically mounted according to the mountpoint property inherited from their parent. Any property specified on the command line using the -o option is ignored. If the target filesystem already exists, the operation completes successfully.
  • -s β€” Creates a sparse volume with no reservation. See volsize in the Native Properties section of zfsprops(7) for more information about sparse volumes. no reservation, no commitment, very main character energy πŸ’…
  • -n β€” Do a dry-run ("No-op") creation. No datasets will be created. This is useful in conjunction with the -v or -P flags to validate properties that are passed via -o options and those implied by other options. The actual dataset creation can still fail due to insufficient privileges or available capacity.
  • -P β€” Print machine-parsable verbose information about the created dataset. Each line of output contains a key and one or two values, all separated by tabs. The create_ancestors and create keys have volume as their only value. The create_ancestors key only appears if the -p option is used. The property key has two values, a property name that property's value. The property key may appear zero or more times, once for each property that will be set local to volume due to the use of the -b or -o options, as well as refreservation if the volume is not sparse. 🫢
  • -v β€” Print verbose information about the created dataset.

🧚 ZFS for Swap 🧚

Swapping to a ZFS volume is prone to deadlock and not recommended. 😭 See OpenZFS FAQ.
Swapping to a file on a ZFS filesystem is not supported. nope. not a thing. don't try it, bestie. πŸ’€

🌈 EXAMPLES 🌈

⭐ Example 1: Creating a ZFS File System Hierarchy

The following commands create a file system named pool/home and a file system named pool/home/bob. The mount point /export/home is set for the parent file system, and is automatically inherited by the child file system. inheritance is the moment, fr fr πŸ‘‘

# zfs create pool/home
# zfs set mountpoint=/export/home pool/home
# zfs create pool/home/bob

⭐ Example 2: Promoting a ZFS Clone

The following commands illustrate how to test out changes to a file system, and then replace the original file system with the changed one, using clones, clone promotion, and renaming:

# zfs create pool/project/production
  populate /pool/project/production with data
# zfs snapshot pool/project/production@today
# zfs clone pool/project/production@today pool/project/beta
  make changes to /pool/project/beta and test them
# zfs promote pool/project/beta
# zfs rename pool/project/production pool/project/legacy
# zfs rename pool/project/beta pool/project/production
  once the legacy version is no longer needed, it can be destroyed
# zfs destroy pool/project/legacy

the swap-the-identity arc, honestly iconic 🌸


πŸ‘‘ SEE ALSO πŸ‘‘


that's the whole page, bestie, you ate πŸ’– this was OpenZFS, dated June 2, 2023, and it lives in section 8 of the manual. go make some datasets. slay. πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from