Legacy formats

Keeping old tapes readable during a migration.

A large tape migration runs for months, and during that time people still need files from both the old archive and the new one. Remanence keeps the code that drives tapes and libraries separate from the code that understands an archive format, so a read-only reader for a legacy format can be added above the hardware layer without touching it. Older tapes can then be recovered by the new system, without the application that wrote them.

Where it helps

Suppose an archive changes software before replacing a tape library that still has useful life. The existing cartridges were written by the old application and the new ones use the new format. The drives can read both. But each application also moves cartridges, loads drives, positions tape, reserves devices, and keeps its own record of what is mounted where, and two applications cannot safely do that to the same hardware at once.

The usual answer is to split the library into logical partitions with drives dedicated to each application. That prevents collisions, but neither side can borrow an idle drive from the other. If the new system can read the old format itself, the drives can stay in one pool. This helps in that particular arrangement. Most migrations will run old and new on separate hardware, and then the reader simply removes the dependency on the old software.

Two applications

Legacy application
Legacy format
Logical library A · fixed drives
New application
New format
Logical library B · fixed drives

Drives cannot cross the application boundary.

One system, two formats

One tape controller
Legacy-format reader
REM-OBJECT
One drive pool

Either kind of job can go to any free compatible drive.

Fig. 1 — With two applications, a library partition keeps them from colliding by giving each its own drives. With the legacy reader inside the new system, the partition is not needed.

The example depends on media compatibility. IBM documents, for instance, that an LTO-9 drive can read and write both LTO-8 and LTO-9 cartridges; other combinations differ. IBM also states that a drive assigned to one logical library cannot be shared with another, and HPE's MSL3040 guide assigns at least one drive to each partition. A format reader changes none of these hardware rules.

Format sits above the hardware

Remanence's SCSI and library layers know about drives, slots, filemarks, tape records, and position. They do not know what archive format is in those records. Format-specific code lives above that line, and a reader for another format plugs in there. It can probe a source to identify the format, say what it is able to do, and expose the files it finds through one common reader interface.

The interface is read-only. It does not define a way to write another vendor's format. And although "plug-in" is a fair description, readers are Rust modules compiled in when a binary is built. Remanence does not load code at run time.

Probe
identify the format without consuming the archivereturns a confidence level and the kind of source the reader needs
Scan
list entries without restoring their contentspath · kind · size · where to resume
Stream
deliver file contents in archive orderreports checksum failures and unreadable ranges alongside the good data

probe, scan, and stream_all are the operations in the public Rust interface. Damage reporting is part of scan and stream rather than a separate operation. A reader may support indexed single-file reads; the one we use does not. The present command line also requires the operator to name the format and the source.

Why we built one

Much of our existing tape archive was written by a proprietary application we no longer run. We had the tapes but no supported version of the software that could recover them on the systems we use now. We reverse-engineered the on-tape format from the evidence left on the tapes and wrote a read-only reader. An open specification would have spared us most of that work, which is one reason the REM formats are published.

One catalog during the transition

A reader solves the tape side. The application above Remanence can import the old catalog so that legacy and native copies appear in one search. When someone asks for a file, that application picks the copy and asks Remanence to use the matching reader. The person asking does not need to know which program wrote the tape.

The catalog, the database, and the search interface belong to that application, not to Remanence. If the old software still has a dependable API, the application could send legacy restores there instead; a direct reader is useful when that connection is unavailable, or when the archive should no longer depend on the old software. An imported catalog says what should be on a tape. It does not prove the tape is readable.

Current status

Stock Remanence ships with no legacy readers. They live in the separate Remanence adaptors project, which builds Remanence with the chosen readers linked in. The tools still require the operator to name the format and the source; automatic detection and shared-drive scheduling are not implemented.

A reader cannot overcome a drive or cartridge mismatch, and it cannot supply a missing encryption key. A reverse-engineered reader may also meet a variant of the format it has never seen. Restored and migrated files still need to be checked before old tapes are retired.

Inspect the reader interface → ·  See the adaptors → ·  Read the command reference →

The reader we used for our own migration handles the uncompressed BRU and BRU-PE variants we have tested. It is migration tooling, not part of Remanence core. The archives were written by software from TOLIS Group, which ceased operations and support in 2020; OWC later acquired the product technology and customer base. See the contemporary notice and the acquisition announcement.