User Manual
StableBit CloudDrive
A secure virtual hard drive, powered by the cloud.

Technical Details

(Build 880)

Back to Contents

Technical details is meant for more advanced users.

Casual users can skip reading this section.

The Technical Details window shows detailed information about how I/O requests are processed with the storage provider, and it gives you some additional advanced troubleshooting options.

The technical details window can be accessed under the Options menu.

The technical details window consists of a number of parts, the Toolbar, I/O Requests, Provider I/O, and the Status Bar.

Unlike other parts of StableBit CloudDrive, technical details will often substitute the word write for upload, and read for download.

Because not all storage providers have to necessarily be network based, these terms are actually more accurate when describing storage providers writing and reading data.

Toolbar

The Toolbar lets you select which cloud drive you want to get technical details about and various other options.

Here's what each part of the Toolbar does:

Toolbar Parts

When one of the menu options are selected, StableBit CloudDrive will stop writing data to the storage provider as soon as an error is encountered. Normally, failed writes are retried, and additional data continues to upload.

This is useful if you are attempting to use an external tool to record a specific but rare error from the storage provider.

The type of error that will cause the writing to pause can be narrowed down further by the available menu options:

  • Any Error

    When enabled, writing will be paused on the first storage provider error encountered. Any storage provider error will trigger this.

  • Security Error

    When enabled, writing will be paused on the first storage provider security error encountered.

    Each storage provider defines what it considers a security error. For example, most HTTP-based storage providers will consider a HTTP status code 403 to be a security error.

  • HTTP Error

    When enabled, writing will be paused on encountering the first HTTP error with one or more specific status codes. You can specify more than one status code separated by commas.

    This option only applies to HTTP-based storage providers.

  • Write Verification Error

    When enabled, writing will be paused on encountering the first write verification error (also known as an upload verification error). See Upload Verification for information on how to enable and disable it for your cloud drive.

Optimizations enable or disable certain code optimizations in StableBit CloudDrive. Normally, all optimizations should be enabled.

  • Handle Caching

    When enabled, open handles to the local cache will be reused among different I/O requests. This is done in order to avoid opening and closing the cache files for each I/O request.

  • RAM Cache

    When enabled, RAM will be used to assist I/O requests in order to avoid issuing redundant requests to the storage provider. The size of the RAM cache can be set when Creating a Drive under Advanced Settings > Chunk Cache Size.

  • Short Circuiting

    When enabled, this optimization works under 2 specific scenarios:

    1. When a chunk is being written, and a read request comes in for a part of that chunk, the write will immediately pause, copy the required data into the read request and resume writing. This makes sure that the read request can complete immediately.

    2. When a chunk is being read, and other read requests come in for a range of data that is already being read. Instead of issuing separate requests to the storage provider for the same data, the existing data will be used to satisfy all of the requests.

  • Write Thread Boosting

    When enabled, if multiple writes need to perform a read-modify-write on the same chunk of data, an attempt will be made to combine all of them into 3 steps that require 2 storage provider I/O requests.

    1. The whole chunk will be read from the storage provider.

    2. Each write will apply their individual change to the chunk that was read in.

    3. The entire chunk will be written back to the storage provider..

    In certain cases, such as when the storage provider returns an error, this optimization won't be applied, and the write requests may be split up for individual processing.

  • Kernel Read Buffering

    When enabled, a shared non-paged kernel memory space will be used to send data directly to the virtual disk when servicing read requests.

    Otherwise, the data will have to be written out to the local cache and then read back in by the virtual disk.

  • Write Pre-buffering

    When enabled, for all of the data that needs to be written to the storage provider, a single dedicated thread will be used to pre-buffer that data from the local cache.

    Otherwise, multiple upload threads may have to read from the local cache at the same time. This can cause disk thrashing, thereby slowing down the performance of the local cache disk.

Options to simulate various storage provider errors are available here.

All of these error simulations will be turned off on the next reboot (or when the StableBit CloudDrive service restarts).

  • Simulate Read Errors

    When enabled, there will be a 10% chance that a storage provider read will return a simulated error.

  • Simulate Write Errors

    When enabled, there will be a 10% chance that a storage provider write will return a simulated error.

  • Simulate Read Failures

    When enabled, there will be a 100% chance that a storage provider read will return a simulated error.

  • Simulate Write Failures

    When enabled, there will be a 100% chance that a storage provider write will return a simulated error.

  • Simulate Security Errors

    When enabled, there will be a 100% chance that a security error will be simulated on either a storage provider read or write .

  • Include Mounting in Error Simulation

    Normally error simulation doesn't prevent the drive from mounting, because the mount process is not included in the error simulation.

    When enabled together with simulating read failures or simulating security errors, the drive will return an appropriate simulated error when mounting.

This opens the Service Log window.

I/O Requests and Provider I/O will only be shown for the cloud drive that is selected here.

Opens up Drive Details for the selected cloud drive.

When disabled, uploading to the storage provider will be paused for the current cloud drive.

This is the same as unchecking Upload Threads under I/O Performance > Threads.

When disabled, prefetch requests will not be shown in I/O Requests or in Provider I/O.

When disabled, read requests will not be shown in I/O Requests or in Provider I/O.

When disabled, write requests will not be shown in I/O Requests or in Provider I/O.

When disabled, completed requests will not be shown in Provider I/O after they end.

When enabled, I/O Requests and Provider I/O will pause updating. This will let you examine the information contained there in detail.

I/O Requests

Every time StableBit CloudDrive needs to read some data from a storage provider or write some data to a storage provider, it issues a Read or Write request to the Chunk I/O Pipeline. The chunk I/O pipeline is a state machine that can split, join, and process I/O requests in more complicated ways. The decisions that the chunk I/O pipeline makes depend on your cloud drive settings and the capabilities of the storage provider.

The I/O Requests view, provides a detailed trace of each I/O request as it traverses through the chunk I/O pipeline.

For example, when a part of a chunk needs to be written, and the storage provider doesn't support partial chunk writes (like most cloud storage providers), this may show up in I/O Requests:

Each time an I/O request needs to be split, joined, or something more complicated needs to happen, a sub-node will be shown in the I/O Requests view for that request. Hovering your mouse over that node will show you a detailed tooltip of what exactly happened there.

Clicking on the node of a Provider type of I/O request will highlight the corresponding Provider I/O request that was issued to the storage provider as a result.

In the above example, we can see that a part of chunk 310 needs to be written to the storage provider. But the storage provider doesn't support writing parts of chunks, so the entire chunk needs to be read, patched, and written back to the storage provider.

Moreover, a similar write request is being issued at the same time, and instead of doing the above twice, both of those requests are being combined into one operation.

Each I/O requests always starts off as one of 3 types:

  • Prefetch

  • Read

  • Write

But in order to process that request, it may be necessary to issue additional I/O requests of a different type.

The type of I/O request that is being issued at each individual point of an ongoing I/O request is indicated by an icon:

I/O Request Types

This is a prefetch read request.

This is a non-prefetch read request.

This is a write request.

In addition to the I/O request type icon, certain I/O requests are highlighted with different colors for emphasis.

I/O Request Colors

Provider I/O

Provider I/O shows detailed information about each I/O request that goes out to the storage provider.

Just like in I/O Requests, each request has an icon associated with it and some possible highlighting for emphasis.

Provider I/O Icons

This is a non-prefetch read request.

This is a prefetch read request.

This is a write request.

This request ended successfully. The item will be shown for 4 seconds after it ends.

This request ended unsuccessfully. Selecting it will show the error message in the Status Bar. The item will be shown for 15 seconds after it ends.

Provider I/O Colors

This is the information shown for each storage provider I/O request:

  • ID

    A unique identifier of the this request. This is just an incrementing number.

  • Type

    The type of request:

    • Write - A write request.

    • Read (prefetch) - A prefetch read request.

    • Read (verify) - A read request verifying a previous write.

    • Read - A non-prefetch and non-verifying read request.

  • Duration

    How long this request has been running.

    Note that this window only updates about once a second.

  • Chunk

    The chunk number that is being read or written.

  • Offset

    The 0-based offset in the chunk that is being read or written.

  • Length

    The length of the data that is being read or written.

  • Progress

    Out of the entire length, how much of it has already been read or written, as a percentage.

  • Response Time

    How long it took the storage provider to respond to this request after it was issued.

  • Speed

    How fast this request is being read or written, as an average speed from the time that the request was started.

When an error occurs, selecting it will show the error message in the Status Bar.

Similarly, if the request was retried, selecting the retry will also show the error message that triggered the retry.

Status Bar

The status bar shows information about the currently selected Provider I/O request.

For example:

Drive Details

The drive details window shows information about the properties of the selected cloud drive.

Selecting each property will show a brief description of that property at the bottom of the window.

All of these properties are for informational purposes only and they cannot be changed here.

Here are the categories that the cloud drive properties are grouped into:

  • Cache

    Information about the local cache

  • Chunks

    Information that has to do with various chunked data.

  • Encryption

    Information about full drive Encryption.

  • Location

    Path related information.

  • Metadata

    Metadata information about the cloud drive.

  • Mounting

    Information about the cloud drive's mount state.

  • Overview

    General information about the cloud drive.

  • Provider

    Information about the storage provider that this cloud drive is using.

  • Unsafe Start

    Information about the current state of unsafe start recovery. See Recovering from Errors for more information about unsafe recovery.

  • Validation

    Information about the current chunk validation algorithm.

Service Log

The service log shows the activity of the StableBit CloudDrive background service in real-time.

These messages are also written to log files which are located in %PROGRAMDATA%\StableBit CloudDrive\Service\Logs\Service

From the toolbar, you can enable or disable logging, toggle auto scroll, as well as select the amount of information to log for each module.

There are 4 logging levels available for each module:

  • Errors

    This will only show errors that cause the application to crash.

  • Warnings

    This will show any conditions that cause an operation to abort, or an unusual or noteworthy condition, in addition to Errors.

  • Information

    This will show trace data, in addition to Warnings.

  • Verbose

    This will show detailed trace data, in addition to Information.

Changing the tracing levels here will change them for the log files as well.

Tracing levels always reset to their defaults after a reboot (or a service restart).