GEOM

From Wikipedia, the free encyclopedia

GEOM is the storage framework available in the FreeBSD Operating System. It is available in FreeBSD 5.0 and higher 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 will provide RAID1 or mirroring functionality to the system. A wide range of modules are available and new ones are being developed by several FreeBSD developers.

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 ("CBOSS"), as part of the DARPA CHATS research program. The name symbolizes its impact on disk geometry.

[edit] 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 consumer is the 'source' of the geom module, often a physical harddrive but sometimes a virtualized disk such as a memory disk. The geom module in turn provides an 'output' device called a provider. Other geom modules can use this provides to create a chain of modules connected to each other.

Source → geom module → Output

is referred to as:

Consumer(s) → geom module → Provider

For example, the geom_mirror module may have the following consumers: /dev/ad0, /dev/ad1, while it creates a new provider 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 harddrive and as such can contain filesystems such as FreeBSD's native Unix File System (UFS).

[edit] Available modules

Storage modules

  • geom_stripe (RAID0)
  • geom_mirror (RAID1)
  • geom_raid3 (RAID3)
  • geom_raid5 (RAID5, not present in -CURRENT yet)
  • geom_concat (concatenating, also called spanning or JBOD)
  • geom_vinum (legacy volume manager with RAID0/1/4/5 support)
  • geom_ccd (legacy volume manager with RAID0 and rudimentary RAID1 support)

Encryption and compression modules

  • geom_eli (also called GELI, traditional encryption using AES, Blowfish or 3DES algorithms)
  • geom_bde (also called GBDE, leading edge encryption with four cryptographic barriers)
  • geom_shsec (shared secret encryption module)
  • geom_uzip (read-only ZIP compressed images)

Filesystem modules

  • geom_label (allows providers to have their own name labeled for easy partitioning)
  • geom_journal (adds journaling support to the Unix File System (UFS))
  • geom_cache (adds caching support for increased performance using RAM as buffercache)

Virtualization

  • geom_md (creates virtual disks using file, swap or memory back-end)
  • geom_nop (creates a transparent module used for debugging and testing)
  • geom_gate (creates a virtual disk using network disk back-end)
  • geom_virstor (allows overloading a geom provider by creating a provider larger than its consumer)
  • geom_linux_lvm (reads Linux LVM2 volumes)

[edit] External links

Languages