There are three ways to allocate disk space for FreeBSD. Guided partitioning automatically sets up disk partitions, while Manual partitioning allows advanced users to create customized partitions. Finally, there's the option of starting a shell where command-line programs like gpart(8), fdisk(8), and bsdlabel(8) can be used directly.
This section describes what to consider when laying out the disk partitions. It then demonstrates how to use both the Guided Partitioning and Manual Partitioning screens.
When laying out file systems, remember that hard drives transfer data
faster from the outer tracks to the inner. Thus, smaller
and heavier-accessed file systems should be closer to the
outside of the drive, while larger partitions like
/usr
should be placed toward the inner
parts of the disk. It is a good idea to create partitions
in an order similar to: /
, swap,
/var
, and
/usr
.
The size of the /var
partition
reflects the intended machine's usage. This partition is
used to hold mailboxes, log files, and printer spools.
Mailboxes and log files can grow to unexpected sizes
depending on the number of users and how long log files are
kept. On average, most users rarely need more than about a
gigabyte of free disk space in
/var
.
Sometimes, a lot of disk space is required in
/var/tmp
. When new software is
installed, the packaging tools
extract a temporary copy of the packages under
/var/tmp
. Large software packages,
like Firefox,
OpenOffice or
LibreOffice may be tricky to
install if there is not enough disk space under
/var/tmp
.
The /usr
partition holds many of
the files which support the system, including the FreeBSD Ports
Collection and system source code. At least 2 gigabytes is
recommended for this partition.
When selecting partition sizes, keep the space requirements in mind. Running out of space in one partition while barely using another can be a hassle.
As a rule of thumb, the swap partition should be about double the size of physical memory (RAM). Systems with minimal RAM may perform better with more swap. Configuring too little swap can lead to inefficiencies in the VM page scanning code and might create issues later if more memory is added.
On larger systems with multiple SCSI disks or multiple IDE disks operating on different controllers, it is recommended that swap be configured on each drive, up to four drives. The swap partitions should be approximately the same size. The kernel can handle arbitrary sizes but internal data structures scale to 4 times the largest swap partition. Keeping the swap partitions near the same size will allow the kernel to optimally stripe swap space across disks. Large swap sizes are fine, even if swap is not used much. It might be easier to recover from a runaway program before being forced to reboot.
By properly partitioning a system, fragmentation
introduced in the smaller write heavy partitions will not
bleed over into the mostly read partitions. Keeping the
write loaded partitions closer to the disk's edge will
increase I/O performance in the partitions where it occurs
the most. While I/O performance in the larger partitions
may be needed, shifting them more toward the edge of the
disk will not lead to a significant performance improvement
over moving /var
to the edge.
If multiple disks are connected, choose the one where FreeBSD is to be installed.
The entire disk can be allocated to FreeBSD, or just a portion of it. If
is chosen, a general partition layout filling the whole disk is created. Selecting creates a partition layout in unused space on the disk.After the partition layout has been created, review it carefully for accuracy. If a mistake has been made, selecting
will reset the partitions as they were previously, or will recreate the automatic FreeBSD partitions. Partitions can be manually created, modified, or deleted. When the partitioning is correct, select to continue with the installation.Manual partitioning goes straight to the partition editor.
Highlighting a drive (ada0
in
this example) and selecting
displays a menu
for choosing the type of partitioning
scheme.
GPT partitioning is usually the most appropriate choice for PC-compatible computers. Older PC operating systems that are not compatible with GPT may require MBR partitioning instead. The other partitioning schemes are generally used for uncommon or older computer systems.
Abbreviation | Description |
---|---|
APM | Apple Partition Map, used by PowerPC® Macintosh®. |
BSD | BSD Labels without an MBR, sometimes called “dangerously dedicated mode”. See bsdlabel(8). |
GPT | GUID Partition Table. |
MBR | Master Boot Record. |
PC98 | MBR variant, used by NEC PC-98 computers. |
VTOC8 | Volume Table Of Contents, used by Sun SPARC64 and UltraSPARC computers. |
After the partitioning scheme has been selected and created, selecting
again will create new partitions.A standard FreeBSD GPT installation uses at least three partitions:
freebsd-boot
- FreeBSD boot
code.
freebsd-ufs
- A FreeBSD UFS
filesystem.
freebsd-swap
- FreeBSD swap
space.
Another partition type worth noting is
freebsd-zfs
, used for partitions that will
contain a FreeBSD ZFS filesystem. See
Section 20.2, “The Z File System (ZFS)”. gpart(8) shows more
of the available GPT partition
types.
Multiple filesystem partitions can be used, and some
people may prefer a traditional layout with separate
partitions for the /
,
/var
, /tmp
, and
/usr
filesystems. See
Example 2.3, “Creating Traditional Split Filesystem
Partitions” for an
example.
Size may be entered with common abbreviations: K for kilobytes, M for megabytes, or G for gigabytes.
Proper sector alignment provides the best performance, and making partition sizes even multiples of 4K bytes helps to ensure alignment on drives with either 512-byte or 4K-byte sectors. Generally, using partition sizes that are even multiples of 1M or 1G is the easiest way to make sure every partition starts at an even multiple of 4K. One exception: at present, the freebsd-boot partition should be no larger than 512K due to boot code limitations.
A mountpoint is needed if this partition will contain a
filesystem. If only a single UFS partition will be created,
the mountpoint should be /
.
A label is also requested. A label
is a name by which this partition will be known. Drive
names or numbers can change if the drive is connected to
a different controller or port, but the partition label does
not change. Referring to labels instead of drive names
and partition numbers in files like
/etc/fstab
makes the system more tolerant
of changing hardware. GPT labels appear in
/dev/gpt/
when a disk is attached.
Other partitioning schemes have different label
capabilities, and their labels appear in different directories
in /dev/
.
Use a unique label on every filesystem to avoid
conflicts from identical labels. A few letters from the
computer's name, use, or location can be added to the label.
For instance, labroot
or
rootfs-lab
for the UFS root partition on
the lab's computer.
For a traditional partition layout where the
/
, /var
,
/tmp
, and /usr
directories are separate filesystems on their own
partitions, create a GPT partitioning scheme, then create
the partitions as shown. Partition sizes shown are typical
for a 20G target disk. If more space is available on the
target disk, larger swap or /var
partitions may be useful. Labels shown here are prefixed
with ex
for “example”, but
readers should use other unique label values as described
above.
By default, FreeBSD's gptboot
expects
the first UFS partition found to be the
/
partition.
Partition Type | Size | Mountpoint | Label |
---|---|---|---|
freebsd-boot | 512K | ||
freebsd-ufs | 2G | / | exrootfs |
freebsd-swap | 4G | exswap | |
freebsd-ufs | 2G | /var | exvarfs |
freebsd-ufs | 1G | /tmp | extmpfs |
freebsd-ufs | accept the default (remainder of the disk) | /usr | exusrfs |
After the custom partitions have been created, select
to continue with the installation.All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.