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.
Contents
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):
- freebsd-boot - Holds the FreeBSD boot code.
- freebsd-ufs - A FreeBSD UFS file system.
- freebsd-zfs - A FreeBSD ZFS file system. More information about ZFS is available in Chapter 19, The Z File System (ZFS).
- 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.