Releases · GoogleCloudPlatform/gcsfuse
Gcsfuse v3.7.1
Improved the retry logic in new read path for Rapid Buckets
Gcsfuse v3.7.0
Features:
-
Rapid Buckets Read Performance Improvement: Introduced a new read path for Rapid buckets that optimizes performance by leveraging the read ahead algorithm implemented by kernel which is optimised over the years.
- Configuration Requirements: To use the new reader, we require a few configuration changes on the machines. These configuration changes are fully managed in the GKE environment. On non-GKE environments, GCSFuse requires sudo permissions or users must manually configure
read_ahead_kb,max_background, andcongestion_threshold. Default config values:- read_ahead_kb: 16384
- max_background: min(max(12, 2*numCPU), 192)
- congestion_threshold: (3 * max_background)/4
- Manual configuration of these settings is shown below using a c4-standard-192 instance:
export MOUNT_POINT=<mount path> echo 16384 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb echo 192 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/max_background echo 144 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/congestion_threshold- Limitations :
1. File Cache compatibility: This read path is incompatible with File Cache. To use File Cache, users must explicitly setenable-kernel-readertofalseduring mounting; otherwise, the cache will remain inactive.
2. Dynamic Mounts: The new read path is not supported when using dynamic mounting.
- Configuration Requirements: To use the new reader, we require a few configuration changes on the machines. These configuration changes are fully managed in the GKE environment. On non-GKE environments, GCSFuse requires sudo permissions or users must manually configure
Bug fixes & Improvements:
-
Improved handling of errors encountered while deleting objects in non-atomic rename flow(Applicable on non-HNS buckets). GCS Fuse handles the metadata eviction and file cache updation automatically corresponding to deleted objects and there is no action required from the customer.
Dependency Upgrades / CVE fixes
- Go SDK upgrade from v1.59.1 to 1.59.2
Gcsfuse v3.6.0
-
Regex-based File Cache Filtering
- GCSFuse now provides granular control over the set of files cached when file cache mode is enabled through regular expressions, enabling users to prioritize critical datasets. For e.g., you can now specify only parquet files to be cached over the entire dataset. This feature is helpful in AI training where you want to expose raw data via fuse but want to control specific datasets to be cached like parquet files or Web Datasets.
- This feature introduces two optional configuration parameters:
file-cache:include-regexandfile-cache:exclude-regex. These are accessible via the command-line flags--file-cache-include-regexand--file-cache-exclude-regex, respectively. - Regex patterns are evaluated against the complete object path. Each of these options can be used independently. When configured, files matching the exclude-regex are ineligible for caching. Similarly, when configured, only files matching the include-regex will be cached.
-
Improved handling of paths with special characters
- GCSFuse gracefully handles objects with names like
//,.or.., ensuring the file operations do not throw errors.- Listing: Objects with special characters like
//,.or..that conflict with traditional file system hierarchy are hidden from file listings. - Renaming or deleting a directory affects all contained objects, including objects with special characters. This prevents these special objects from being accidentally left behind.
- Listing: Objects with special characters like
- GCSFuse gracefully handles objects with names like
-
Sparse file download behind an experimental flag
- Added support for downloading requested chunks instead of complete files when filecache is enabled. This is helpful for scenarios where entire file can’t be fit in the cache due to its size or to reduce egress from bucket where you only need a part of the file but not the entire file.Currently this feature is in experimental mode and behind a flag
--experimental-enable-chunk-cacheorfile-cache:experimental-enable-chunk-cacheconfig.
- Added support for downloading requested chunks instead of complete files when filecache is enabled. This is helpful for scenarios where entire file can’t be fit in the cache due to its size or to reduce egress from bucket where you only need a part of the file but not the entire file.Currently this feature is in experimental mode and behind a flag
Bug Fixes & Improvements
-
Improves HNS folder listing by ~28x. In our benchmarking, this improvement reduced the time to list a folder containing 1000 folders from 1.7 seconds to 60ms. (PR#4099) (Issue#4075)
-
Buffered Read
- Zero Copy - 6x throughput improvement over default reader
- Removed a memory copy from the GCSFuse layer for the buffered reader, resulting in over 20% throughput improvement compared to the previous buffered reader implementation and a 6x throughput increase compared to the default reader. This optimization also reduces the CPU overhead previously required for data copy.
- Support for Sequential-after-Random Workloads
- GCSFuse now automatically switches back to the buffered reader if the workload's read pattern becomes sequential after a period of random access
- Zero Copy - 6x throughput improvement over default reader
-
Redundant ListObject check on mount initialization is removed.
Dependency Upgrades / CVE fixes
- Go SDK patch release upgrade to v1.58.0
Full Changelog: v3.5.0...v3.6.0
Gcsfuse v3.5.6
- Improved mount time by removing redundant
ListObjectcall during the mount process. Bucket existence and access checks will be handled by the existinggetStorageLayoutcall.
Gcsfuse v3.2.4
- Improved mount time by removing redundant
ListObjectcall during the mount process. Bucket existence and access checks will be handled by the existinggetStorageLayoutcall.
Gcsfuse v3.5.5
Bug Fixes
-
Upgraded the go-dns library to
v1.3.0which contains a fix for DNS lookups for machines wheresendis restricted butsendtois not (#4151) . -
Removed the
readerattribute from thegcs/read_bytes_countmetric to bring the metric's cardinality back within recommended limits, preventing potential issues with metric collection and querying (#4142). -
Fixed a regression introduced in v3.5.1 where the
enable-google-lib-authflag defaulted to true, causing unnecessary cred.UniverseDomain queries even when--anonymous-accesswas enabled. This causes the authentication to fail. This behavior is now corrected in v3.5.5 to properly bypass all authentication checks..(#4093).
Gcsfuse v2.11.5
Fixes GO-2025-4155 by upgrading Golang from 1.24.10 to 1.24.11.
Gcsfuse v3.2.3
Gcsfuse v3.5.4
Fixes GO-2025-4155 by upgrading Golang from 1.24.10 to 1.24.11.
Gcsfuse v3.5.3
Fix to honour machine-type from config file above the one coming from metadata server PR#4083.