Hercules: Overview

The Hercules storage management system allows storage and retrieval of dynamic data between disk and persistent media such as digital tape. The system is used in conjunction with the Tornado and Hawk systems to provide a world-class solution for dynamics storage. The Hercules system comprises the following modular components:
- Hercules GUI
- HerculesController
- Hercules Server
What is Hercules?
The Hercules is a system for automating the storage and retrieval of data to and from persistent media. The Hercules system consists of the following separate software components:
| Hercules GUI | A visualization and configuration tool allowing administrators to view current storage and retrieval progress, as well as configure the Hercules system to schedule and prioritize jobs. |
| Hercules Controller | A suite of programs designed to manage archive and retrieval requests, registering the details of data files into databases and scheduling jobs. |
| Hercules Server | A suite of programs to deal with physical activities such as moving tapes within a tape robot and reading and writing from removable media. |
The Hercules Controller is the central ‘controlling’ point of the Hercules, therefore there is only one present within a Hercules system. The Hercules Server may have multiple instances depending on the configuration of the system (it is possible to split the hardware responsibility across multiple Hercules servers). The Hercules GUI may also have multiple instances since many users may wish to see the system operation/configuration at the same time, however no GUI’s need to be present for the Hercules to operate.

Fundamental to the Hercules is the concept of a ‘Job’; a Job within the context of the Hercules can be defined as a series of files sharing common properties to be processed. For example, a series of raw data files acquired by the Hawk acquisition system for a single engine would be processed as a single job (a job most likely containing multiple files). Every Job has associated with it a priority, this represents the urgency for the job to be completed. The priority of a job may change from the creation of the job to the point it is processed, depending on a number of factors such as Priority Rules which may be configured from the GUI.
Hercules GUI
The Hercules GUI (Graphical User Interface) is a front end for the Hercules system as a whole. Its primary function is to provide feedback to users regarding the current state of the system, as well as allowing administrators access to configuration options.
The visualisation side of the GUI presents the user with information such as:
- The size of job queues (how much data is left to restore/archive etc…)
- The operational state of each tape drive within a robot (contents as well as actions)
- The contents and actions of tape robots
- Error logs
- Statistical reports
…and more.
The configuration side of the GUI allows administrators access to options such as:
- Individual tape drive settings (for example restricting to job types)
- Job priority rules configuration
- Hercules Controller settings relating to every controller application
- Maintenance operations (for example automating cleaning tapes)
…and more.

Hercules Server
The Hercules server is the part of the Hercules responsible for controlling hardware; it is a suite of programs consisting of:
- Hercules Server
- Hercules Tape Drive Controller
- Hercules Robot Controller
The Hercules Server interrogates hardware and creates hardware controllers; a list of available hardware can be seen on the right hand side of the application. This list is present to give administrators an opportunity to check that the Hercules Server can see the correct hardware.

The Hercules Server automatically creates Hercules Tape Drive Controllers and Robot Controllers where necessary, each is represented by a small bar below the Server which spawned them. A small amount of feedback is displayed as text on the right hand side of each application.
Right clicking on either of these applications will present the option to show details regarding the network configuration and hardware for which the controller is responsible.

Hercules Controller
The Hercules controller is the part of the Hercules responsible for managing jobs. It is also a centralised communication point for the Hercules, and a communication point between the Hercules system and other HGL Software products. The Hercules Controller, like the Hercules Server, is a suite of programs consisting of:
- Hercules Job Creator
- Hercules Priority Engine
- Hercules Job Scheduler
- Hercules Tape Drive Job
The Hercules Job Creator is responsible for creating new jobs and passing them to the Priority Engine, this involves the creation of Job Spec, or where one has already been created, simply passing it on.

The Hercules Priority Engine manages and schedules jobs, as well as distributing them to different tape drives (via Tape Drive Jobs). Jobs are scheduled according to priority, as well as other factors such as the mode of individual tape drives. The Priority Engine also manages the Hercules database.

The Hercules Job Scheduler is responsible for the creation of Robot and Tape Drive Controllers, creation of Tape Drive Job services to manage them and the management of the Tape Drive Job applications themselves.

The Hercules Tape Drive Job (sometimes referred to as the Tape Drive Job Service) is responsible for communication with Tape Drive Controllers. The Job Scheduler automatically creates (and shuts down) Tape Drive Job applications. There will be one Tape Drive Job application running for each Tape Drive Controller present.
