GEOM is the main storage
framework for the
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
. 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 (e.g.)
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
.
GEOM was developed for the FreeBSD Project by
Poul-Henning Kamp and
NAI Labs, the Security Research Division of Network Associates, Inc. under
DARPA
The Defense Advanced Research Projects Agency (DARPA) is a research and development agency of the United States Department of Defense responsible for the development of emerging technologies for use by the military. Originally known as the Adva ...
/
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 provider is the 'source' of the geom module, often a physical
hard drive
A hard disk drive (HDD), hard disk, hard drive, or fixed disk is an electro-mechanical data storage device that stores and retrieves digital data using magnetic storage with one or more rigid rapidly rotating hard disk drive platter, pla ...
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(s)''
For example, the geom_mirror module may use (as a consumer) the following providers: /dev/ada0, /dev/ada1, while it creates (as a provider) 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
The Unix file system (UFS) is a family of file systems supported by many Unix and Unix-like operating systems. It is a distant descendant of the original filesystem used by Version 7 Unix.
Design
A UFS volume is composed of the followin ...
(UFS).
Available modules
Storage modules
* geom_stripe (
RAID0)
* geom_mirror (
RAID1)
* geom_raid (Supports RAID functionality on "software raid" controllers)
* 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, provides traditional encryption using
AES,
Blowfish,
Triple DES
In cryptography, Triple DES (3DES or TDES), officially the Triple Data Encryption Algorithm (TDEA or Triple DEA), is a symmetric-key block cipher, which applies the DES cipher algorithm three times to each data block. The 56-bit key of the Dat ...
or
Camellia
''Camellia'' (pronounced or ) is a genus of flowering plants in the family Theaceae. They are found in tropical and subtropical areas in East Asia, eastern and South Asia, southern Asia, from the Himalayas east to Japan and Indonesia. There are ...
algorithms. It can support data authentication using
MD5
The MD5 message-digest algorithm is a widely used hash function producing a 128-bit hash value. MD5 was designed by Ronald Rivest in 1991 to replace an earlier hash function MD4, and was specified in 1992 as Request for Comments, RFC 1321.
MD5 ...
,
SHA1,
SHA256,
SHA384,
SHA512 or
RIPEMD160)
* geom_bde (also called
GBDE, leading edge encryption with four cryptographic barriers)
* geom_shsec (
shared secret
In cryptography, a shared secret is a piece of data, known only to the parties involved, in a secure communication. This usually refers to the key of a symmetric cryptosystem. The shared secret can be a PIN code, a password, a passphrase, a b ...
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)
Disk partitioning
* geom_flashmap (partition parts of e.g.
Flash memory
Flash memory is an Integrated circuit, electronic Non-volatile memory, non-volatile computer memory storage medium that can be electrically erased and reprogrammed. The two main types of flash memory, NOR flash and NAND flash, are named for t ...
using either offsets or context)
* geom_part (supports
Disk partitioning
Disk partitioning or disk slicing is the creation of one or more regions on secondary storage, so that each region can be managed separately. These regions are called partitions. It is typically the first step of preparing a newly installed disk ...
of GEOM providers)
* geom_part_apm (support
Apple Partition Map)
* geom_part_bsd (supports
BSD disklabel)
* geom_part_bsd64 (supports the 64-bit variant of BSD disklabels, as used by
DragonFly BSD
DragonFly BSD is a free and open-source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and FreeBSD developer between 1994 and 2003, began working on DragonFly BSD in ...
)
* geom_part_ebr (supports
Extended boot record)
* geom_part_gpt (supports
GUID Partition Table
The GUID Partition Table (GPT) is a standard for the layout of partition tables of a physical computer storage device, such as a hard disk drive or solid-state drive. It is part of the Unified Extensible Firmware Interface (UEFI) standard.
It ha ...
)
* geom_part_ldm (supports
Logical Disk Manager
The Logical Disk Manager (LDM) is an implementation of a logical volume manager for Microsoft Windows NT, developed by Microsoft and Veritas Software. It was introduced with the Windows 2000 operating system, and is supported in Windows XP, Wi ...
)
* geom_part_mbr (supports
Master boot record
A master boot record (MBR) is a type of boot sector in the first block of disk partitioning, partitioned computer mass storage devices like fixed disks or removable drives intended for use with IBM PC-compatible systems and beyond. The concept ...
)
* geom_part_vtoc8 (supports Sun/Solaris VTOC8 disk labels)
Virtualization
* geom_mountver (enables mount verification)
* geom_multipath (support
Multipath I/O to underlying disks)
* 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)
* geom_zero (creates a dummy provider that absorbs all writes and returns zeros on reads)
External links
*
*
References
{{FreeBSD
FreeBSD