Overview
SyncEngine lets you extract metadata from a local POSIX store into VAST DataBase where they can be easily queried for further analysis.
An indexing job walks a local path on the worker and writes file and directory metadata into a VAST DataBase table. Indexing does not copy file contents; it stores metadata only.
On the first run, SyncEngine creates the following VAST DataBase resources (if they do not already exist) on the destination bucket view provisioned on the VAST cluster:
- A VAST database schema. The name of the schema is derived from the worker/indexing job label and the source POSIX path specified.
- A table under the schema. Each run of an indexing job creates one table in the metadata index database.
Complete these steps to set up POSIX metadata indexing:
-
Ensure that the prerequisites are met.
-
Create a POSIX connector for the local path to be indexed.
-
Create a VAST DB connector for the destination database.
-
Create an indexing job.
-
Start the indexing.
Note: This step is only required when the migration does not have periodic resynchronization enabled.
-
Monitor indexing progress and completion.
-
If necessary, troubleshoot.
After indexing is complete, you can run queries against the VAST DataBase table containing the index using VAST DataBase querying methods described in the VAST Cluster Administrator's Guide.
The following limitation applies:
- One source path per indexing job. To index multiple paths, you need to create multiple indexing jobs.
Before You Begin
Ensure that the prerequisites are met:
VAST Cluster
Networking
- VAST cluster's management IP.
- A DNS-resolvable name of the tenant's virtual IP pool to access the destination database, or a virtual IPv4 address from that pool.
- Network connectivity from workers to the destination database.
VAST tenant and admin credentials
- If your VAST cluster has multiple VAST tenant configured:
- To migrate to one of the tenants:
- The name of the VAST tenant where the destination VAST S3 bucket will reside
- Username and password for the VAST tenant admin user
- To migrate to the default tenant:
- Username and password for the VAST cluster admin user
- To migrate to one of the tenants:
- If your VAST cluster is not configured for multi-tenancy:
- Username and password for the VAST cluster admin user
Create User
Create a user with S3 access keys allowing to create a bucket and put objects to it.
- Create a local user on the VAST provider attached to the tenant where the destination database will reside.
Ensure that the user has the Allow Bucket Creation option enabled. - Generate S3 access key for the user.
- Create an identity policy to grant the user full access to the bucket (
"Action": "s3:*", "Effect": "Allow"). - Assign the identity policy to the user.
Note the username and UID of the created user.
Create View Policy
Create a view policy that will control access to the view that will hold the destination database. In the view policy:
- Select the S3 Native security flavor.
Create View
Create an Element Store view exposing the destination database. In the view settings:
-
Select the Database and S3 Bucket protocols.
Note: In VAST Web UI, the S3 Bucket protocol is added automatically when you select the Database option in the Protocols field.
-
Select the view policy you created.
-
Select the user you created as the bucket owner.
SyncEngine
- The SyncEngine control plane and at least one worker are up and running.
- At least one worker label of a deployed worker is known. (The worker label is set when you deploy the worker.)
- The source path is mounted on all workers labeled for a particular POSIX indexing job. A worker must have read access to the source path.
Create POSIX Connector
A POSIX connector is used for POSIX filesystem migrations.
SyncEngine UI
-
In the Connectors page, click New Connector.
A wizard dialog appears to walk you through the connector creation steps. -
In the Type & name step:
- Select the POSIX connector type.
- In the Connector name field, enter a unique name for the connector.
The name can contain up to 63 characters, including uppercase and lowercase English letters, digits, periods (.), hyphens (-) and underscores (_).
-
In the Tunables step:
- Under Content Types Supported, determine whether the connector will handle data and metadata, only data, or only metadata. By default, the connector handles both data and metadata.
- Under Batch & Scan Tunables:
- Optionally adjust the size of batches that SyncEngine uses when copying the data. By default (if no values are entered in the fields provided), SyncEngine uses VAST cluster's defaults which are suitable for most workloads.
- In the Batch Size field, specify the maximum allowed batch size in GB. If not specified, a default of 1 GB is used.
- In the Max Files per Batch field, specify the maximum allowed count of files per batch. If not specified, a default of 1000 files is used.
- Optionally configure the Block Size and Task Flush Threshold values as needed.
- Optionally adjust the size of batches that SyncEngine uses when copying the data. By default (if no values are entered in the fields provided), SyncEngine uses VAST cluster's defaults which are suitable for most workloads.
-
In the Rsync step, optionally configure
rsyncflags for file transfers. -
In the Review step, review the settings you've made.
If you want to make changes, click Back. Otherwise, click Create Connector.
The connector is created and displayed in the Connectors page.
SyncEngine CLI
The following command creates a POSIX connector named src-posix:
syncengine-cli connector create \
--type=filesystem \
--name=src-posix \
Note: The connector type can be specified either as
filesystemorposix.
Optional flags:
--batch-size-gb <GB>
--batch-file-count <count>
--block-size <bytes>
--task-flush-threshold <count>
--rsync-archive
--rsync-compress
--rsync-checksum
--rsync-hard-links
--rsync-acls
--rsync-xattrs
--rsync-no-perms
--rsync-no-owner
--rsync-no-group
--rsync-bwlimit <KB/s>
--rsync-timeout <seconds>
The output should be similar to the following:
Successfully created connector 'src-posix' with ID 15
Tip: Note the connector ID in the output.
Create VAST DB Connector
A VAST DB connector is used to connect to a VAST database that will store POSIX metadata.
SyncEngine UI
-
In the Connectors page, click New Connector.
A wizard dialog appears to walk you through the connector creation steps. -
In the Type & name step:
- Select the Vast DB connector type.
- In the Connector name field, enter a unique name for the connector.
The name can contain up to 63 characters, including uppercase and lowercase English letters, digits, periods (.), hyphens (-) and underscores (_).
-
In the Configure step:
-
Under Vast parameters, provide the details for accessing the destination database:
Field Description Management Address VAST cluster's management IPv4 address or DNS-resolvable hostname (up to 253 characters). VIP Address A DNS-resolvable name of the tenant's virtual IP pool to access the destination database, or a virtual IPv4 address from that pool. Username and Password Username and password to log in to the VMS. If the destination bucket is on one of VAST cluster tenants, enter credentials of the admin user for that tenant. If the destination bucket is on the default tenant, enter credentials of the VAST cluster admin user. Tenant name The name of the VAST cluster tenant where the destination database resides. If not specified, the default tenant is used. -
Under Catalog Bucket, use the Bucket Name field to enter a name for the S3 bucket that will hold the destination database.
The bucket name can contain 3-63 characters, including lowercase English letters, digits, periods (.), and hyphens (-).
By default,syncengine-catalogis used as the bucket name. -
Under Content Types Supported, select Metadata.
Note: Leave the Data checkbox unselected.
-
-
In the Rate limits step, leave the defaults unchanged ('0', no limits set). These fields are reserved for future use.
-
In the Review step, review the settings you've made.
If you want to make changes, click Back. Otherwise, click Create Connector.
The connector is created and displayed in the Connectors page.
SyncEngine CLI
The following command creates a destination database in a VAST S3 bucket named se-index :
syncengine-cli connector create \
--type=vast_db \
--name=vast-indexing \
--mgmt-ip=<VMS IP> \
--username=admin \
--password=<password> \
--vip=<VAST VIP>
--bucket-name=se-index
Optional flags:
--tenant-name <VAST tenant name>
Note: Connector rate limits can only be set in SyncEngine UI.
The output should be similar to the following:
Successfully created connector 'vast-indexing' with ID 146
Tip: Note the connector ID in the output.
Create Indexing Job
Create an indexing job to retrieve metadata from a worker's local POSIX path and store it in a database on a VAST cluster.
SyncEngine UI
-
In the Indexing page, click Create Indexing Job.
A dialog appears for you to enter indexing parameters. -
In the Create Indexing Job dialog, complete the fields:
Field Description Label Specify a SyncEngine worker label for the indexing job. The label is used to route indexing jobs to the appropriate SyncEngine worker. One worker can be associated with one or more labels. Workers deployed with a certain label handle all jobs that have that label. Source Connector (POSIX/S3) Select the POSIX connector that will be used to connect to the source POSIX path. Destination Connector (VastDB) Select the VAST DB connector that will be used to connect to the destination database on the VAST cluster. Source Path Enter the source POSIX path (for example: /mnt/data). -
Optionally, expand the Batch Settings pane to adjust the size of batches that SyncEngine uses when copying the data.
By default (if no values are entered in the fields provided), SyncEngine uses VAST cluster's defaults which are suitable for most workloads.- In the Batch size field, specify the maximum allowed batch size in GB. If not specified, a default of 1GB is used.
- In the Batch file count field, specify the maximum allowed number of objects per batch. If not specified, a default of 1000 objects is used.
-
In the Review step, review the settings you've made.
If you want to make changes, click Back. Otherwise, click Create Indexing Job.
The indexing job is created and displayed in the Indexing page.
SyncEngine CLI
The following commands creates an indexing job to extract metadata from /mnt/data . The migration is to be accomplished by workers labeled with data-index using connectors with connector IDs 1 and 2.
syncengine-cli indexing create \
--source-connector-id=1 \
--destination-connector-id=2 \
--source-path=/mnt/data \
--label=data-index
Note: Batch settings can only be configured in SyncEngine UI.
The CLI creates an indexing job and displays its properties.
The output should be similar to the following:
Creating indexing job: data-index
Source type: posix
✓ Indexing job created successfully
ID: 3
Label: data-index
Source Path: /mnt/data
Status: init
Tip: Note the migration ID in the output.
Start Indexing Iob
Indexing jobs are started manually.
SyncEngine UI
Navigate to the Indexing page and click the start button for the indexing job you want.
SyncEngine CLI
Run the command:
syncengine-cli indexing start --indexing-id=<indexing job ID>
The output should be similar to the following:
✓ Indexing job started successfully
Sync Job ID: 3
Status: pending
Monitor Indexing Job
As the indexing progresses, its status changes as follows: Not Started (or init) -> Waiting for Worker (or pending) -> Syncing -> Synced.
When complete, the destination S3 bucket will have objects with object keys in format:
-
<file ID>/onedrive.<file extension>- the migrated content, with the original file extensions preserved as part of the object key -
<file ID>/onedrive.metadata.json- metadata, such as source URL, source title, original last-modified timestamp, ACL-related fields, additional OneDrive metadata (if the option was enabled for the migration).
SyncEngine UI
Check the migration status in the Indexing page.
SyncEngine CLI
Run the command:
syncengine-cli indexing status --indexing-id=<indexing job ID>
The output should be similar to the following:
Indexing Job #3
================
Label: data-index
Status: synced
Source Path: /mnt/data
Created: N/A
Progress:
Files Indexed: 42
Total Size: 1.2 MB
Current Rate: 0 files/sec
Troubleshoot
| Symptom | Likely Cause | Solution |
|---|---|---|
| Indexing job stays pending | Indexing label does not match worker label. | Update the indexing job to use the same label as the deployed worker. |
| Indexing fails writing to the VAST cluster; VMS authentication or virtual IP reachability errors during indexing | Invalid credentials, or wrong VMS IP or virtual IP | Confirm VAST Cluster's management IP, the virtual IP, and user credentials. |
| Source path not found or permission denied | Path missing or not readable on the worker | Mount the path on every worker for the indexing label used; verify permissions. |
| Empty schema / no tables in Catalog Query | Job never reached the Synced status, or wrong VAST DB connector | Confirm job status; select the appropriate VAST DB connector. |
POSIX Metadata Index Reference
In the metadata index table, each row is one filesystem element (file, directory, symlink, and so on), and the columns are as follows:
| Column | Type | Description |
|---|---|---|
path |
string | Absolute path of the element |
parent_path |
string | Absolute path of the parent directory |
depth |
int32 | Depth relative to the indexing source path ('0' at the root) |
name |
string | Base name of the element |
element_type |
string | Element type: FILE, DIR, SYMLINK, HARD_LINK, or special types such as FIFO, SOCKET, CHAR_DEVICE, BLOCK_DEVICE, OTHER |
extension |
string | File extension without the leading period; empty for directories |
handle_id |
decimal | Inode number |
size |
int64 | Size in bytes |
total_used |
int64 | Allocated bytes |
uid |
int32 | Owner user ID |
gid |
int32 | Owner group ID |
nfs_mode_bits |
int32 | Mode bits |
ctime |
timestamp (seconds) | Change time |
mtime |
timestamp (seconds) | Modification time |
atime |
timestamp (seconds) | Access time |
nlinks |
int32 | Hard-link count |
scrape_duration |
int32 | Seconds spent scraping a directory; null for non-directories |
user_tags_count |
int16 | Count of user tags (when present) |
user_metadata |
map<string,string> | User metadata map |
user_tags |
map<string,string> | User tags map |
file_count |
int64 | For directories: number of child files counted during the walk; null for files |
total_size |
int64 | For directories: aggregate size of child files; null for files |