xref: /freebsd/share/man/man4/tarfs.4 (revision 1687d77197c01c6ffd5bb233c7a15c6ebb9319af)
1*1687d771SAlexander Ziaee.\"-
2*1687d771SAlexander Ziaee.\" SPDX-License-Identifier: BSD-2-Clause
3*1687d771SAlexander Ziaee.\"
4*1687d771SAlexander Ziaee.\" Copyright (c) 2022 Klara, Inc.
5*1687d771SAlexander Ziaee.\"
6*1687d771SAlexander Ziaee.\" Redistribution and use in source and binary forms, with or without
7*1687d771SAlexander Ziaee.\" modification, are permitted provided that the following conditions
8*1687d771SAlexander Ziaee.\" are met:
9*1687d771SAlexander Ziaee.\" 1. Redistributions of source code must retain the above copyright
10*1687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer.
11*1687d771SAlexander Ziaee.\" 2. Redistributions in binary form must reproduce the above copyright
12*1687d771SAlexander Ziaee.\"    notice, this list of conditions and the following disclaimer in the
13*1687d771SAlexander Ziaee.\"    documentation and/or other materials provided with the distribution.
14*1687d771SAlexander Ziaee.\"
15*1687d771SAlexander Ziaee.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*1687d771SAlexander Ziaee.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*1687d771SAlexander Ziaee.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*1687d771SAlexander Ziaee.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*1687d771SAlexander Ziaee.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*1687d771SAlexander Ziaee.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*1687d771SAlexander Ziaee.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*1687d771SAlexander Ziaee.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*1687d771SAlexander Ziaee.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*1687d771SAlexander Ziaee.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*1687d771SAlexander Ziaee.\" SUCH DAMAGE.
26*1687d771SAlexander Ziaee.\"
27*1687d771SAlexander Ziaee.Dd February 14, 2023
28*1687d771SAlexander Ziaee.Dt TARFS 5
29*1687d771SAlexander Ziaee.Os
30*1687d771SAlexander Ziaee.Sh NAME
31*1687d771SAlexander Ziaee.Nm tarfs
32*1687d771SAlexander Ziaee.Nd tarball filesystem
33*1687d771SAlexander Ziaee.Sh SYNOPSIS
34*1687d771SAlexander ZiaeeTo compile this driver into the kernel, place the following line in
35*1687d771SAlexander Ziaeeyour kernel configuration file:
36*1687d771SAlexander Ziaee.Bd -ragged -offset indent
37*1687d771SAlexander Ziaee.Cd "options TARFS"
38*1687d771SAlexander Ziaee.Ed
39*1687d771SAlexander Ziaee.Pp
40*1687d771SAlexander ZiaeeAlternatively, to load the driver as a module at boot time, place the
41*1687d771SAlexander Ziaeefollowing line in
42*1687d771SAlexander Ziaee.Xr loader.conf 5 :
43*1687d771SAlexander Ziaee.Bd -literal -offset indent
44*1687d771SAlexander Ziaeetarfs_load="YES"
45*1687d771SAlexander Ziaee.Ed
46*1687d771SAlexander Ziaee.Sh DESCRIPTION
47*1687d771SAlexander ZiaeeThe
48*1687d771SAlexander Ziaee.Nm
49*1687d771SAlexander Ziaeedriver implements a read-only filesystem backed by a
50*1687d771SAlexander Ziaee.Xr tar 5
51*1687d771SAlexander Ziaeefile.
52*1687d771SAlexander ZiaeeCurrently, only POSIX archives, optionally compressed with
53*1687d771SAlexander Ziaee.Xr zstd 1 ,
54*1687d771SAlexander Ziaeeare supported.
55*1687d771SAlexander Ziaee.Pp
56*1687d771SAlexander ZiaeeThe preferred I/O size for
57*1687d771SAlexander Ziaee.Nm
58*1687d771SAlexander Ziaeefilesystems can be adjusted using the
59*1687d771SAlexander Ziaee.Va vfs.tarfs.ioshift
60*1687d771SAlexander Ziaeesysctl setting and tunable.
61*1687d771SAlexander ZiaeeSetting it to 0 will reset it to its default value.
62*1687d771SAlexander ZiaeeNote that changes to this setting only apply to filesystems mounted
63*1687d771SAlexander Ziaeeafter the change.
64*1687d771SAlexander Ziaee.Pp
65*1687d771SAlexander ZiaeeWhen the backing tar file is compressed with
66*1687d771SAlexander Ziaee.Xr zstd 1 ,
67*1687d771SAlexander ZiaeeI/O performance can be improved by ensuring that compressed data is
68*1687d771SAlexander Ziaeebroken up into multiple frames.
69*1687d771SAlexander ZiaeeThis helps minimize unnecessary decompression work.
70*1687d771SAlexander ZiaeeWhen using
71*1687d771SAlexander Ziaee.Xr bsdtar 1
72*1687d771SAlexander Ziaeeto create the tar file, this can be achieved using the
73*1687d771SAlexander Ziaee.Cm zstd:max-frame-size
74*1687d771SAlexander Ziaeeand
75*1687d771SAlexander Ziaee.Cm ztsd:frame-per-file
76*1687d771SAlexander Ziaeeoptions.
77*1687d771SAlexander ZiaeeSensible frame sizes are powers of 2 between the system's base page size
78*1687d771SAlexander Ziaee(see
79*1687d771SAlexander Ziaee.Xr arch 7 )
80*1687d771SAlexander Ziaeeand the value of the
81*1687d771SAlexander Ziaee.Sy kern.maxphys
82*1687d771SAlexander Ziaeesysctl.
83*1687d771SAlexander ZiaeeSmaller frames will generally yield a worse compression ratio and require extra
84*1687d771SAlexander Ziaeekernel memory to maintain an index, and larger frames will on average require
85*1687d771SAlexander Ziaeemore CPU time to access data when performing random I/O.
86*1687d771SAlexander Ziaee.Sh DIAGNOSTICS
87*1687d771SAlexander ZiaeeIf enabled by the
88*1687d771SAlexander Ziaee.Dv TARFS_DEBUG
89*1687d771SAlexander Ziaeekernel option, the
90*1687d771SAlexander Ziaee.Va vfs.tarfs.debug
91*1687d771SAlexander Ziaeesysctl setting can be used to control debugging output from the
92*1687d771SAlexander Ziaee.Nm
93*1687d771SAlexander Ziaeedriver.
94*1687d771SAlexander ZiaeeDebugging output for individual sections of the driver can be enabled
95*1687d771SAlexander Ziaeeby adding together the relevant values from the table below.
96*1687d771SAlexander Ziaee.Bl -column Value Description
97*1687d771SAlexander Ziaee.It 0x01 Ta Memory allocations
98*1687d771SAlexander Ziaee.It 0x02 Ta Checksum calculations
99*1687d771SAlexander Ziaee.It 0x04 Ta Filesystem operations (vfsops)
100*1687d771SAlexander Ziaee.It 0x08 Ta Path lookups
101*1687d771SAlexander Ziaee.It 0x10 Ta File operations (vnops)
102*1687d771SAlexander Ziaee.It 0x20 Ta General I/O
103*1687d771SAlexander Ziaee.It 0x40 Ta Decompression
104*1687d771SAlexander Ziaee.It 0x80 Ta Decompression index
105*1687d771SAlexander Ziaee.It 0x100 Ta Sparse file mapping
106*1687d771SAlexander Ziaee.It 0x200 Ta Bounce buffer usage
107*1687d771SAlexander Ziaee.El
108*1687d771SAlexander Ziaee.Sh SEE ALSO
109*1687d771SAlexander Ziaee.Xr tar 1 ,
110*1687d771SAlexander Ziaee.Xr zstd 1 ,
111*1687d771SAlexander Ziaee.Xr fstab 5 ,
112*1687d771SAlexander Ziaee.Xr tar 5 ,
113*1687d771SAlexander Ziaee.Xr mount 8 ,
114*1687d771SAlexander Ziaee.Xr sysctl 8
115*1687d771SAlexander Ziaee.Sh HISTORY
116*1687d771SAlexander Ziaee.An -nosplit
117*1687d771SAlexander ZiaeeThe
118*1687d771SAlexander Ziaee.Nm
119*1687d771SAlexander Ziaeedriver was developed by
120*1687d771SAlexander Ziaee.An Stephen J. Kiernan Aq Mt stevek@FreeBSD.org
121*1687d771SAlexander Ziaeeand
122*1687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org
123*1687d771SAlexander Ziaeefor Juniper Networks and Klara Systems.
124*1687d771SAlexander ZiaeeThis manual page was written by
125*1687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org
126*1687d771SAlexander Ziaeefor Juniper Networks and Klara Systems.
127