Advanced
Commands for special use cases (e.g. scripting) and advanced usage scenarios, whereby a certain level of understanding of possible consequences is assumed (and required).
Table of Contents
ais advanced- Manual Resilvering
- Preload bucket
- Remove node from Smap
- Rotate logs: individual nodes or entire cluster
- Disable/Enable cloud backend at runtime
- Check object(s) lock status
ais advanced
Manual Resilvering
ais advanced resilver [TARGET_ID]
Start resilvering objects across all drives on one or all targets.
If TARGET_ID is specified, only that node will be resilvered. Otherwise, all targets will be resilvered.
Examples
Preload bucket
ais advanced preload BUCKET
Preload objects metadata into in-memory cache.
Remove node from Smap
ais advanced remove-from-smap NODE_ID
Immediately remove node from the cluster map (a.k.a. Smap).
Beware! When the node in question is ais target, the operation may (and likely will) result in a data loss that cannot be undone. Use decommission and start/stop maintenance operations to perform graceful removal.
Any attempt to remove from the cluster map primary - ais gateway that currently acts as the primary (aka leader) - will fail.
Examples
And the result:
Rotate logs: individual nodes or entire cluster
Usage: ais advanced rotate-logs [NODE_ID]
Example:
Now, let’s go ahead and rotate:
Disable/Enable cloud backend at runtime
AIStore build supports conditional linkage of the supported remote backends: S3, GCS, Azure.
For the most recently updated list, please see 3rd party Backend providers.
To access remote data (and store it in-cluster), AIStore utilizes the respective provider’s SDK.
For Amazon S3, that would be
aws-sdk-go-v2, for Azure -azure-storage-blob-go, and so on. Each SDK can be conditionally linked intoaisnodeexecutable - the decision to link or not to link is made prior to deployment.
What if
But what if there’s a need to disconnect a given linked-in remote backend at runtime, maybe temporarily?
This capability is supported. The easiest way to explain how it works is to show some examples.
Examples
1) say, there’s a cloud bucket with 4 objects:
Note that only 2 objects out of 4 are in-cluster.
2) disable s3 backend:
3) observe “offline” error when trying to list the bucket:
4) but (!) all in-cluster objects can still be listed:
5) and read:
6) expectedly, remote objects are not accessible:
7) let’s now reconnect s3:
8) finally, observe that both in-cluster and remote content is now again available:
Check object(s) lock status
Prefix-based (multi-object) selection is also supported: