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 now supported, and will be included in v3.24 release. And 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: