A comprehensive tape library management plugin for Unraid with full LTFS (Linear Tape File System) support. Designed for HP StoreEver 1/8 G2 and similar tape autoloaders with LTO drives.
- Visual Dashboard - Real-time visualization of library slots, drives, and tape status
- Load/Unload Operations - Move tapes between slots and drives with click-to-select interface
- Transfer Operations - Move tapes between storage slots
- Inventory Scan - Rescan library to detect tape barcodes
- Robot Control - Position robot arm for maintenance
- Format Tapes - Format tapes with LTFS filesystem
- Mount/Unmount - Mount LTFS tapes as regular filesystems
- File Browser - Browse, upload, and download files on mounted tapes
- Filesystem Check - Verify and repair LTFS filesystem integrity
- Sync Control - Manual sync to flush metadata to tape
- Drive Status - View tape drive status and information
- Rewind - Rewind tape to beginning
- Eject - Eject tape from drive
- Retension - Retension tape for optimal performance
- Erase - Quick or full erase of tape
- Tape Inventory - Track all tapes with labels, notes, and metadata
- History Tracking - Complete history of all tape operations
- Search & Filter - Find tapes by barcode, label, or notes
- Sync with Library - Auto-discover tapes from library
The plugin provides a modern, dark-themed interface that integrates seamlessly with Unraid's web UI.
- mtx - For tape changer/robot control
- mt-GNU - For tape drive control
- lsscsi - For SCSI device discovery
- sg3_utils - For SCSI generic utilities
- LTFS - For Linear Tape File System support (required for LTFS features)
- SCSI or SAS tape library/autoloader
- LTO tape drive (LTO-5 or later recommended for LTFS)
- Properly configured HBA with multi-LUN support
- Open Unraid web interface
- Go to Apps (Community Applications)
- Search for "Tape Library"
- Click Install
- Download the plugin file:
wget https://github.com/und3f1ned/unraid-tape-library/raw/main/unraid-tape-library.plg - Copy to your Unraid flash drive:
cp unraid-tape-library.plg /boot/config/plugins/ - Install the plugin:
installplg /boot/config/plugins/unraid-tape-library.plg
- Navigate to Tools → Tape Library → Settings
- Configure your devices:
- Changer Device: SCSI generic device for the robot (e.g.,
/dev/sg1) - Tape Device: Tape drive device (e.g.,
/dev/st0) - SG Device: SCSI generic device for LTFS (e.g.,
/dev/sg0) - Mount Point: Where to mount LTFS tapes (default:
/mnt/ltfs)
- Changer Device: SCSI generic device for the robot (e.g.,
Run the following command to identify your tape devices:
lsscsi -gLook for entries like:
[2:0:0:0] tape HP Ultrium 5-SCSI ... /dev/st0 /dev/sg0
[2:0:0:1] mediumx HP 1x8 G2 AUTOLDR ... - /dev/sg1
- The
tapedevice with/dev/sg*is your SG Device - The
tapedevice with/dev/st*is your Tape Device - The
mediumxdevice is your Changer Device
For the HP StoreEver 1/8 G2 Tape Autoloader:
- Set the autoloader to Random mode via the front panel
- Ensure both LUN 0 (drive) and LUN 1 (changer) are visible
- The typical device mapping is:
- Changer:
/dev/sg1 - Tape Drive:
/dev/st0 - SG for LTFS:
/dev/sg0
- Changer:
- Go to Tools → Tape Library
- Click on a slot containing a tape (highlighted in blue)
- Click Load Selected
- Choose the target drive and confirm
- Load a tape into the drive
- Go to LTFS Operations page
- Click Mount LTFS
- Once mounted, use the File Browser to access files
- Load an unformatted tape into the drive
- Go to LTFS Operations page
- Enter a volume name (optional)
- Check the confirmation box
- Click Format Tape
- Mount an LTFS tape
- Go to File Browser
- Use Upload to copy files from Unraid to tape
- Use Download to copy files from tape to Unraid
- Always Unmount before unloading the tape
- Ensure the tape library is in Random mode (not Sequential)
- Check that all SCSI LUNs are visible to the system
- Verify the HBA supports multiple LUNs
- Ensure the tape is formatted with LTFS
- Check if another process has the device open
- Try the "Rollback mount" option for recovery
- LTO tapes work best with large sequential writes
- Use
ltfs_ordered_copyfor optimal file placement - Avoid many small file operations
- Ensure LTFS is unmounted first
- Try rewinding the tape before unloading
- Check for any active processes using the tape
/usr/local/emhttp/plugins/unraid-tape-library/
├── TapeLibrary.page # Main dashboard
├── TapeLibraryLTFS.page # LTFS operations
├── TapeLibraryTapes.page # Tape database
├── TapeLibraryFiles.page # File browser
├── TapeLibrarySettings.page # Configuration
├── TapeLibraryHistory.page # Activity history
├── include/
│ ├── TapeLibrary.php # Core PHP library
│ ├── helpers.php # Helper functions
│ └── api.php # REST API endpoint
├── css/
│ └── tape-library.css # Styles
├── js/
│ └── tape-library.js # Frontend JavaScript
└── scripts/
└── tape-operations.sh # Shell script helpers
/boot/config/plugins/unraid-tape-library/
├── tape-library.cfg # Configuration file
└── tapes.json # Tape database
The plugin provides a REST API at /plugins/unraid-tape-library/include/api.php
action=changer_status- Get library statusaction=load_tape&slot=N&drive=0- Load tapeaction=unload_tape&slot=N&drive=0- Unload tapeaction=transfer_tape&from_slot=N&to_slot=M- Transfer tapeaction=inventory- Run inventory scan
action=mount- Mount LTFSaction=unmount- Unmount LTFSaction=format_tape&volume_name=NAME- Format tapeaction=check_tape&deep=false- Check filesystem
action=list_files&path=/- List filesaction=copy_to_tape&source=PATH&destination=/- Copy to tapeaction=copy_from_tape&source=/file&destination=PATH- Copy from tape
Contributions are welcome! Please submit pull requests to the GitHub repository.
This project is licensed under the MIT License.
- Based on concepts from rezo552/unraid-ltfs
- Uses the LTFS Reference Implementation
- Built for the Unraid community
- Forum: Unraid Forums - LTO Tape Experience
- Issues: GitHub Issues