This page describes how to use a Cloud Storage FUSE configuration file to configure
the behavior of Cloud Storage FUSE in a persistent manner. To use the
configuration file, specify the path to the configuration file in the
--config-file
flag as part of your mount command.
The configuration file is a YAML file that uses the following format and fields. Some of the fields can also be specified by using command-line options.
app-name: "APP_NAME" logging: file-path: "FILE_PATH" format: FORMAT severity: SEVERITY log-rotate: max-file-size-mb: MAX_FILE_SIZE backup-file-count: BACKUP_FILE_COUNT compress: COMPRESS file-cache: max-size-mb: MAX_SIZE cache-file-for-range-read: CACHE_FILE_FOR_RANGE_READ enable-parallel-downloads: ENABLE_PARALLEL_DOWNLOADS parallel-downloads-per-file: PARALLEL_DOWNLOADS_PER_FILE max-parallel-downloads: MAX_PARALLEL_DOWNLOADS download-chunk-size-mb: DOWNLOAD_CHUNK_SIZE metadata-cache: enable-nonexistent-type-cache: ENABLE_NONEXISTENT_TYPE_CACHE negative-ttl-secs: ENABLE_NEGATIVE_TTL_SECS stat-cache-max-size-mb: STAT_CACHE_MAX_SIZE ttl-secs: TTL_SECS type-cache-max-size-mb: TYPE_CACHE_MAX_SIZE cache-dir: "CACHE_DIR" only-dir: "ONLY_DIR" gcs-auth: anonymous-access: ANONYMOUS_ACCESS key-file: "KEY_FILE" reuse-token-from-url: REUSE_TOKEN_FROM_URL token-url: "TOKEN_URL" gcs-connection: billing-project: "BILLING_PROJECT" client-protocol: CLIENT_PROTOCOL custom-endpoint: "CUSTOM_ENDPOINT" http-client-timeout: HTTP_CLIENT_TIMEOUT limit-bytes-per-sec: "LIMIT_BYTES_PER_SEC" limit-ops-per-sec: "LIMIT_OPS_PER_SEC" max-conns-per-host: MAX_CONNS_PER_HOST max-idle-conns-per-host: MAX_IDLE_CONNS_PER_HOST sequential-read-size-mb: SEQUENTIAL_READ_SIZE implicit-dirs: IMPLICIT_DIRS file-system: kernel-list-cache-ttl-secs: KERNEL_LIST_CACHE_TTL_SECS ignore-interrupts: IGNORE_INTERRUPTS dir-mode: "DIR_MODE" file-mode: "FILE_MODE" fuse-options: FUSE_OPTIONS gid: GID rename-dir-limit: RENAME_DIR_LIMIT temp-dir: "TEMP_DIR" uid: UID foreground: FOREGROUND gcs-retries: max-retry-sleep: MAX_RETRY_SLEEP multiplier: "MULTIPLIER" metrics: stackdriver-export-interval: STACKDRIVER_EXPORT_INTERVAL debug: log-mutex: LOG_MUTEX exit-on-invariant-violation: EXIT_ON_INVARIANT_VIOLATION write: enable-streaming-writes: STREAMING_WRITES
Configuration fields
The following table describes the fields you can specify in your configuration file. Unless stated otherwise, all fields are optional.
Field | Description | Valid value | Default value |
---|---|---|---|
app-name |
The application name of the mount. | String value, for example: "my-bucket-mount" . |
"" |
file-path |
The path to the log file where logs will be written.
If this field is unspecified,
the logs are routed to stdout when Cloud Storage FUSE runs in foreground mode
and to syslogs when Cloud Storage FUSE runs in background mode. |
String value, for example: "/var/log" . |
"" |
format |
Specifies the format of the log file. |
|
json |
severity |
The severity level you want Cloud Storage FUSE to generate logs for. The
severity levels are ordered from lowest severity to highest severity. For
example, when you specify |
|
info |
max-file-size-mb |
The maximum size in megabytes (MB) that log files can reach before being rotated. | Integer. The minimum value is 1 . |
512 |
backup-file-count |
The maximum number of rotated log files to retain, excluding the active file that logs are written to. |
|
10 |
compress |
Specifies whether rotated log files are compressed
using gzip . |
Boolean value: true , false |
true |
max-size-mb |
The maximum size in MiB that the
file cache can
use. If present, |
|
-1 |
cache-file-for-range-read |
Determines whether the full object should be
downloaded asynchronously and stored in the Cloud Storage FUSE cache directory
when the first read is completed from a non-zero offset. This option should
be set to true if you plan to perform several random reads
or partial reads.
Note: If you perform a partial read starting at offset
|
Boolean value: true , false |
false |
enable-parallel-downloads |
Accelerates reads of large files by using the file cache directory as a prefetch buffer using multiple workers to download large files in parallel. To learn more about parallel downloads and configure its supporting properties, see Improve read performance using parallel downloads. To use parallel downloads, you must first enable file caching. |
Boolean value: true , false |
false |
parallel-downloads-per-file |
Specifies the number of maximum goroutines to spawn per file to download the object from Cloud Storage into the file cache. |
Integer | 16 |
max-parallel-downloads |
The maximum number of goroutines that can be spawned at any given time across all the download jobs of files. |
|
Twice the number of CPU cores on your machine or 16 ,
whichever is higher. |
download-chunk-size-mb |
Specifies the size of each read request in MiB that each goroutine makes to Cloud Storage when downloading the object into the file cache. | Integer | 50 |
enable-nonexistent-type-cache |
Creates a type cache entry with the type NonexistentType
if a file isn't found in Cloud Storage. If the file gets created
in Cloud Storage but the NonexistentType entry for
the file is cached, then Cloud Storage FUSE cannot request that file until
the NonexistentType entry is removed from the type cache. |
Boolean value: true , false |
false |
stat-cache-max-size-mb |
The maximum size memory that the stat cache can use, in MiB. The stat cache is always entirely kept in memory. |
|
32 |
negative-ttl-secs |
Defines the time to live (TTL) in seconds of negative stat cache entries, which store results for non-existent files in the cache. |
|
5 |
ttl-secs |
Defines the time to live (TTL) in seconds of cached metadata entries. |
|
60 |
type-cache-max-size-mb |
The maximum size in MiB per directory that the type cache can use. The type cache is always entirely kept in memory. |
|
4 |
cache-dir |
Specifies the directory for storing file cache data. To learn how to enable file caching, see Use file caching. |
A path, for example: "/tmp/gcsfuse-cache-path" . |
|
only-dir |
Mounts only a specific directory within a bucket. | A path, for example: "/etc/gcsfuse.yaml" . |
|
anonymous-access |
Disables authentication for requests. This option should be set if you're using a custom endpoint that doesn't support authentication. This option should also be set if you're using Cloud Storage FUSE with public buckets. | Boolean value: true , false |
false |
key-file |
Specifies an absolute path to the credential JSON key file for authenticating requests to Cloud Storage. By default, Cloud Storage FUSE uses Application Default Credentials to authenticate requests. | A URL. | When this option is not set, Application Default Credentials are used. |
reuse-token-from-url |
Specifies whether to reuse the token acquired from
--token-url . |
Boolean value: true , false |
true |
token-url |
Specifies a URL for getting an access token when the
--key-file is absent. |
A URL. | |
billing-project |
Specifies a project to use for billing when the mounted bucket is accessed. This option is often required when mounting a bucket enabled with Requester Pays. | String value representing a "project ID". | "" |
client-protocol |
Specifies the protocol used for communicating with the Cloud Storage backend. |
|
http1 |
custom-endpoint |
Specifies an alternative custom endpoint for fetching data.
The custom endpoint must support the equivalent resources and operations as
the Cloud Storage JSON endpoint,
https://storage.googleapis.com/storage/v1 .
If a custom endpoint isn't specified, Cloud Storage FUSE uses the global
Cloud Storage JSON API endpoint,
https://storage.googleapis.com/storage/v1 .
If authentication isn't supported on the custom endpoint you specify, set
the --anonymous-access flag to true to
bypass authentication. |
An endpoint, for example: "http://localhost:443/storage/v1" . |
|
http-client-timeout |
Specifies how long the Cloud Storage FUSE HTTP client can wait to get a response from the server before timing out. | Duration, for example: 1h10m10s for 1 hour, 10 minutes,
and 10 seconds. 0s specifies no timeout. |
0s , which specifies no timeout |
limit-bytes-per-sec |
Specifies the bandwidth limit at which Cloud Storage FUSE can read data from Cloud Storage, measured over a 30-second window. | "-1" , which specifies no limit. |
|
limit-ops-per-sec |
Specifies a limit for operations performed per second, measured over a 30-second window. | Floating point number. -1 specifies no limit. |
"-1" |
max-conns-per-host |
Specifies the maximum number of TCP connections allowed per server.
This becomes effective when --client-protocol is set to
http1 . |
0 |
|
max-idle-conns-per-host |
Specifies the maximum number of idle connections allowed per server.
This becomes effective when --client-protocol is set to
http1 . |
Integer between 0 and 2147483647 .
0 specifies no limit on TCP connections. |
0 |
sequential-read-size-mb |
Specifies the chunk size of the data to be downloaded from Cloud Storage, in megabytes (MB). | Integer between 1 and 1024 . |
200 |
implicit-dirs |
Implicitly includes folders and managed folders. See the files and directories documentation in GitHub for more information. | Boolean value: true , false |
false |
kernel-list-cache-ttl-secs |
Enables the list cache and defines the time to live (TTL) in seconds of cached list entries. The list cache is kept in memory in the page cache, which is controlled by the kernel based on available memory. |
0 |
|
ignore-interrupts |
Instructs Cloud Storage FUSE to ignore system interrupt signals, like
SIGINT triggered by Control+C . This prevents signals from
terminating in-flight operations. |
Boolean value: true , false . |
true |
dir-mode |
Permissions bits for directories, in octal. | Integer between 000 and 777 (inclusive). |
"755" |
file-mode |
Specifies permissions bits for files, in octal. | Integer between 000 and 777 (inclusive). |
"644" |
fuse-options |
Specifies additional system-specific mount options. | ||
gid |
Specifies the Group Identifier (GID) owner of all inodes. |
|
-1 |
rename-dir-limit |
Allows the renaming of directories containing fewer descendants than the specified limit. | Integer between 0 and 2147483647 . |
0 |
temp-dir |
Specifies a path to the temporary directory where writes are staged prior to being uploaded to Cloud Storage. | A string path, for example: "/mnt/ssd/example-user-gcsfuse-temp-dir" . |
"/tmp" |
uid |
Specifies the User Identifier (UID) owner of all inodes. |
|
-1 |
foreground |
Runs the gcsfuse command in the foreground. |
Boolean value: true , false |
false |
max-retry-sleep |
Specifies the maximum duration that Cloud Storage FUSE is allowed to sleep in a retry loop with exponential backoff. Once the backoff duration exceeds the specified maximum duration, the retry continues with the specified maximum duration. | Duration, for example: 1h5m50s (1 hour, 5 minutes, and
50 seconds) or 60s (60 seconds). |
30s |
multiplier |
Specifies the multiplier for exponential backoff between consecutive retries. | Floating-point number | "2" |
stackdriver-export-interval |
Exports metrics to stackdriver with the specified interval. | Duration, for example: 1h5m50s (1 hour, 5 minutes, and
50 seconds). 0s specifies no exporting. |
0s |
log-mutex |
Prints debug messages when a mutex is held too long. If this option is
specified, the severity level of logs is automatically set to
trace , which includes trace logs, debug logs, info logs,
warning logs, and error logs. |
Boolean value: true , false . |
false |
exit-on-invariant-violation |
Exits the program when internal variant violations are detected. | Boolean value: true , false . |
false |
enable-streaming-writes |
Controls the write path flow so that data is uploaded directly to
Cloud Storage as its written instead of fully staging the write locally
and uploading it upon close() or fsync() .
For more information about streaming writes, see the
Cloud Storage FUSE GitHub documentation. |
Boolean value: true , false . |
false |