]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
makefs: Add ZFS support
authorMark Johnston <markj@FreeBSD.org>
Fri, 5 Aug 2022 17:07:54 +0000 (13:07 -0400)
committerMark Johnston <markj@FreeBSD.org>
Fri, 5 Aug 2022 17:42:29 +0000 (13:42 -0400)
commit240afd8c1fcc8c5f29dbd4ff0c915795d414405d
treee9be60fe4e9d1090c12b76221d37e2f9adeec52a
parent3e1101f29b4ff39a67eb10a5b41b727d8702f0f5
makefs: Add ZFS support

This allows one to take a staged directory tree and create a file
consisting of a ZFS pool with one or more datasets that contain the
contents of the directory tree.  This is useful for creating virtual
machine images without using the kernel to create a pool; "zpool create"
requires root privileges and currently is not permitted in jails.
makefs -t zfs also provides reproducible images by using a fixed seed
for pseudo-random number generation, used for generating GUIDs and hash
salts.  makefs -t zfs requires relatively little by way of machine
resources.

The "zpool_reguid" rc.conf setting can be used to ask a FreeBSD guest to
generate a unique pool GUID upon first boot.

A small number of pool and dataset properties are supported.  The pool
is backed by a single disk vdev.  Data is always checksummed using
Fletcher-4, no redundant copies are made, and no compression is used.
The manual page documents supported pool and filesystem properties.

The implementation uses a few pieces of ZFS support from with the boot
loader, especially definitions for various on-disk structures, but is
otherwise standalone and in particular doesn't depend on OpenZFS.

This feature should be treated as experimental for now, i.e., important
data shouldn't be trusted to a makefs-created pool, and the command-line
interface is subject to change.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D35248
14 files changed:
usr.sbin/makefs/Makefile
usr.sbin/makefs/makefs.8
usr.sbin/makefs/makefs.c
usr.sbin/makefs/makefs.h
usr.sbin/makefs/tests/Makefile
usr.sbin/makefs/tests/makefs_zfs_tests.sh [new file with mode: 0644]
usr.sbin/makefs/zfs.c [new file with mode: 0644]
usr.sbin/makefs/zfs/Makefile.inc [new file with mode: 0644]
usr.sbin/makefs/zfs/dsl.c [new file with mode: 0644]
usr.sbin/makefs/zfs/fs.c [new file with mode: 0644]
usr.sbin/makefs/zfs/objset.c [new file with mode: 0644]
usr.sbin/makefs/zfs/vdev.c [new file with mode: 0644]
usr.sbin/makefs/zfs/zap.c [new file with mode: 0644]
usr.sbin/makefs/zfs/zfs.h [new file with mode: 0644]