GEOM
GEOMis the main storageframeworkfor theFreeBSDoperating 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 forgeom modulesto connect to the framework. For example, the geom_mirror module providesRAID1or 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.
GEOM was developed for the FreeBSD Project byPoul-Henning KampandNAI Labs,the Security Research Division of Network Associates, Inc. underDARPA/SPAWARcontract N66001-01-C-8035 ( "CBOSS" ), as part of the DARPA CHATS research program. The name symbolizes its impact on disk geometry.
Stacked design
[edit]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 physicalhard drivebut sometimes avirtualized disksuch as amemory 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 afilesystemis 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 nativeUnix File System(UFS).
Available modules
[edit]Storage modules[1]
- 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 orJBOD)
- 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 calledGELI,provides traditional encryption usingAES,Blowfish,Triple DESorCamelliaalgorithms. It can support data authentication usingMD5,SHA1,SHA256,SHA384,SHA512orRIPEMD160)
- geom_bde (also calledGBDE,leading edge encryption with four cryptographic barriers)
- geom_shsec (shared secretencryption module)
- geom_uzip (read-onlyZIPcompressed images)
Filesystem modules
- geom_label (allows providers to have their own name labeled for easy partitioning)
- geom_journal (addsjournalingsupport to the Unix File System (UFS))
- geom_cache (addscachingsupport for increased performance usingRAMas buffercache)
Disk partitioning
- geom_flashmap (partition parts of e.g.Flash memoryusing either offsets or context)
- geom_part (supportsDisk partitioningof GEOM providers)
- geom_part_apm (supportApple Partition Map)
- geom_part_bsd (supportsBSD disklabel)
- geom_part_bsd64 (supports the 64-bit variant of BSD disklabels, as used byDragonFly BSD)
- geom_part_ebr (supportsExtended boot record)
- geom_part_gpt (supportsGUID Partition Table)
- geom_part_ldm (supportsLogical Disk Manager)
- geom_part_mbr (supportsMaster boot record)
- geom_part_vtoc8 (supports Sun/Solaris VTOC8 disk labels)
Virtualization
- geom_mountver (enables mount verification)
- geom_multipath (supportMultipath I/Oto 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 LinuxLVM2volumes)
- geom_zero (creates a dummy provider that absorbs all writes and returns zeros on reads)
External links
[edit]- Rhodes, Tom."GEOM: Modular Disk Transformation Framework".FreeBSD Handbook.
- Kamp, Poul-Henning."GEOM tutorial"(PDF).BSDCan 2004.