Using Storware to backup Hyper-V using NAS
Background
This article was written on 04-Feb-25
For unknown reason/condition at the time of this writing, it is very challenging to find a free backup software for MS Hyper-V.
What? You must think I am short minded.
But what I found is most of these free backup software requires MS Windows license.
If you are short on budget and/or your enviroment is miniscule, purchasing an OS license would be overkill.
So I have to find a backup software which can run on open source operating system.
Two options arise to that challenge: 1. Nakivo; 2. Storware
Nakivo is excellent, but I had to find it the hard way that they only provide trial license. So that kills it.
Storware earlier provided only x2 objects backup license, but now they have community edition (https://storware.eu/licenses/free/)
- Backup up to 5 virtual machines and max. 10 Microsoft 365 users
- OS agent — file-level backup for Windows and Linux limited to 1 TB
- no support option available — please use the Community Forum
- no enterprise backup integration module (IBM, Dell EMC, Veritas, MicroFocus)
- no Endpoints backup module available
Pros and Cons
Pros:
- Community edition is available and
- It does work for Hyper-V and MS365 backup.
Cons:
- Community forum is slow, but hopefully with time, more people would build their skills.
- Challenging to setup as it need you to setup CentOS, iSCSI.
- There is no compression or deduplication, so it requires lots of storage space.
- Utilizes staging space; something which I have not heard for many years.
- Unable to use NAS shared folder, but instead need to setup iSCSI.
- Hyper-V backup requires agent; again this is unusual nowadays.
- On my initial setup, storware is unable to retrieve my virtual machine list * see below
Precautions
I would suggest to set up a separate empty folder or virtual disk or iSCSI as the process involves formatting.
Prerequisites
Physical server running Windows, either core or hyper-v edition.
Virtual Machines running on top of MS Hyper-V.
CentOS 9 Stream installed (I use server with GUI)
and updated (this is important as Storware might not work if you miss certain updates).
NAS device (I use QNAP).
iSCSI host already setup (https://www.qnap.com/en/how-to/tutorial/article/how-to-create-and-use-the-iscsi-target-service-on-a-qnap-nas)
and iSCSI target mounted (https://www.server-world.info/en/note?os=CentOS_Stream_9&p=iscsi&f=2)
Storware community edition license file (you can obtain by registering).
Storware agent (https://repo.storware.eu/storware/addons/hyperv/ HyperV-Agent-Installer.zip)
Setting Up
I tried using the virtual app, but somehow it does not work for me.
Even converting .vmdk to .vhdx does not work.
So I end up setting up CentOS 9 Stream (as per reference) and running the all in one script.
I followed their guide (https://storware.gitbook.io).
What I did is download https://repo.storware.eu/storware/sbr-local-install.sh
Lucky that I have GUI, so I can right click on that script and set it as executable.
If you are lucky enough, the script will setup server and node.
But do not rush to open the web interface yet. You need to setup your iSCSI as staging space by following the guide (https://storware.gitbook.io/backup-and-recovery/deployment/common-tasks/staging-space-configuration).
- Tips: if you need to edit fstab, run text editor using “sudo gedit”
I assume that setting up agent on hyper-v host should be smooth, so I am not discussing it here.
Once Staging space setup and agent installation completed, you can open your browser and go to storware web app (https://[ip/dns]).
Login using your “Admin” user credential and you will be presented with Configuration Wizard.
First you need to upload your license file.
Yes, you need to specify hyper-v host address in https because it will use the agent that you installed earlier.
And since we are not using CA certificate, then we need to specify to trust the certificate.
If inventory synchronization failed, then check whether “trust certificate” option is already active. Otherwise, you may need to reinstall the agent.
*Precaution: on my initial setup, Storware is unable to retrieve my virtual machine. I end up recreating the VM configuration. Restarting Hyper-V host did not help.
*Precaution2: if you are using hyper-v replication, then Storware will show only one VM. So if you want to show your source VM, then you can delete the replica VM.
I assume that you already finished setting up staging space and mounting iSCSI.
*Important: as backup are copied from source to staging space (/vprotect_data), then to speed up backup process, you need to specify backup destination path as sub folder of /vprotect.
Otherwise, backup files need to be copied again across network to a different device.
*Note: I still have not understood the backup version retention limit. Perhaps we should just disable it for now.
I can only assume that if I want to keep 2 copies of my daily backup (week 1 and week 2) then I should set limit number of versions = 2?
*Note: as we are using synthetic file system as our backup destination, then your policy rule schedule for incremental backup must be accompanied with schedule for full backup.
Operation
Check your configuration for hyper-V backup from left panel.
Adding other VM to backup policy
To add another virtual machine to your backup policy, select the VM and press assign policy
Create backup schedule
To create backup schedule, select backup policy, schedule and press create.
*Tips: leave “Rules” alone, we will create after this
As we want to have different retention period for monthly (and maybe yearly), then we need to create separate rule.
Monitoring Backup
You can monitor backup in Dasboard or “Workflow Execution Console” lower screen.
Backup Restoration
Maybe I will update in the future if necessary.
Management
Storware all in one installation means both the node and server are installed on the same server.
They can be managed using below command:
sudo systemctl [start/stop/restart] vprotect-node.service
sudo systemctl [start/stop/restart] vprotect-server.service
I can only assume that node should be started before the server.
That’s it for now, let me know if I need to clarify things!