AIStore 1.4 Object Storage on Ubuntu 24.04 on Azure User Guide
Overview
This guide covers the deployment and use of AIStore (AIS) 1.4 on Ubuntu 24.04 on Azure using cloudimg Azure Marketplace images.
AIStore is an open source object storage system from NVIDIA, built for the read heavy, high throughput access patterns of AI and machine learning training. It stores objects in buckets on local disks and presents them two ways at once: through its own cluster aware API and ais command line client, and through an S3 compatible REST API that unmodified S3 tools and SDKs, such as the AWS CLI and boto3, can point at directly. That makes it a practical home for training datasets, shards, model checkpoints and other large artifacts, without rewriting the code that reads them.
This image is a complete single node cluster. AIStore normally scales out across many storage nodes; this appliance runs the smallest useful shape of the same software, one gateway and one storage target, on one VM, managed by systemd. No Kubernetes, no second VM, no external coordination service and no cloud account are required. Everything below works against local disk.
AIStore has no web interface. It is a storage system: objects in, objects out. Everything here is done with the ais client, the AWS CLI, boto3 or plain HTTP.
Security by design. AIStore in its default upstream form is unauthenticated, and an open S3 compatible object store on a reachable address is a data exposure shape. This image inverts that:
-
Authentication is on in the shipped configuration. The cluster runs with AIStore's own AuthN token service enabled from its very first start, so every gateway path, native and S3 alike, requires a valid token and is refused with HTTP 401 or 403 without one.
-
Nothing is baked into the image. The captured image contains no signing key, no password and no cluster identity. All three services physically cannot start until first boot has generated your VM's own signing key and administrator password, so there is no window in which an unauthenticated object store is listening and no secret is ever shared between customers.
-
The only unauthenticated path is the liveness probe.
GET /v1/healthreturns HTTP 200 and an uptime header, and nothing else. It discloses no version, no configuration, no cluster map and no data, so an Azure Load Balancer or Application Gateway health probe works without a credential. -
Object data lives on its own volume. A dedicated 32 GB data disk is attached and mounted at
/ais/disk0, and that is the storage target's only mountpath, so objects never consume the operating system disk.
What is included:
-
AIStore 1.4.9 built from the pinned upstream release tag, running under systemd as
ais-proxy.service(the gateway) andais-target.service(the storage node) -
AIStore AuthN, the token service that issues and validates the JSON Web Tokens the cluster requires, running as
ais-authn.service -
The
aiscommand line client, built from the same source revision as the cluster so client and server versions always agree -
The S3 compatible API on the gateway, with upstream's reverse proxy mode enabled so a stock S3 client talks to one endpoint and one port
-
The AWS CLI v2 and boto3 already installed, so the S3 API can be exercised the moment you connect
-
ais-envandaistore-selfcheck, two bundled commands that set up an authenticated shell in one line and verify the whole appliance end to end -
A per VM signing key and administrator password generated on first boot and written to a root only credentials file
-
Unattended security upgrades left enabled so the appliance keeps receiving patches
Prerequisites
-
Active Azure subscription, an SSH public key, and a VNet and subnet in the target region
-
Subscription to this listing on Azure Marketplace
-
A Network Security Group allowing TCP 22 for administration and TCP 8080 for the AIStore gateway, which carries both the native API and the S3 compatible API. Restrict
8080to the subnet your training nodes or applications run in rather than opening it to the internet. TCP 8081 is the storage target and is only needed by clients that use the native API from another machine; the S3 API never needs it. The intra cluster ports9080,10080,9081and10081are bound to the VM's own network address and never need to be opened.
Recommended virtual machine size: Standard_B2s with 2 vCPU and 4 GB RAM suits evaluation and light dataset serving. For real training workloads choose a size with more vCPU, memory and network bandwidth, such as Standard_D4s_v5 or above, and add mountpaths on larger disks as described later in this guide.
Deploy the virtual machine
Deploy from the Azure Portal by selecting the image from Azure Marketplace, choosing your VM size, and supplying your SSH public key for the azureuser account. Or deploy from the Azure CLI.
These commands run on your own workstation, not on the VM:
az vm create \
--resource-group my-resource-group \
--name my-aistore-vm \
--image <this-marketplace-image> \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
az vm open-port --resource-group my-resource-group --name my-aistore-vm --port 8080
The dedicated data disk is part of the image, so it is attached, formatted and mounted at /ais/disk0 automatically. You do not create or attach it yourself.
Connect over SSH once the VM is running:
ssh azureuser@<vm-ip>
Confirm the cluster is healthy
First boot generates this VM's signing key and administrator password, starts the three services and forms the cluster. It normally completes within a minute of the VM becoming reachable.
Check that all three services are running:
systemctl is-active ais-authn.service ais-proxy.service ais-target.service
Expected output
active
active
active
ais-env reads the root only credentials file, logs in to AuthN and prints ready to use exports for both the native client and any S3 client. Evaluate it once per shell, then ask the cluster how it is doing:
eval "$(sudo ais-env)"
ais show cluster
Expected output
PROXY MEM USED(%) MEM AVAIL SYS CPU(%) UPTIME STATUS ALERT
p[LYzPrJRY][P] 1.39% 3.21GiB 9% 9m30s online low-cpu
TARGET MEM USED(%) MEM AVAIL CAP USED(%) CAP AVAIL SYS CPU(%) UPTIME STATUS ALERT
t[jIDUkeFR] 1.35% 3.21GiB 5% 29.565GiB 4% 1m20s online low-cpu
Cluster:
CLI Endpoint: http://10.0.0.19:8080
Proxies: 1
Targets: 1 (one disk)
Capacity: used 1.64GiB (5%), available 29.57GiB
Cluster Map: version 276, UUID OY_9UiN0O, primary p[LYzPrJRY]
Software: 4.9.a809c60
Backend: AWS, Azure
Deployment: linux
Status: 2 online
Rebalance: -
Authentication: enabled
The node identifiers, the cluster map UUID and the addresses are unique to your VM, so they will differ from the example above. Authentication: enabled is the line to look for: it confirms the cluster is refusing unauthenticated requests. The low-cpu alert is AIStore noting that a 2 vCPU VM is below what it considers a production storage node; it is advisory and the cluster is fully functional. It disappears on a larger VM size.
Confirm object data is on the dedicated volume and not the operating system disk:
eval "$(sudo ais-env)"
ais show storage mountpath
df -h /ais/disk0
Expected output
jIDUkeFR
Used: min= 5%, avg= 5%, max= 5%
/ais/disk0 /dev/sdc(ext4)
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 32G 112K 30G 1% /ais/disk0

Retrieve your per VM credentials
First boot generates the administrator password for this VM and writes it, with the endpoint addresses, to a root only file. Read it when you need to authenticate from another machine:
sudo cat /root/aistore-credentials.txt
The file records the administrator username and password, the gateway URL, the S3 endpoint URL, the AuthN URL and this VM's public address, along with copy ready example commands. It is the only place the password is written, it is mode 0600 and owned by root, and it exists only on your VM.
On the VM itself you rarely need the password at all, because ais-env reads that file for you and exports a short lived token:
sudo ais-env | sed -E "s/(TOKEN)='.*'/\1='<jwt>'/"
Expected output
export AIS_ENDPOINT='http://10.0.0.19:8080'
export AIS_AUTHN_URL='http://10.0.0.19:52001'
export AIS_AUTHN_TOKEN='<jwt>'
export AIS_S3_ENDPOINT='http://10.0.0.19:8080/s3'
export AWS_ACCESS_KEY_ID='aistore'
export AWS_SECRET_ACCESS_KEY='aistore'
export AWS_SESSION_TOKEN='<jwt>'
export AWS_DEFAULT_REGION='us-east-1'
export AWS_EC2_METADATA_DISABLED='true'
Tokens are valid for 24 hours by default. Run eval "$(sudo ais-env)" again to get a fresh one.
Store and read your first objects
This is the core of the product: create a bucket, write an object, read it back, and confirm the bytes that came back are the bytes that went in.
eval "$(sudo ais-env)"
head -c 4194304 /dev/urandom > /tmp/dataset.bin
ais bucket create ais://cloudimg-demo
ais put /tmp/dataset.bin ais://cloudimg-demo/dataset.bin
ais ls ais://cloudimg-demo
ais get ais://cloudimg-demo/dataset.bin /tmp/dataset-out.bin
sha256sum /tmp/dataset.bin /tmp/dataset-out.bin
Expected output
"ais://cloudimg-demo" created
PUT "/tmp/dataset.bin" => ais://cloudimg-demo/dataset.bin
NAME SIZE
dataset.bin 4.00MiB
GET dataset.bin from ais://cloudimg-demo as /tmp/dataset-out.bin (4.00MiB)
982049437e976ec56e3a31d2325080edd50fe55289de806db92ac99495f741aa /tmp/dataset.bin
982049437e976ec56e3a31d2325080edd50fe55289de806db92ac99495f741aa /tmp/dataset-out.bin
The two checksums match, which is the proof that the object round tripped through storage unchanged. Your checksum will differ because the source file is random.

Delete an object, and the bucket, when you are finished with them:
eval "$(sudo ais-env)"
ais object rm ais://cloudimg-demo/dataset.bin
ais ls ais://cloudimg-demo
Expected output
deleted "dataset.bin" from ais://cloudimg-demo
NAME SIZE
Use the S3 compatible API
Everything you just did through the native client is also reachable through the S3 compatible API on the same gateway, at http://<vm-address>:8080/s3. Unmodified S3 clients work: AIStore accepts its token in the standard AWS session token header, so you pass the token as AWS_SESSION_TOKEN and use placeholder values for the access key and secret. ais-env has already set all of that for you.
The AWS CLI v2 is installed on the image:
eval "$(sudo ais-env)"
head -c 4194304 /dev/urandom > /tmp/s3-src.bin
aws --endpoint-url "$AIS_S3_ENDPOINT" s3 mb s3://cloudimg-s3-demo
aws --no-progress --endpoint-url "$AIS_S3_ENDPOINT" s3 cp /tmp/s3-src.bin s3://cloudimg-s3-demo/via-s3.bin
aws --endpoint-url "$AIS_S3_ENDPOINT" s3 ls s3://cloudimg-s3-demo/
aws --no-progress --endpoint-url "$AIS_S3_ENDPOINT" s3 cp s3://cloudimg-s3-demo/via-s3.bin /tmp/s3-out.bin
sha256sum /tmp/s3-src.bin /tmp/s3-out.bin
Expected output
make_bucket: cloudimg-s3-demo
upload: ../../tmp/s3-src.bin to s3://cloudimg-s3-demo/via-s3.bin
2026-08-07 06:57:07 4194304 via-s3.bin
download: s3://cloudimg-s3-demo/via-s3.bin to ../../tmp/s3-out.bin
bcf7b906cef78ddb7c4bb09efc77bf312c62a4775d787c758b59c4f96e7003e2 /tmp/s3-src.bin
bcf7b906cef78ddb7c4bb09efc77bf312c62a4775d787c758b59c4f96e7003e2 /tmp/s3-out.bin
The same buckets and objects are visible from either API, so you can write with an S3 tool and read with the native client, or the other way round. boto3, the official AWS SDK for Python, is installed as well:
eval "$(sudo ais-env)"
python3 - <<'PY'
import boto3, os
s3 = boto3.client(
"s3",
endpoint_url=os.environ["AIS_S3_ENDPOINT"],
aws_access_key_id="aistore",
aws_secret_access_key="aistore",
aws_session_token=os.environ["AIS_AUTHN_TOKEN"],
region_name="us-east-1",
)
print([b["Name"] for b in s3.list_buckets()["Buckets"]])
PY
Expected output
['cloudimg-s3-demo', 'cloudimg-demo']
Both buckets appear, including the one created earlier with the native client, because there is one namespace behind both APIs.

Remove the demonstration bucket when you are done:
eval "$(sudo ais-env)"
aws --endpoint-url "$AIS_S3_ENDPOINT" s3 rm s3://cloudimg-s3-demo/via-s3.bin
aws --endpoint-url "$AIS_S3_ENDPOINT" s3 rb s3://cloudimg-s3-demo
ais bucket rm ais://cloudimg-demo --yes
To point an existing application at the appliance, set its S3 endpoint to http://<vm-address>:8080/s3, its region to any value, its access key and secret to any placeholder, and its session token to a token from ais-env. No client patching is required.
Confirm the appliance is closed
Every path except the liveness probe refuses a request that carries no token, on the VM's own routable address as well as on loopback. Prove it for yourself:
AIS_IP=$(ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1 | head -1)
printf 'anonymous native /v1/cluster : HTTP '; curl -s -o /dev/null -w '%{http_code}\n' "http://${AIS_IP}:8080/v1/cluster"
printf 'anonymous S3 /s3 : HTTP '; curl -s -o /dev/null -w '%{http_code}\n' "http://${AIS_IP}:8080/s3"
printf 'forged token /v1/cluster : HTTP '; curl -s -o /dev/null -w '%{http_code}\n' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJmb3JnZWQifQ.forged' "http://${AIS_IP}:8080/v1/cluster"
printf 'liveness probe /v1/health : HTTP '; curl -s -o /dev/null -w '%{http_code}\n' "http://${AIS_IP}:8080/v1/health"
Expected output
anonymous native /v1/cluster : HTTP 401
anonymous S3 /s3 : HTTP 403
forged token /v1/cluster : HTTP 401
liveness probe /v1/health : HTTP 200
An unmodified S3 client with no token is refused in the same way:
AIS_IP=$(ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1 | head -1)
if env -u AWS_SESSION_TOKEN AWS_ACCESS_KEY_ID=x AWS_SECRET_ACCESS_KEY=x AWS_DEFAULT_REGION=us-east-1 \
aws --endpoint-url "http://${AIS_IP}:8080/s3" s3 ls >/dev/null 2>&1; then
echo "UNEXPECTED: an unauthenticated client listed buckets"
else
echo "refused: an unauthenticated S3 client cannot list buckets"
fi
Expected output
refused: an unauthenticated S3 client cannot list buckets
The client's own error message is An error occurred (None) when calling the ListBuckets operation: token required.
The per VM secrets are readable only by root and the service account:
sudo stat -c '%a %U:%G %n' /root/aistore-credentials.txt /etc/ais/ais-secret.env /etc/ais/authn-secret.env
Expected output
600 root:root /root/aistore-credentials.txt
640 root:ais /etc/ais/ais-secret.env
640 root:ais /etc/ais/authn-secret.env

Run the bundled self check
aistore-selfcheck verifies the entire appliance end to end at any time. It authenticates with your VM's own credential, creates a bucket, writes a 4 MiB object, reads it back and compares checksums, lists it and deletes it, over both the native API and the S3 compatible API, and then confirms that anonymous and forged requests are refused on the routable address:
sudo aistore-selfcheck
Expected output
selfcheck: authenticated as admin with the per-VM credential
selfcheck: wrong password refused by AuthN
selfcheck: native: created ais://cloudimg-selfcheck-53663
selfcheck: native: PUT 4 MiB object
selfcheck: native: GET byte-compare OK (sha256 34481059ef4221a4...)
selfcheck: native: LIST shows native.bin
selfcheck: native: DELETE removed the object
selfcheck: s3: created s3://cloudimg-s3-selfcheck-53663
selfcheck: s3: PUT 4 MiB object
selfcheck: s3: LIST shows s3.bin
selfcheck: s3: GET byte-compare OK (sha256 34481059ef4221a4...)
selfcheck: s3: DELETE removed the object
selfcheck: anonymous native request to 10.0.0.19:8080 refused (HTTP 401)
selfcheck: anonymous S3 request to 10.0.0.19:8080/s3 refused (HTTP 403)
selfcheck: unauthenticated aws CLI over the routable address refused
selfcheck: forged token refused (HTTP 401)
selfcheck: liveness probe /v1/health returns 200 (no version, no config, no data)
selfcheck: object data volume /ais/disk0 is mounted
selfcheck: ALL CHECKS PASSED — native and S3 round-trips proved, anonymous access refused
The bucket names contain the process id, and the checksums and address are your VM's own, so those lines will differ from the example above.
Reach AIStore from another machine
From the same virtual network there is nothing to do beyond opening TCP 8080 in the Network Security Group. Point your client at http://<vm-private-address>:8080 for the native API or http://<vm-private-address>:8080/s3 for the S3 API, and pass a token from ais-env on the VM. This is the normal deployment shape: an object store serving datasets to compute in the same network.
From your own workstation, over the S3 API, the public address works directly once TCP 8080 is open to your address, because the S3 API is served entirely by the gateway:
aws --endpoint-url "http://<vm-ip>:8080/s3" s3 ls
with AWS_SESSION_TOKEN set to a token you obtained on the VM, and placeholder values for the access key and secret.
From your own workstation, over the NATIVE API, use an SSH SOCKS tunnel. The native API redirects object reads and writes to the storage target using the VM's own network address, so a plain port forward is not enough, and a SOCKS proxy routes the redirect correctly. Run this on your workstation:
ssh -D 1080 -N azureuser@<vm-ip>
Then, in another terminal on your workstation, with the ais client installed:
export ALL_PROXY=socks5h://127.0.0.1:1080
export AIS_ENDPOINT=http://<private-ip>:8080
export AIS_AUTHN_TOKEN=<your-token>
ais show cluster
Add more storage
The storage target uses /ais/disk0 as its only mountpath. To grow capacity, attach another Azure data disk to the VM, format and mount it, then tell AIStore about it. These steps need a second disk that is not present on a freshly deployed VM, so run them only after you have attached one:
# after attaching and mounting a new disk at /ais/disk1, owned by the ais user
eval "$(sudo ais-env)"
ais storage mountpath attach /ais/disk1
ais show storage mountpath
Mount the new filesystem with an /etc/fstab entry so it survives a reboot, and make sure it is owned by the ais user. AIStore spreads objects across all attached mountpaths.
Server components
| Component | Version | Purpose |
|---|---|---|
AIStore gateway (aisnode -role=proxy) |
1.4.9 | Serves the native API and the S3 compatible API, holds the cluster map |
AIStore target (aisnode -role=target) |
1.4.9 | Stores objects on /ais/disk0 |
| AIStore AuthN | 1.4.9 | Issues and validates the JSON Web Tokens the cluster requires |
ais command line client |
1.4.9 | Native client, built from the same source revision as the cluster |
| AWS CLI | 2.36.18 | Unmodified S3 client for the S3 compatible API |
| boto3 | 1.34.46 | Official AWS SDK for Python |
| Ubuntu Server | 24.04 LTS | Operating system |
Filesystem layout
| Path | Size | Purpose |
|---|---|---|
/ |
29 GB | Root filesystem |
/boot |
913 MB | Operating system kernel files |
/boot/efi |
106 MB | UEFI boot partition (Gen2 Hyper V) |
/ais/disk0 |
32 GB | Dedicated AIStore object data volume |
/mnt |
varies | Azure temporary resource disk |
Key directories
| Path | Purpose |
|---|---|
/usr/local/bin/aisnode |
The AIStore node binary, run as both gateway and target |
/usr/local/bin/ais |
The native command line client |
/usr/local/bin/authn |
The AuthN token service |
/usr/local/bin/ais-env |
Prints authenticated shell exports |
/usr/local/sbin/aistore-selfcheck |
End to end appliance self check |
/etc/ais/ais.json |
Cluster configuration, including auth.enabled |
/etc/ais/ais_local_proxy.json |
Gateway node configuration |
/etc/ais/ais_local_target.json |
Storage target configuration, including mountpaths |
/etc/ais/authn/authn.json |
AuthN configuration |
/var/lib/ais/proxy, /var/lib/ais/target |
Cluster metadata and node identity |
/var/log/ais/ |
AIStore logs, one directory per node |
/root/aistore-credentials.txt |
Per VM credentials, mode 0600 |
/usr/share/doc/aistore/LICENSE |
The upstream MIT licence |
Network ports
| Port | Bound to | Purpose |
|---|---|---|
| 22 | all interfaces | SSH administration |
| 8080 | all interfaces | AIStore gateway: native API and S3 compatible API |
| 8081 | all interfaces | AIStore storage target, native API object transfers |
| 52001 | all interfaces | AuthN token service, requires the administrator password |
| 9080, 10080 | VM network address | Gateway intra cluster control and data planes |
| 9081, 10081 | VM network address | Target intra cluster control and data planes |
Open only 22 and 8080 in your Network Security Group unless you use the native API from another machine, in which case also open 8081. Never open the intra cluster ports.
Managing the services
sudo systemctl status ais-proxy.service --no-pager || true
sudo systemctl restart ais-target.service
sudo journalctl -u ais-proxy.service -n 20 --no-pager
Start order matters: ais-authn.service first, then ais-proxy.service, then ais-target.service. The unit dependencies encode this, so a plain sudo systemctl restart ais-target.service is safe. Stopping ais-authn.service takes authentication offline and every subsequent request is refused, so restart it before using the cluster again.
Scripts and log files
| Path | Purpose |
|---|---|
/usr/local/sbin/aistore-firstboot.sh |
First boot bootstrap: mints the per VM secrets and starts the cluster |
/usr/local/sbin/ais-netenv |
Resolves this VM's address at every boot and pins it into the node configuration |
/usr/local/sbin/ais-token |
Exchanges a username and password for a token |
/usr/local/bin/ais-env |
Prints authenticated shell exports |
/usr/local/sbin/aistore-selfcheck |
End to end appliance self check |
/var/log/cloudimg-firstboot.log |
First boot log |
/var/log/ais/proxy/, /var/log/ais/target/, /var/log/ais/authn/ |
Per node AIStore logs |
On startup
On the first boot only, aistore-firstboot.service runs aistore-firstboot.sh. It generates this VM's signing key and administrator password, creates the bootstrap marker that permits the AIStore services to start, brings up AuthN, the gateway and the target in order, registers the cluster with AuthN, writes /root/aistore-credentials.txt and then disables itself. A marker file at /var/lib/cloudimg/aistore-firstboot.done prevents it running again.
Until that marker exists the three AIStore units refuse to start at all, which is what guarantees the shipped image never listens on any address without your own credentials in place.
On every boot, ais-netenv.service resolves the VM's current network address and writes it into the node configuration before the cluster starts, so the appliance keeps working if the VM is reassigned a different address.
Troubleshooting
The services are not active after first boot. Read the first boot log, which records each step:
sudo tail -40 /var/log/cloudimg-firstboot.log
sudo systemctl status aistore-firstboot.service --no-pager || true
aistore-firstboot.service reports inactive (dead) and disabled once it has completed successfully, which is why the || true is there. That is the healthy state, not a fault.
ais-env reports it cannot read the credentials file. It must be run with sudo, because the credentials are mode 0600 and owned by root.
ais commands return "token required" or HTTP 401. Your token has expired, or this shell never had one. Run eval "$(sudo ais-env)" again.
A service will not start and the journal mentions the bootstrap marker. The units are gated on /var/lib/aistore/.bootstrap-ready, which only first boot creates. If it is missing, first boot did not complete; check the first boot log above.
The storage target will not start. It requires the data volume. Confirm it is mounted:
mountpoint /ais/disk0 && df -h /ais/disk0
An S3 client reports a signature error. AIStore does not validate AWS signatures; it authenticates on the session token. Use any placeholder access key and secret, and set AWS_SESSION_TOKEN to a token from ais-env.
Native API object transfers time out from a machine outside the virtual network. The native API redirects object reads and writes to the storage target's own network address. Use the S3 API, which does not redirect, or an SSH SOCKS tunnel as shown earlier.
Check cluster health at any time:
eval "$(sudo ais-env)"
ais show cluster
sudo journalctl -u ais-proxy.service -u ais-target.service -n 60 --no-pager
Security recommendations
-
Restrict TCP 8080 to the network your clients run on. Authentication is enforced, but there is no reason to expose an object store to the whole internet. Use Network Security Group rules scoped to your subnet or to specific source addresses.
-
Keep the credentials file where it is.
/root/aistore-credentials.txtis mode0600and owned byroot. Copy the password into your secret manager rather than moving or relaxing the file. -
Create per application users rather than sharing the administrator. AuthN supports additional users and roles; see
ais auth --help. The administrator account should be reserved for administration. -
Put TLS in front of the gateway for anything crossing an untrusted network. The appliance speaks HTTP. Terminate TLS on an Azure Application Gateway or a reverse proxy, or enable AIStore's own HTTPS support with your certificate.
-
Rotate the administrator password with
ais auth update user, and update your stored copy. -
Leave unattended security upgrades enabled so the operating system keeps receiving patches.
-
Take Azure snapshots of the data disk on a schedule that matches how much data you can afford to re create. A single node cluster has no replication.
Support
cloudimg images are backed by 24/7 support. For help with this image, contact support through the Azure Marketplace listing or visit www.cloudimg.co.uk.
AIStore and NVIDIA are trademarks of NVIDIA Corporation. Amazon S3 and AWS are trademarks of Amazon.com, Inc. or its affiliates. cloudimg is not affiliated with, endorsed by, or sponsored by NVIDIA Corporation or Amazon. AIStore is distributed under the MIT licence; the licence text ships on the image at /usr/share/doc/aistore/LICENSE.