GEOM


GEOM is the main storage framework for the FreeBSD operating system. It is available in FreeBSD 5.0 and later releases, and provides a standardized way to access storage layers. GEOM is modular and allows for geom modules to connect to the framework. For example, the geom_mirror module provides RAID1 or mirroring functionality to the system. A number of modules are provided as part of FreeBSD and others have been developed independently and are distributed via GitHub.
GEOM was developed for the FreeBSD Project by Poul-Henning Kamp and NAI Labs, the Security Research Division of Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035, as part of the DARPA CHATS research program. The name symbolizes its impact on disk geometry.

Stacked design

Because of geom's modular design, modules can be 'stacked' together to form a chain of geom layers. For example, on top of the geom_mirror module an encryption module can be added, such as geom_eli to provide a mirrored and encrypted volume. Each module has both consumers and providers. A provider is the 'source' of the geom module, often a physical hard drive but sometimes a virtualized disk such as a memory disk. The geom module in turn provides an 'output' device. Other geom modules, called consumers, can use this provider to create a chain of modules connected to each other.
Source → geom module → Output
is referred to as:
Provider → geom module → Consumer
For example, the geom_mirror module may use the following providers: /dev/ada0, /dev/ada1, while it creates a new device called /dev/mirror/gm0. At the end of the geom chain, often a filesystem is applied to actually use the geom provider for something useful. The provider created by geom modules behaves just like a physical hard drive and as such can contain filesystems such as FreeBSD's native Unix File System.

Available modules

Storage modules
  • geom_stripe
  • geom_mirror
  • geom_raid
  • geom_raid3
  • geom_raid5
  • geom_concat
  • geom_vinum
  • geom_ccd
Encryption and compression modules
  • geom_eli
  • geom_bde
  • geom_shsec
  • geom_uzip
Filesystem modules
  • geom_label
  • geom_journal
  • geom_cache
Disk partitioning
  • geom_flashmap
  • geom_part
  • geom_part_apm
  • geom_part_bsd
  • geom_part_bsd64
  • geom_part_ebr
  • geom_part_gpt
  • geom_part_ldm
  • geom_part_mbr
  • geom_part_vtoc8
Virtualization
  • geom_mountver
  • geom_multipath
  • geom_nop
  • geom_gate
  • geom_virstor
  • geom_linux_lvm
  • geom_zero