Transfer Architecture

From The Open Source Backup Wiki (Amanda, MySQL Backup, BackupPC)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The transfer architecture arises from a simple observation about Amanda: its core job is to move data around. Amanda has the Application API, which handles getting data from clients (and returning it on restores); and the Device API, which handles long-term storage of data. The transfer architecture (abbreviated XFA) connects these two APIs.

Overview

At a high level, the XFA is simple. It manages transfers, which are composed of transfer elements. A transfer has a source element, which produces data, a destination element, which consumes it, and zero or more filters, which transform the data that passes through them. Elements send messages to indicate the status of a transfer and record information like index offsets. It is similar to GStreamer, but optimized for Amanda's needs rather than those of media streaming applications.

Benefits

The transfer architecture has the following benefits:

  • Transfer elements are connected in a maximally efficient manner
  • New elements are easy to add, to support new encryption algorithms, compression utilities, compression offloading, etc.
  • DRY-compliant -- the same code is used in all data transfers, so it is better-tested and error messages are predictable

Conceptual Details

API Details

For a full list of available elements and their use, see Amanda::Xfer. The most authoritative source for the architecture, particularly regarding implementation details, is the source itself - see xfer-src/ in the source distribution.