--- title: "VAST Probe - Manual Execution" slug: "vast-probe-manual-execution" description: "Learn the manual execution of VASTProbe, the essential steps, and the prerequisites for data analysis in a Docker setup on Linux." updated: 2026-10-27T19:37:32Z published: 2026-10-28T19:56:22Z canonical: "docs.vastdata.com/vast-probe-manual-execution" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.vastdata.com/llms.txt > Use this file to discover all available pages before exploring further. # VAST Probe - Manual Execution ## Summary The VAST Probe is a long-running process in a Docker container. The Docker container must run on a Linux system with read-only access to the files you want to examine for data reduction, plus reasonable memory and a substantial, fast local disk. When you have issues with the probe_launcher.py script or need more experimental features, use this page. ## Quick Start If you already know all the details and just want to run the probe, go to the [VAST Probe Quickstart](/kb/docs/vast-probe-quickstart). This document is still available for cases where the quick start isn't appropriate, but the quick start approach is much preferred and should be used in all cases except where it doesn’t work. ## Prerequisites Note: for hardware requirements, please see [VAST Probe Requirements](/kb/docs/vast-probe-requirements) The probe requires only a few things in order to function: - A functioning Docker environment - SELINUX is disabled (SELINUX will prevent root access to Docker mount points: local disk and NFS) - A large scratch area that the probe will use for storing logs, as well as information on the data it is scanning. This needs to be very large and should be about 0.25% of the size of the storage being scanned. Details below. By convention, this is /mnt/probe, but it can be any path. - File systems to scan. These can be local or, more typically, NFS mounted. It does not matter to the probe. The probe requires only read access. It does not modify any data on the file system. Root access is recommended to ensure all files can be read. Note that Lustre/GPFS can also work if they are mounted to the host. At the end of the scanning process, it reports its findings. If email is enabled, the probe will report intermediate and final findings to VAST via email. If email is not enabled, all reporting is done via log files stored on the system running the probe. How long the probe takes to run depends on the amount of data it points at. It's important that you point the probe at enough data that you get a representative combination of data sets, and you get a good opportunity for the probe to find similarity across files and thus better data reduction. For example, if you have some data type (let's say genomic), we should scan many genomic files, not just one. How fast the probe runs depends on many variables, including network speed, the size of the server running the probe, the performance of the disk the probe writes to (SSD is important), and the amount of similarity we find. We now have a separate probe_launcher script that simplifies operation. Instructions are in the [VAST Probe Quickstart](/kb/docs/vast-probe-quickstart) article. If you don't have Python 3 or would prefer the manual method, please see below. ## Manual Probe Method When you launch the probe Docker container, you can connect to it and run the probe with key configuration information. The probe will then run until completion and report results. 1. Get Docker container image **HTTPS Download** Refer to the [VAST Probe Quickstart](/kb/docs/vast-probe-quickstart) for the latest probe version and its build information. eg: ```plaintext export PROBE_BUILD=GET THIS NUMBER FROM THE QUICKSTART ARTICLE ``` 1. **NEW STEP**: untar it ```plaintext tar -xzf ${PROBE_BUILD}.probe.bundle.tar.gz ``` 1. load it ```plaintext docker load -i ${PROBE_BUILD}.probe.image.gz ``` (This will take a few minutes without meaningful output; be patient) Tag the loaded image by running docker images and noting the new image and its ID. Recall that images are identified by unique image IDs and human-readable tags. Tag it as shown below - get the ID from the Docker images output, and the value of the name is, by convention, the probe build. ```plaintext docker images ``` `...notice the Image IDs in the output list ....` ```plaintext docker tag vast-probe-${PROBE_BUILD} ``` 1. Launch a 'screen' session (or tmux). We recommend some kind of long-lived session tool since the probe can take a very long time to’t want it to terminate if there is an issue with the client system. ```plaintext screen -R probe ``` 2. Run the container while mapping the required directories 1. Run with the image tag/name you set earlier. The -v specifies mounts from the real operating system that should be made available to Docker. These are directories that the probe can use and scan. Include as many -v's as needed, just ensuring that at least one is the actual probe scratch directory (/mnt/probe in this case). ```plaintext docker run -v /mnt/fileserver1:/mnt/fileserver1 -v /mnt/probe:/mnt/probe -it vast-probe-${PROBE_BUILD} ``` 3. From within the Docker container, create relevant output directories, eg: ```plaintext sudo mkdir -p /mnt/probe/vast-probe/output sudo mkdir -p /mnt/probe/vast-probe/db sudo chmod -R 777 /mnt/probe/vast-probe #note: If you get permission denied then disable selinux on your host ``` 4. Edit probe config file: ```plaintext vim /vast/install/probe/sim_init_file.yml ``` 5. See example config below, but also some items to note: 1. **input_dir**: You can specify more than one. Just prefix a newline with '-'. This will allow the probe to scan multiple mount points and file systems. Each input directory is scanned in a parallel thread, which can slightly improve probe scan times. 2. **output_dir**: This is where the summary and some stats files will go. This is relatively small ( **match_percent** - percentage of chunks identified as similar to pre existing chunks by similarity search > > **sum_of_gain** - total space saved by similarity compression > > **gain** - percentage of space saved by similarity compression > > **dedup_percent** - percentage of identical chunks found > > **original_size** - amount of data processed by the probe > > **compressed_sum** - estimated size of data post compression, dedup and similarity compression > > **factor** - compression factor (original_size / compressed_sum) > > **sum_of_self_compress** - data size if only local compression (with the given chunk size) was applied > > **size_of_data_processed** - progress indication This means the probe processed 33 TB of data. The “naive” compressed size would have been 16 TB The actual compressed size, including compression, dedup, and similarity compression, was 2.7 TB Thus, the total factor of savings was 12 (33/2.7) Digging a little deeper, we see that the majority of the savings came from dedup (47% of the chunks were identical) and compression, as it looks like similarity compression saved 0.6% for a total of 99GB. ## Probe Analyze After the probe completes a run, it will automatically analyze its own output from the log files and generate an analysis log (still quite long) that breaks down the data reduction achieved by directory and file extension. In rare cases, you may need to run this manually. Here's how: ```plaintext cd /vast/install/probe python3 ./probe.py --analyze_log .... output about processing files .... Processed 1967860 files              Writing probe run analysis to ..../probe_Date.log.analysis ``` ## I/O Behavior 1. **Speed**: From a scan-speed perspective, we've found that, on average, we see ~60 MB/sec per physical CPU core when running the probe in full "similarity hash" mode (the default value for 'match_disable'). Thus, a 20-core system would net approximately 1.2 GByte/sec. That said, performance is also highly dependent on the disk latency of the target system being scanned and is often delayed by random reads on that system. 2. **Read amplification:** The way our similarity hasher works is that if it discovers any matches, it will need to re-read a portion of the dataset to look for additional opportunities for dataReduction. When your data is highly similar, this can result in significant read amplification. Therefore, when determining the amount of time it will take to scan a file system, it is necessary to allow the probe to run for a period of time to determine the approximate 'Re-Read' ratio. 1. EG: look at the **/mnt/probe/db/*.stats** output to see. 3. **match_disable=1:** If you choose this setting (non-default), the probe will bypass similarity hashing, and instead only look for local compression opportunities and full-chunk matches (for dedup). This is much less CPU-intensive, and we've found the bottleneck is typically either networking or the filesystem it is scanning, up to a point. In my testing on a system with 25GigE, this mode averaged 1.3 GB/sec (about 66 MB/sec/physCore). At times, the network throughput approached line rate (2+ GByte/sec). 1. If you have a subset of data that is representative of a larger set, it would be advisable to run against the smaller set in this mode first, to determine the local compression & dedup rates. Once you establish that rate, we recommend running the probe again in similarity-hash mode against the full dataset.