New To StarWind, Need Some Help

Software-based VM-centric and flash-friendly VM storage + free version
Post Reply
Awecelot
Posts: 4
Joined: Wed Jul 30, 2025 9:34 pm

Wed Jul 30, 2025 9:46 pm

I am new to this and I am having some issues. I think I already know why, but I want to get some insight into it all from people knowledgeable about this.

- I am currently on a free trial License for StarWind VSAN and it has run out (did not mean to get the trial, but the free version).
- I noticed the expiration but took my time to try and update it.
- We recently had a power outage and when everything came back on I started having issues with docker containers not having permission to access files in the NFS I had setup with StarWind VSAN. (I assume this has to do with the license?).
- I downloaded a free key and iso, but it seems I need to reinstall everything since I cannot revert to the free edition from the edition I am currently on with the trial.

My questions are:
1. Am I correct in assuming there is no permission accessing the NFS because of the License expiration and maybe it only just now took effect after the server needed to restart?
2. Can I reinstall StarWind VSAN without needing to backup the data, wipe the cluster, and reconfigure the RAID setup I have?
yaroslav (staff)
Staff
Posts: 4309
Joined: Mon Nov 18, 2019 11:11 am

Thu Jul 31, 2025 8:23 am

Welcome to StarWind Forum.
NFS should also be available with the free license in GUI.
Try doing the following
- replace the /opt/starwind/starwind-mgmt-scripts/fileservices/get_shares_list.py with

Code: Select all

#!/usr/bin/env python3

import argparse
import json
from concurrent.futures import ThreadPoolExecutor, as_completed

import decorators
import management_rest
from logger import fslog
from schema import Schema
from utils import (
    get_instance_ips,
    get_instance_shares,
    get_node_id,
    get_owner,
    get_share_uid,
    get_used_space,
    get_volume_data,
)


@decorators.AddJsonStatus()
def get_shares_list():
    # Initialize
    result = []
    token = management_rest.create_jwt_token()
    node_id = get_node_id()
    owner = get_owner()

    # Fetch volumes and networks concurrently
    with ThreadPoolExecutor() as executor:
        volumes_future = executor.submit(management_rest.get_volumes, token, node_id)
        networks_future = executor.submit(management_rest.get_networks, token, node_id)

        # Wait for results
        volumes = volumes_future.result()
        networks = networks_future.result()

    ips = get_instance_ips(networks)
    shares = get_instance_shares()

    # Process each share concurrently
    def process_share(share):
        try:
            file_share_uid = get_share_uid(node_id, share['pathOnVolume'], share['fileShareType'])
            volume_data = get_volume_data(volumes['rows'], share['volumeName'])
            if not volume_data:
                fslog.error(f'Failed to retrieve volume data for "{share["volumeName"]}".')
                return None

            used_capacity = get_used_space(share['pathOnVolume'])
            free_capacity = volume_data['freeSpaceBytes']
            network_paths = [
                f"\\\\{ip}\{share['fileShareName']}" if share['fileShareType'] == 'SMB' else f"{ip}:{share['pathOnVolume']}"
                for ip in ips
            ]

            # Build the share entry
            share.update({
                'nodeId': node_id,
                'fileShareUid': file_share_uid,
                'networkPath': network_paths,
                'owner': owner,
                'usedCapacityBytes': used_capacity,
                'freeCapacityBytes': free_capacity,
            })
            return share
        except Exception as e:
            fslog.error(f"Error processing share {share}: {e}")
            return None

    # Run share processing in parallel
    with ThreadPoolExecutor() as executor:
        futures = [executor.submit(process_share, share) for share in shares]
        for future in as_completed(futures):
            share_result = future.result()
            if share_result:
                result.append(share_result)

    # Validate schema
    Schema.validate_schema(result, 'get_shares_list')

    # Log and return the result
    fslog.info(f"Response: {result}")
    return json.dumps(result)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.set_defaults(func=get_shares_list)
    args = parser.parse_args()
    args.func()
- Navigate to WEB and see if the shares are there. (Please wait for ~30 s)
The problem you are referring to is a known issue, we plan fixing it in future builds.

please also note that the triall version is not intended for production.
Awecelot
Posts: 4
Joined: Wed Jul 30, 2025 9:34 pm

Thu Jul 31, 2025 4:45 pm

Thank you for the reply.

Will this work with the trial version? I assume since it is a trial then it is not the free version. I am currently getting popups telling me it has expired and that I need to upgrade, but I meant to install the free version.
yaroslav (staff)
Staff
Posts: 4309
Joined: Mon Nov 18, 2019 11:11 am

Thu Jul 31, 2025 5:00 pm

It should work with free and trial version.

Sadly, I don't have a straighforward way to redeploy the VM.
It will take us some time to draft the procedure and test it.
Do you have any production data on that share, or can you redo it?
Awecelot
Posts: 4
Joined: Wed Jul 30, 2025 9:34 pm

Thu Jul 31, 2025 5:09 pm

It's just some local testing data so nothing too important. I was just curious if I did reinstall StarWind to the free version if I would need to backup the data on the clusters or if the clusters would be retained to the new install?

Is the cluster configuration saved by the StarWind software or directly onto the drives? Is it as simple as just reinstalling StarWind and just picking back up to where I left off?
yaroslav (staff)
Staff
Posts: 4309
Joined: Mon Nov 18, 2019 11:11 am

Thu Jul 31, 2025 6:38 pm

You need somehow to introduce the share and the user I believe. That's the main quest as reinstalling does not wipe the data.
There is a method to reinstall and introduce the shares to the new VM, yet it will require some time to draft the procedure. I can file the request if needed.
The fastest option seems redeploying the VM from the template and connect your storage to it. Try setting up the shares afresh afterward.
Awecelot
Posts: 4
Joined: Wed Jul 30, 2025 9:34 pm

Thu Jul 31, 2025 8:24 pm

I'll give it a try, thank you.

I'll reply here if I have any issues.
yaroslav (staff)
Staff
Posts: 4309
Joined: Mon Nov 18, 2019 11:11 am

Fri Aug 01, 2025 6:51 am

Good luck with your project!
P.s. consider trialing VSAN more (you should be eligible for support from my colleagues while trialing).
It will be the best way learning about StarWind's solutions.
Post Reply