newfs

NEWFS(8)                   BSD System Manager's Manual                  NEWFS(8)

NAME
     newfs — construct a new UFS1/UFS2 file system

SYNOPSIS
     newfs [-EJNUjlnt] [-L volname] [-O filesystem-type] [-S sector-size]
           [-T disktype] [-a maxcontig] [-b block-size]
           [-c blocks-per-cylinder-group] [-d max-extent-size] [-e maxbpg]
           [-f frag-size] [-g avgfilesize] [-h avgfpdir] [-i bytes]
           [-k held-for-metadata-blocks] [-m free-space] [-o optimization]
           [-p partition] [-r reserved] [-s size] special

DESCRIPTION
     The newfs utility is used to initialize and clear file systems before first
     use.  The newfs utility builds a file system on the specified special file.
     (We often refer to the “special file” as the “disk”, although the special
     file need not be a physical disk.  In fact, it need not even be special.)
     Typically the defaults are reasonable, however newfs has numerous options
     to allow the defaults to be selectively overridden.

     The following options define the general layout policies:

     -E      Erase the content of the disk before making the filesystem.  The
             reserved area in front of the superblock (for bootcode) will not be
             erased.  Erasing is only relevant to flash-memory or thinly
             provisioned devices.  Erasing may take a long time.  If the device
             does not support BIO_DELETE, the command will fail.

     -J      Enable journaling on the new file system via gjournal.  See
             gjournal(8) for details.

     -L volname
             Add a volume label to the new file system.  Legal characters are
             alphanumerics, dashes, and underscores.

     -N      Cause the file system parameters to be printed out without really
             creating the file system.

     -O filesystem-type
             Use 1 to specify that a UFS1 format file system be built; use 2 to
             specify that a UFS2 format file system be built.  The default
             format is UFS2.

     -T disktype
             For backward compatibility.

     -U      Enable soft updates on the new file system.

     -a maxcontig
             Specify the maximum number of contiguous blocks that will be laid
             out before forcing a rotational delay.  The default value is 16.
             See tunefs(8) for more details on how to set this option.

     -b block-size
             The block size of the file system, in bytes.  It must be a power of
             2.  The default size is 32768 bytes, and the smallest allowable
             size is 4096 bytes.  The optimal block:fragment ratio is 8:1.
             Other ratios are possible, but are not recommended, and may produce
             poor results.

     -c blocks-per-cylinder-group
             The number of blocks per cylinder group in a file system.  The
             default is to compute the maximum allowed by the other parameters.
             This value is dependent on a number of other parameters, in
             particular the block size and the number of bytes per inode.

     -d max-extent-size
             The file system may choose to store large files using extents.
             This parameter specifies the largest extent size that may be used.
             The default value is the file system blocksize.  It is presently
             limited to a maximum value of 16 times the file system blocksize
             and a minimum value of the file system blocksize.

     -e maxbpg
             Indicate the maximum number of blocks any single file can allocate
             out of a cylinder group before it is forced to begin allocating
             blocks from another cylinder group.  The default is about one
             quarter of the total blocks in a cylinder group.  See tunefs(8) for
             more details on how to set this option.

     -f frag-size
             The fragment size of the file system in bytes.  It must be a power
             of two ranging in value between blocksize/8 and blocksize.  The
             default is 4096 bytes.

     -g avgfilesize
             The expected average file size for the file system.

     -h avgfpdir
             The expected average number of files per directory on the file
             system.

     -i bytes
             Specify the density of inodes in the file system.  The default is
             to create an inode for every (2 * frag-size) bytes of data space.
             If fewer inodes are desired, a larger number should be used; to
             create more inodes a smaller number should be given.  One inode is
             required for each distinct file, so this value effectively
             specifies the average file size on the file system.

     -j      Enable soft updates journaling on the new file system.  This flag
             is implemented by running the tunefs(8) utility found in the user's
             $PATH.

     -k held-for-metadata-blocks
             Set the amount of space to be held for metadata blocks in each
             cylinder group.  When set, the file system preference routines will
             try to save the specified amount of space immediately following the
             inode blocks in each cylinder group for use by metadata blocks.
             Clustering the metadata blocks speeds up random file access and
             decreases the running time of fsck(8).  By default newfs sets it to
             half of the space reserved to minfree.

     -l      Enable multilabel MAC on the new file system.

     -m free-space
             The percentage of space reserved from normal users; the minimum
             free space threshold.  The default value used is defined by MINFREE
             from <ufs/ffs/fs.h>, currently 8%.  See tunefs(8) for more details
             on how to set this option.

     -n      Do not create a .snap directory on the new file system.  The
             resulting file system will not support snapshot generation, so
             dump(8) in live mode and background fsck(8) will not function
             properly.  The traditional fsck(8) and offline dump(8) will work on
             the file system.  This option is intended primarily for memory or
             vnode-backed file systems that do not require dump(8) or fsck(8)
             support.

     -o optimization
             (space or time).  The file system can either be instructed to try
             to minimize the time spent allocating blocks, or to try to minimize
             the space fragmentation on the disk.  If the value of minfree (see
             above) is less than 8%, the default is to optimize for space; if
             the value of minfree is greater than or equal to 8%, the default is
             to optimize for time.  See tunefs(8) for more details on how to set
             this option.

     -p partition
             The partition name (a..h) you want to use in case the underlying
             image is a file, so you do not have access to individual partitions
             through the filesystem.  Can also be used with a device, e.g.,
             newfs -p f /dev/da1s3 is equivalent to newfs /dev/da1s3f.

     -r reserved
             The size, in sectors, of reserved space at the end of the partition
             specified in special.  This space will not be occupied by the file
             system; it can be used by other consumers such as geom(4).
             Defaults to 0.

     -s size
             The size of the file system in sectors.  This value defaults to the
             size of the raw partition specified in special less the reserved
             space at its end (see -r).  A size of 0 can also be used to choose
             the default value.  A valid size value cannot be larger than the
             default one, which means that the file system cannot extend into
             the reserved space.

     -t      Turn on the TRIM enable flag.  If enabled, and if the underlying
             device supports the BIO_DELETE command, the file system will send a
             delete request to the underlying device for each freed block.  The
             trim enable flag is typically set for flash-memory devices to
             reduce write amplification which reduces wear on write-limited
             flash-memory and often improves long-term performance.  Thinly
             provisioned storage also benefits by returning unused blocks to the
             global pool.

     The following options override the standard sizes for the disk geometry.
     Their default values are taken from the disk label.  Changing these
     defaults is useful only when using newfs to build a file system whose raw
     image will eventually be used on a different type of disk than the one on
     which it is initially created (for example on a write-once disk).  Note
     that changing any of these values from their defaults will make it
     impossible for fsck(8) to find the alternate superblocks if the standard
     superblock is lost.

     -S sector-size
             The size of a sector in bytes (almost never anything but 512).

EXAMPLES
           newfs /dev/ada3s1a

     Creates a new ufs file system on ada3s1a.  The newfs utility will use a
     block size of 32768 bytes, a fragment size of 4096 bytes and the largest
     possible number of blocks per cylinders group.  These values tend to
     produce better performance for most applications than the historical
     defaults (8192 byte block size and 1024 byte fragment size).  This large
     fragment size may lead to much wasted space on file systems that contain
     many small files.

SEE ALSO
     fdformat(1), geom(4), disktab(5), fs(5), camcontrol(8), dump(8), dumpfs(8),
     fsck(8), gjournal(8), gpart(8), growfs(8), gvinum(8), makefs(8), mount(8),
     newfs_msdos(8), tunefs(8)

     M. McKusick, W. Joy, S. Leffler, and R. Fabry, “A Fast File System for
     UNIX”, ACM Transactions on Computer Systems 2, 3, pp 181-197, August 1984,
     (reprinted in the BSD System Manager's Manual).

HISTORY
     The newfs utility appeared in 4.2BSD.

BSD                              January 7, 2021                             BSD