xref: /freebsd/share/man/man4/tarfs.4 (revision 124ae0e8af8fbc8384a660583f47f112f392395e)
11687d771SAlexander Ziaee.\"-
21687d771SAlexander Ziaee.\" SPDX-License-Identifier: BSD-2-Clause
31687d771SAlexander Ziaee.\"
41687d771SAlexander Ziaee.\" Copyright (c) 2022 Klara, Inc.
51687d771SAlexander Ziaee.\"
61687d771SAlexander Ziaee.\" Redistribution and use in source and binary forms, with or without
71687d771SAlexander Ziaee.\" modification, are permitted provided that the following conditions
81687d771SAlexander Ziaee.\" are met:
91687d771SAlexander Ziaee.\" 1. Redistributions of source code must retain the above copyright
101687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer.
111687d771SAlexander Ziaee.\" 2. Redistributions in binary form must reproduce the above copyright
121687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer in the
131687d771SAlexander Ziaee.\"    documentation and/or other materials provided with the distribution.
141687d771SAlexander Ziaee.\"
151687d771SAlexander Ziaee.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
161687d771SAlexander Ziaee.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
171687d771SAlexander Ziaee.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
181687d771SAlexander Ziaee.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
191687d771SAlexander Ziaee.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
201687d771SAlexander Ziaee.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
211687d771SAlexander Ziaee.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
221687d771SAlexander Ziaee.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
231687d771SAlexander Ziaee.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
241687d771SAlexander Ziaee.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
251687d771SAlexander Ziaee.\" SUCH DAMAGE.
261687d771SAlexander Ziaee.\"
271687d771SAlexander Ziaee.Dd February 14, 2023
28f38669efSAlexander Ziaee.Dt TARFS 4
291687d771SAlexander Ziaee.Os
301687d771SAlexander Ziaee.Sh NAME
311687d771SAlexander Ziaee.Nm tarfs
321687d771SAlexander Ziaee.Nd tarball filesystem
331687d771SAlexander Ziaee.Sh SYNOPSIS
341687d771SAlexander ZiaeeTo compile this driver into the kernel, place the following line in
351687d771SAlexander Ziaeeyour kernel configuration file:
361687d771SAlexander Ziaee.Bd -ragged -offset indent
371687d771SAlexander Ziaee.Cd "options TARFS"
381687d771SAlexander Ziaee.Ed
391687d771SAlexander Ziaee.Pp
401687d771SAlexander ZiaeeAlternatively, to load the driver as a module at boot time, place the
411687d771SAlexander Ziaeefollowing line in
421687d771SAlexander Ziaee.Xr loader.conf 5 :
431687d771SAlexander Ziaee.Bd -literal -offset indent
441687d771SAlexander Ziaeetarfs_load="YES"
451687d771SAlexander Ziaee.Ed
461687d771SAlexander Ziaee.Sh DESCRIPTION
471687d771SAlexander ZiaeeThe
481687d771SAlexander Ziaee.Nm
491687d771SAlexander Ziaeedriver implements a read-only filesystem backed by a
501687d771SAlexander Ziaee.Xr tar 5
511687d771SAlexander Ziaeefile.
521687d771SAlexander ZiaeeCurrently, only POSIX archives, optionally compressed with
531687d771SAlexander Ziaee.Xr zstd 1 ,
541687d771SAlexander Ziaeeare supported.
551687d771SAlexander Ziaee.Pp
561687d771SAlexander ZiaeeThe preferred I/O size for
571687d771SAlexander Ziaee.Nm
581687d771SAlexander Ziaeefilesystems can be adjusted using the
591687d771SAlexander Ziaee.Va vfs.tarfs.ioshift
601687d771SAlexander Ziaeesysctl setting and tunable.
611687d771SAlexander ZiaeeSetting it to 0 will reset it to its default value.
621687d771SAlexander ZiaeeNote that changes to this setting only apply to filesystems mounted
631687d771SAlexander Ziaeeafter the change.
641687d771SAlexander Ziaee.Pp
651687d771SAlexander ZiaeeWhen the backing tar file is compressed with
661687d771SAlexander Ziaee.Xr zstd 1 ,
671687d771SAlexander ZiaeeI/O performance can be improved by ensuring that compressed data is
681687d771SAlexander Ziaeebroken up into multiple frames.
691687d771SAlexander ZiaeeThis helps minimize unnecessary decompression work.
701687d771SAlexander ZiaeeWhen using
711687d771SAlexander Ziaee.Xr bsdtar 1
721687d771SAlexander Ziaeeto create the tar file, this can be achieved using the
731687d771SAlexander Ziaee.Cm zstd:max-frame-size
741687d771SAlexander Ziaeeand
75*124ae0e8STrond Endrestøl.Cm zstd:frame-per-file
761687d771SAlexander Ziaeeoptions.
771687d771SAlexander ZiaeeSensible frame sizes are powers of 2 between the system's base page size
781687d771SAlexander Ziaee(see
791687d771SAlexander Ziaee.Xr arch 7 )
801687d771SAlexander Ziaeeand the value of the
811687d771SAlexander Ziaee.Sy kern.maxphys
821687d771SAlexander Ziaeesysctl.
831687d771SAlexander ZiaeeSmaller frames will generally yield a worse compression ratio and require extra
841687d771SAlexander Ziaeekernel memory to maintain an index, and larger frames will on average require
851687d771SAlexander Ziaeemore CPU time to access data when performing random I/O.
861687d771SAlexander Ziaee.Sh DIAGNOSTICS
871687d771SAlexander ZiaeeIf enabled by the
881687d771SAlexander Ziaee.Dv TARFS_DEBUG
891687d771SAlexander Ziaeekernel option, the
901687d771SAlexander Ziaee.Va vfs.tarfs.debug
911687d771SAlexander Ziaeesysctl setting can be used to control debugging output from the
921687d771SAlexander Ziaee.Nm
931687d771SAlexander Ziaeedriver.
941687d771SAlexander ZiaeeDebugging output for individual sections of the driver can be enabled
951687d771SAlexander Ziaeeby adding together the relevant values from the table below.
961687d771SAlexander Ziaee.Bl -column Value Description
971687d771SAlexander Ziaee.It 0x01 Ta Memory allocations
981687d771SAlexander Ziaee.It 0x02 Ta Checksum calculations
991687d771SAlexander Ziaee.It 0x04 Ta Filesystem operations (vfsops)
1001687d771SAlexander Ziaee.It 0x08 Ta Path lookups
1011687d771SAlexander Ziaee.It 0x10 Ta File operations (vnops)
1021687d771SAlexander Ziaee.It 0x20 Ta General I/O
1031687d771SAlexander Ziaee.It 0x40 Ta Decompression
1041687d771SAlexander Ziaee.It 0x80 Ta Decompression index
1051687d771SAlexander Ziaee.It 0x100 Ta Sparse file mapping
1061687d771SAlexander Ziaee.It 0x200 Ta Bounce buffer usage
1071687d771SAlexander Ziaee.El
1081687d771SAlexander Ziaee.Sh SEE ALSO
1091687d771SAlexander Ziaee.Xr tar 1 ,
1101687d771SAlexander Ziaee.Xr zstd 1 ,
1111687d771SAlexander Ziaee.Xr fstab 5 ,
1121687d771SAlexander Ziaee.Xr tar 5 ,
1131687d771SAlexander Ziaee.Xr mount 8 ,
1141687d771SAlexander Ziaee.Xr sysctl 8
1151687d771SAlexander Ziaee.Sh HISTORY
1161687d771SAlexander Ziaee.An -nosplit
1171687d771SAlexander ZiaeeThe
1181687d771SAlexander Ziaee.Nm
1191687d771SAlexander Ziaeedriver was developed by
1201687d771SAlexander Ziaee.An Stephen J. Kiernan Aq Mt stevek@FreeBSD.org
1211687d771SAlexander Ziaeeand
1221687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org
1231687d771SAlexander Ziaeefor Juniper Networks and Klara Systems.
1241687d771SAlexander ZiaeeThis manual page was written by
1251687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org
1261687d771SAlexander Ziaeefor Juniper Networks and Klara Systems.
127