FreeBSD Format and Partition

All FreeBSD 9.0 and later installations come with GPT. You can use gpart(8) instead of the classic fdisk(8) and disklabel(8).

AHCI - Advanced Host Controller Interface is a standard for disk drives and controllers. Enabling AHCI in the BIOS can give a 5-15% performance increase. Not all controllers offer AHCI.

For Solid State Computer Systems most SSD models support a feature called TRIM. TRIM is just a status update that triggers when the filesystem deletes a block, it also notifies the device that the block is no longer in use. The SSD firmware can then do some wear leveling functions. Without TRIM, it would not be able to tell whether that block was still in use. TRIM does not require AHCI.

Some Commands

To remove existing partitions from a drive

gpart delete

Look at partition table.

gpart show

command

gpart recover vtbd(x)

command

gpart add -t freebsd-ufs -b BEGIN -s SIZE GEOM

command

gpart add -t freebsd-ufs -b 20971682 -s 18874240 vtbd(x)

command

newfs -U /dev/vtbdXXXX

command

mkdir /transip

command

mount /dev/vtbdXXXX /transip

command

mount /dev/vtbXXXX /transip

FreeBSD Partitions

Be familiar with the partitions and their purpose

  • /var - used to hold mailboxes, log files, and printer spools. [no less than 1GB]
  • /usr - holds many of the files which support the system, including the FreeBSD Ports Collection and system source code. [no less than 2GB]
  • swap - the swap partition should be about double the size of physical memory (RAM)

With FreeBSD the partition scheme GPT is usually the most appropriate choice for amd64 computers. Older computers that are not compatible with GPT should use MBR. The other partition schemes are generally used for uncommon or older computers.

A standard FreeBSD GPT installation uses at least three partitions (and swap for a fourth):

  1. freebsd-boot - Holds the FreeBSD boot code.
  2. freebsd-ufs - A FreeBSD UFS file system.
  3. freebsd-zfs - A FreeBSD ZFS file system. More information about ZFS is available in Chapter 19, The Z File System (ZFS).
  4. freebsd-swap - FreeBSD swap space.

Although some people prefer a traditional layout with separate partitions for /, /var, /tmp, and /usr it is not required. The choice is yours.

Creating Traditional Split File System Partitions

For a traditional partition layout where the /, /var, /tmp, and /usr directories are separate file systems (this is not necessary but shown here as an example.)

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


Partition a SSD for FreeBSD

Applies to Solid State Computer Systems with FreeBSD 10.X and newer.

Do not enable TRIM unless the SSD supports it. Better yet, avoid SSDs that do not support TRIM.

Create the partition scheme. In the GPT partition scheme make a boot partition of the size 512K. Here we will use the new 4K-alignment which is what is advised for SSD drives. More information is on Hard Drive Logical Block Format Migration to 4K- Alignment.

gpart create -s gpt ada0
gpart add -t freebsd-boot -s 512k -a4k -l ssdboot ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i1 ada0

Now create a root partition. 2GiG is recommended. Unique naming is recommended. The 1M location is 4K aligned and 1M aligned.

gpart add -t freebsd-ufs -l ssdrootfs -b 1m -s 2g ada0

2G partition for /var and the rest of the SSD for /usr.

gpart add -t freebsd-ufs -l ssdrootfs -b 1m -s 2g ada0
gpart add -t freebsd-ufs -l ssdvarfs -a 1m -s 2g ada0
gpart add -t freebsd-ufs -l ssdusrfs -a 1m ada0

Fresh installation of FreeBSD on a SSD may use the newfs(8) the filesystems without TRIM. Boot into single user mode and use tunefs(8) -t enable to re-enable it on each filesystem. FreeBSD’s UFS filesystem supports TRIM. That will be enabled with -t while formatting the filesystems.

Format these file systems with TRIM enabled

newfs -U -t /dev/gpt/ssdrootfs
newfs -U -t /dev/gpt/ssdvarfs
newfs -U -t /dev/gpt/ssdusrfs

The FreeBSD installer might format the file system without enabling TRIM. You can go in after the fact and enable TRIM by doing the following when booted into single user mode:

tunefs -t enable /dev/gpt/ssdrootfs
tunefs -t enable /dev/gpt/ssdvarfs
tunefs -t enable /dev/gpt/ssdusrfs

Now to deal with SSD specific things. /etc/fstab must be changed to refer to the SSD. At the same time, the missing /tmp will be added. Edit the /etc/fstab file.

vi /etc/fstab

Modify

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/gpt/ssdrootfs      /               ufs     rw              1       1
/dev/gpt/ssdvarfs       /var            ufs     rw              2       2
tmpfs                   /tmp            tmpfs   rw,mode=01777   0       0
/dev/gpt/ssdusrfs       /usr            ufs     rw              2       2

Swap

mkdir /usr/swap
dd if=/dev/zero of=/usr/swap/swap bs=128k count=32768

Edit /etc/fstab to use the swap file.

vi /etc/fstab

Modify

# Device        Mountpoint      FStype  Options                         Dump    Pass#
md99            none            swap    sw,file=/usr/swap/swap,late     0       0

Make sure the SSD is set as the first boot drive.

Last modified on 4 February 2024, at 00:45