Firestreamer is a software utility that enables the existing tape backup software to access a wide range of non-tape storage media, making possible long-term and off-site retention of data without the need for tape drives.
It has an impressive list of media it supports and works really well with Microsoft Data Protection Manager 2010.
For more information about Firestreamer as well as instructions how to use it visit:
http://www.cristalink.com/fs/Default.aspx
There is however, some work needed to maintain offsite backups using it. Every time you swap the drive to take it offsite you have to:
- Unlock library door in DPM
- Load new Firestreamer media map file
- Lock library door in DPM
To automate this process, you can schedule a job using Task Scheduler to run 5 minutes before the backup job.
First you have to register Firestreamer dll library with the server to be able to interact with it using scripts:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe /codebase "C:\Program Files\Cristalink\FsChanger\FirestreamerInterface.dll"
Create folder on C: drive where you will keep your DPM scripts and copy the following file to it:
C:\Program Files\Microsoft DPM\DPM\bin\dpmshell.psc1
Create .VBS script file in your scripts folder and schedule it to run just before the backup job (this job needs elevated credentials):
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("Powershell.exe -PSConsoleFile ./dpmshell.psc1 ./reload_lib.ps1")
Create reload_lib.ps1 script in the same folder. Change <DPM_NAME> and map file path to match your configuration.
$DPMLib = Get-DPMLibrary -DPMServerName "<DPM_NAME>" Unlock-DPMLibraryDoor -DPMLibrary $DPMLib $ctl = New-Object -com Firestreamer.Controller $ctl.Connect() $libraryNumber = 1 $file = "E:\map.fsmap" $ctl.ChangerLoadMediaFromFile( $libraryNumber, $file ) Lock-DPMLibraryDoor -DPMLibrary $DPMLib
Create library media map in Firestreamer for every USB drive and save it in root of each drive (E:\map.fsmap) so every drive has a map of itself.
Task Scheduler will reload media map from drive that is plugged into the server just before the backup job, so all you have to do is to swap the drives.


Can you elaborate on your setup a bit? Are you using files or are you using the entire disk as a single tape?
I’m using a set of eSATA drives mirrored together and all of my “tape” files are on this volume. Each time I off site a disk, I simply yank the drive and replace it with another. The hardware then recreates the mirror. Overwriting all data on the newly inserted disk. I don’t really bother with locking, unlocking or loading media maps since the files technically don’t go anywhere.
Hi Mike.
I’m using file media. I have 4 external USB drives 500GB each (wallet size sort of thing) for Mon-Thur and 2 x 1TB drives (bit bigger) for weekend. The way you’re doing it is quite smart hack too, I like it. Although I think that forcing hardware to recreate the mirror every time you swap the “tape” is bit of an overhead (Then again, let them do some work too
).
The reason I use file media is that sometimes (if needed) I can run multiple tape backups to one drive (I’m just hoping that DPM 2010 SP1 if ever released will bring some improvements to tape management.
The problem we came across was the fact that you can’t just simply swap the drive (even if the file has the same name) and expect FireStreamer and DPM to work (in your setup, you can as the copy of the file is always there on the volume as you say).
Basically each drive has a different day’s tape on it (Oh and by the way, why can’t we set long-term retention lower than 1 week?) as we take backups offsite daily.
We tried a lot of things. Tried calling the file media files the same on different drives (although not sure what we tried to achieve by that), creating library map which had file media from all drives together and let the DPM do the management (not a good idea, especially if you’re trying to back up different things to one drive). The latter would actually work if DPM had any sort of tape management I think.
Nothing worked. Backups were failing. To get them to work we still had to unlock library, load different library map to FireStreamer and lock the library.
Obviously such a simple task gets old quickly if you have to do it daily, hence the script.