GEOM
Encyclopedia
GEOM is the main storage framework for 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 already available, and new ones are always in active development by various 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.
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
).
Encryption and compression modules
Filesystem modules
Virtualization
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer 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 already available, and new ones are always in active development by various FreeBSD developers.
GEOM was developed for the FreeBSD Project by Poul-Henning Kamp
Poul-Henning Kamp
Poul-Henning Kamp is a Danish FreeBSD developer, responsible for implementation of the widely used MD5 password hash algorithm, a vast quantity of systems code, including the FreeBSD GEOM storage layer, GBDE cryptographic storage transform, part of the UFS2 file system implementation, FreeBSD...
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.
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 provider 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
Unix File System
The Unix file system is a file system used by many Unix and Unix-like operating systems. It is also called the Berkeley Fast File System, the BSD Fast File System or FFS...
).
Available modules
Storage modules- geom_stripe (RAID0)
- geom_mirror (RAID1)
- geom_raid (Supports RAID functionality on "software raid" controllers)
- geom_raid3 (RAID3)
- geom raid5Geom raid5geom_raid5 is a storage module created for the FreeBSD operating system. It facilitates RAID5 functionality without the need of a hardware RAID controller....
(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 GELIGeli (software)geli is a block device-layer disk encryption system written for FreeBSD, introduced in version 6.0. It utilises the GEOM disk framework. It was designed and implemented by Pawel Jakub Dawidek.- Design details :...
, provides traditional encryption using AESAdvanced Encryption StandardAdvanced Encryption Standard is a specification for the encryption of electronic data. It has been adopted by the U.S. government and is now used worldwide. It supersedes DES...
, BlowfishBlowfish (cipher)Blowfish is a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. Blowfish provides a good encryption rate in software and no effective cryptanalysis of it has been found to date...
, Triple DESTriple DESIn cryptography, Triple DES is the common name for the Triple Data Encryption Algorithm block cipher, which applies the Data Encryption Standard cipher algorithm three times to each data block....
or CamelliaCamellia (cipher)In cryptography, Camellia is a 128-bit block cipher jointly developed by Mitsubishi and NTT. The cipher has been approved for use by the ISO/IEC, the European Union's NESSIE project and the Japanese CRYPTREC project...
algorithms. It can support data authentication using MD5MD5The MD5 Message-Digest Algorithm is a widely used cryptographic hash function that produces a 128-bit hash value. Specified in RFC 1321, MD5 has been employed in a wide variety of security applications, and is also commonly used to check data integrity...
, SHA1, SHA256, SHA384, SHA512 or RIPEMD160) - geom_bde (also called GBDEGBDEGBDE, standing for GEOM Based Disk Encryption, is a block device-layer disk encryption system written for FreeBSD, initially introduced in version 5.0. It is based on the GEOM disk framework. GBDE was designed and implemented by Poul-Henning Kamp and Network Associates Inc...
, leading edge encryption with four cryptographic barriers) - geom_shsec (shared secretShared secretIn cryptography, a shared secret is a piece of data, known only to the parties involved, in a secure communication. The shared secret can be a password, a passphrase, a big number or an array of randomly chosen bytes....
encryption module) - geom_uzip (read-only ZIPZIP (file format)Zip is a file format used for data compression and archiving. A zip file contains one or more files that have been compressed, to reduce file size, or stored as is...
compressed images)
Filesystem modules
- geom_label (allows providers to have their own name labeled for easy partitioning)
- geom_journal (adds journalingJournaling file systemA journaling file system is a file system that keeps track of the changes that will be made in a journal before committing them to the main file system...
support to the Unix File System (UFSUnix File SystemThe Unix file system is a file system used by many Unix and Unix-like operating systems. It is also called the Berkeley Fast File System, the BSD Fast File System or FFS...
)) - geom_cache (adds cachingCacheIn computer engineering, a cache is a component that transparently stores data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere...
support for increased performance using RAMRam-Animals:*Ram, an uncastrated male sheep*Ram cichlid, a species of freshwater fish endemic to Colombia and Venezuela-Military:*Battering ram*Ramming, a military tactic in which one vehicle runs into another...
as buffercache) - geom_mbr
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 LVM2Logical Volume Manager (Linux)LVM is a logical volume manager for the Linux kernel; it manages disk drives and similar mass-storage devices, in particular large ones. The term "volume" refers to a disk drive or partition thereof...
volumes)