Releases: GoogleCloudPlatform/gcsfuse
Gcsfuse v2.2.0
New Features:
- Kernel-list-cache:
- List responses, that happen as a part of a readdir
operation, are cached in the kernel page cache. This can significantly speed
up AI/ML training runs, which do full directory listing first, by serving
repeat ListObjects calls locally from the kernel page cache. - Cache invalidation is controlled via the --
kernel-list-cache-ttl-secs
cli
flag orfile-system:kernel-list-cache-ttl-secs
config flag , where a value
of:- 0 means disabled. This is the default value.
- valid positive - represents the ttl (in seconds) to keep the directory
list response in the kernel page-cache. - -1 to bypass a TTL expiration and serve the list response from the cache
whenever it's available.
- List responses, that happen as a part of a readdir
Enhancements:
- Allow parallel lookups of files:
- Allows parallel lookup/access of files under the same directory.
- Before this release, if an application accessed two files
/gcsfuse/mount/a.txt
&/gcsfuse/mount/b.txt
in parallel, then access was
serialized (both at Kernel's FUSE driver layer and GCSFuse). - With this release, access is parallelized improving read performance up to
18x when reading 100K files using 50 threads.
Dependency Upgrades / CVE fixes:
- No dependency upgrades or CVE fixes.
What's Changed
- Moving auth and config packages to stretchr/testify by @sethiay in #1918
- BucketType method to locally store bucketType in variable by @Tulsishah in #1896
- [PR1] allow parallel lookups by @sethiay in #1866
- Include code-coverage badge in README by @kislaykishore in #1933
- Update .codecov.yml to use the PRs base as reference by @kislaykishore in #1934
- [PR2] Composite tests for Parallel dirops test. by @sethiay in #1906
- Move to stretchr testify in ratelimit & util packages by @sethiay in #1922
- Add a Cobra root command. by @kislaykishore in #1908
- [PR3] E2E tests for parallel dirops by @sethiay in #1907
- Add timeout to the coverage workflow by @kislaykishore in #1940
- Metadata-prefetch (aka Recursive listing or ls -R during mount) by @gargnitingoogle in #1930
- [PR1] Support to keep ReadDir response in kernel cache by @raj-prince in #1897
- Implement method to return bucket type from server by @Tulsishah in #1898
- Disable the "changes" feature of codecov by @kislaykishore in #1952
- Remove some flagset to decrease timeout for e2e tests by @Tulsishah in #1951
- Mark "metadata-prefetch-on-mount" as experimental by @gargnitingoogle in #1957
Full Changelog: v2.1.0...v2.2.0
Gcsfuse v2.1.0
New Features:
- anonymous-access:
Used to access an endpoint that does not require authentication, such as a publicly accessible bucket, or a test custom-endpoint.
Can be set via CLI using--anonymous-access
while mounting, or via the config file with
auth-config:
anonymous-access: true
Users that previously used custom endpoints without authentication must additionally pass the anonymous-access flag. See the Changes section below.
- Rocky Linux version 8.9 or later is now supported.
Enhancements:
- Interrupt Handling:
GCSFuse now offers enhanced control over how it responds to interruptions during file system operations. This addresses running Git clone operations on a GCSFuse mounted directory. (PR #1863, #1860) (Issues: #1016, #562, #321)
You can configure GCSFuse to ignore interruptions during file system operations via CLI using--ignore-interrupts
flag (disabled by default) or via config-file using the following config:
file-system:
ignore-interrupts: true
- TCP Connections:
Changed the max-conns-per-host default from 100 maximum TCP connections to unlimited by defaulting max-conns-per-host to 0. This change will help in scenarios where customers are concurrently running more than 100 threads for file operations on GCFuse mounted directories. (PR #1909) (Issues: #1844, #1040)
Changes:
- Custom-endpoint authentication:
Previously, if a custom endpoint is specified, authentication is disabled on the endpoint. Starting with this release, it is now enabled. To use a custom-endpoint without authentication, using the new –anonymous-access feature.
Dependency Upgrades / CVE fixes:
- Upgraded dependencies for better stability and CVE fixes (CVE-2023-45288). (PR #1811, #1894, #1916, #1915)
- Storage sdk upgraded to 1.41.0 including the fix to retry on connection reset.
What's Changed
- Change authentication flow for TPC by @Tulsishah in #1840
- Making read large files test package parallell by @Tulsishah in #1849
- Making rename dir limit test package parallell by @Tulsishah in #1850
- Adding info log for operation retry by @raj-prince in #1854
- Move e2e script in integration test dir by @Tulsishah in #1853
- Making implicit-explicit dir test package parallel by @Tulsishah in #1851
- Enabling gRPC related integration test by @raj-prince in #1823
- Fix failure for kokoro e2e tests for implicit dir by @Tulsishah in #1862
- Introducing new flag to enable hns flow by @Tulsishah in #1855
- [PR-1] Add flag and config to ignore interrupts by @ashmeenkaur in #1863
- moving from gsutil to gcloud in e2e tests by @Tulsishah in #1852
- remove flaky TestRangeReadsBeyondReadChunkSizeWithoutChunkDownloaded test by @ashmeenkaur in #1869
- Fix flaky list large dir e2e test by @Tulsishah in #1871
- switch from read_cache_release branch to master in readcache test script by @gargnitingoogle in #1872
- Making operations test package parallell by @Tulsishah in #1858
- Intro anonymous-access flag by @Tulsishah in #1827
- Using PATH env variable instead of copying gcsfuse package for integration tests by @ashmeenkaur in #1877
- Overriding authConfig flag by @Tulsishah in #1878
- fix flaky modification time check in integration tests by @ashmeenkaur in #1875
- [PR-2][Phase1 Implementation] Ignore GCSFuse interrupts by @ashmeenkaur in #1860
- Using Stretcher testify package in storage handle tests by @Tulsishah in #1867
- Upgrading depenencies as per dependabot suggestions by @sethiay in #1881
- Fix only dir mounting e2e test by @Tulsishah in #1880
- Upgrading go version to 1.22.2 by @sethiay in #1882
- Fix send failure logs on kokoro artifacts by @Tulsishah in #1886
- Printing flags in test logs by @Tulsishah in #1885
- Initializing new storage control client by @Tulsishah in #1865
- Upgrades dependencies by dependabot by @ankitaluthra1 in #1894
- Bump python dependabot dependencies by @ashmeenkaur in #1916
- upgrade storage sdk to v1.41.0 by @ashmeenkaur in #1910
- upgrade golang to 1.22.3 by @ashmeenkaur in #1917
- upgrade dependabot dependencies by @ashmeenkaur in #1915
- Moving logger, flag & perms package tests to stretchr testify by @sethiay in #1919
- fix ignore interrupt integration tests by @ashmeenkaur in #1925
- Remove default limit on max tcp connections by setting max-conns-per-host to 0 by @ashmeenkaur in #1909
- Implement code coverage checks by @kislaykishore in #1921
- Disabling gRPC test temporarily by @raj-prince in #1929
Full Changelog: v2.0.1...v2.1.0
Gcsfuse v2.0.1
gRPC [Allowlist access]:
- Support added to communicate with the GCS backend via gRPC. gRPC is enabled by passing the flag --client-protocol=grpc as mount command. gRPC internally uses http2.
- To use gRPC, contact the Google Cloud Storage gRPC team at gcs-grpc-contact@google.com with a list of GCS buckets to allowlist.
- Performance guidance:
- gRPC provides improved performance when using a single region or dual region bucket that is co-located in the same region as the compute instance.
- gRPC provides improved performance for most workloads, but should not be used for workloads with high parallelism (>32 threads).
Bug fixes and improvements:
- Respect log-format flag for stdout logs. (#1770)
Upgraded dependencies for better stability and reliability: (#1767, #1764, #1819)
Gcsfuse v2.0.0
-
File caching: A client-based local file cache that lets repeat file reads be served from a faster cache storage of your choice, such as a Local SSD, Persistent Disk, or in-memory
/tmpfs
. It significantly improves your read performance on subsequent reads/epochs. (more details here)- New config-file flags (more details here)
cache-dir: (default=””) file-cache: max-size-mb: (default=-1) cache-file-for-range-read: (default=false)
- Behavior:
cache-dir
: The file-cache feature is disabled by default. To enable it, pass a directory tocache-dir
.max-size-mb
: This is used to limit the total capacity that the Cloud Storage FUSE cache can use within the specified cache directory. The eviction of cached data is based on a least recently used (LRU) algorithm. By default, a value of-1
signifies all available capacity in the specified directory.cache-file-for-range-read
: Enable file cache for Random & partial reads: Support for asynchronous cache ingestion of files on offset reads throughcache-file-for-range-read
.
- New config-file flags (more details here)
-
Updates to metadata-cache (stat & type caches) feature
More details here.- Deprecated CLI flags
stat-cache-capacity
was replaced withmetadata-cache:stat-cache-max-size-mb
.stat-cache-ttl
&type-cache-ttl
were replaced withmetadata-cache:ttl-secs
.
- New config-file flags (more details here)
metadata-cache: stat-cache-max-size-mb: (default=32) ttl-secs: (default=60) type-cache-max-size-mb: (default=4)
- Behavior changes
type-cache-max-size-mb
: Type-cache size limit can now be configured using this configuration, at per-directory level.stat-cache-max-size-mb
: The stat-cache size limit is now configured as memory size (in MiB) using this configuration instead of capacity (count of entries). Also, stat-cache is now configured at mount-level as opposed to bucket-level.ttl-secs
: stat-cache and type-cache TTLs have been merged into a single-TTL value, configurable via this configuration. Also, this new TTL is set as an integer multiple of seconds, as opposed to fine-grained duration (such as1s500ms
with the old flags).- To get the best performance,
stat-cache-max-size-mb
,ttl-secs
andtype-cache-max-size-mb
can be individually set to-1
for unlimited size/ttl limits. Setting any of them to0
disables the corresponding cache. - Use of deprecated flags will give warning, but for backward compatibility, their values will still heuristically be converted to the new flags and will be used. If both new and old flags are set, old flags are ignored.
- Deprecated CLI flags
-
Managed folders compatibility
- GCSFuse respects the managed folder IAM permissions in the bucket mounted with GCSFuse.
- Pass
--implicit-dir
flag to view managed folders.
-
Memory Improvements
- The average memory usage of stat-cache is now reduced by up to 40%.
-
Bug fixes and improvements
-
Removed
--experimental-local-file-cache
flag which used to be for an old experimental local file cache feature. -
Upgraded dependencies for better stability and reliability. (#1744, #1746)
Gcsfuse v2.0.0~beta.1
v2.0.0_beta.1 Enable or disable file cache via cache-dir (#1723)
Gcsfuse v1.4.2
- Upgrade Go to v1.21.6 (from v1.21.5)
- [Perf Improvement] Improved read performance by reusing existing readers for subsequent reads. This reduced the overhead of unnecessary GCS connections and increased end-to-end read-bandwidth up to 75% for files smaller than 1 MB. (#1683)
- Bump dependencies (#1630, #1650, #1671, #1672)
What's Changed
- Changing flag name to cache-file-for-range-read in experiment perf tests. by @Tulsishah in #1598
- Upgrade Go version from 1.21.5 to 1.21.6 by @sethiay in #1628
- fix flaky log test by @ashmeenkaur in #1641
- Updating NVIDIA A100 GPU machine for pytorch2.0 by @Tulsishah in #1610
- Bump dependencies Part 1 by @sethiay in #1630
- Fix failure status in KOKORO tests by @ashmeenkaur in #1649
- Bump dependencies Part 2 by @ashmeenkaur in #1650
- Fixing troubleshooting doc by @Tulsishah in #1665
- dependabot should bump only direct dependencies by @ashmeenkaur in #1672
- Revert and bump only direct dependencies by @ashmeenkaur in #1671
- Changing tf model bucket by @Tulsishah in #1678
- [Perf Improvement] Random reads should re-use previous reader even if existing reader can serve the request by @ashmeenkaur in #1683
Full Changelog: v1.4.1...v1.4.2
Early Beta Release for GCS Fuse v2.0.0
Early Beta Release for GCS Fuse v2.0.0
Gcsfuse v1.4.1
- GCSFuse JSON format logs now seamlessly integrate with google-fluentd, enabling easier log analysis and management within Google Cloud's logging ecosystem. (Reference: http://cloud.google.com/logging/docs/agent/logging/configuration)
- #1541 GCSFuse now adheres to proxy settings defined in environment variables (HTTP_PROXY, HTTPS_PROXY), providing greater adaptability in various network configurations.
- GCSFuse mount command is now logged at INFO level, providing better visibility into mount operations and aiding in troubleshooting.
What's Changed
- Kokoro is not triggering on the define branch in the config by @Tulsishah in #1561
- Fix e2e kokoro tests by @Tulsishah in #1563
- Fix e2e tests for release branch by @Tulsishah in #1567
- Adding log to print all configuration flags at start of gcs fuse mount by @ankitaluthra1 in #1565
- Update SLO by @Tulsishah in #1575
- Http proxy fix by @ashmeenkaur in #1562
- Adding dependabot rules by @Tulsishah in #1573
- make logging keys fluentD compatible by @ashmeenkaur in #1591
- Remove branch name env variable in periodic e2e tests by @Tulsishah in #1595
- log failed mount message in e2e tests by @ashmeenkaur in #1599
Full Changelog: v1.4.0...v1.4.1
Gcsfuse v1.4.0
- Added support for PyTorch 2.0
- Upgraded the following dependency packages for fixing the given CVEs
- golang version from 1.21.4 to 1.21.5
- golang.org/x/crypto from v0.14.0 to v0.17.0
What's Changed
- update gcsfuse logging guide by @ashmeenkaur in #1538
- Pytorch 2.0 support compile mode by @Tulsishah in #1539
- Reduce epoches in pytorch2.0 model by @Tulsishah in #1542
- Remove log rotation script from gcsfuse long haul tests by @ashmeenkaur in #1543
- fix flaky log rotation test by @ashmeenkaur in #1544
- dependabot-fixes by @ashmeenkaur in #1553
- upgrade to go 1.21.5 by @ashmeenkaur in #1552
- Lower freq of syncs in periodic-perf-tests by @gargnitingoogle in #1549
- Fix tf model by upgrading driver version by @ashmeenkaur in #1557
Full Changelog: v1.3.0...v1.4.0
Gcsfuse v1.3.0
- Added support for Log rotation in gcsfuse. Please note that this will be enabled by default. For more details - https://cloud.google.com/storage/docs/gcsfuse-config-file
- Security fixes:
- Upgraded golang version from 1.21.3 to 1.21.4.
- Upgraded go-storage-client module from 1.31.0 to 1.34.1 with their dependencies. The following security vulnerabilities are resolved as part of this upgrade:
What's Changed
- Bump certifi from 2023.5.7 to 2023.7.22 in /perfmetrics/scripts/bigquery by @dependabot in #1468
- Bump urllib3 from 1.26.16 to 1.26.18 in /perfmetrics/scripts/bigquery by @dependabot in #1469
- Bump urllib3 from 1.26.15 to 1.26.18 in /perfmetrics/scripts/load_tests/python by @dependabot in #1448
- Bump werkzeug from 2.3.4 to 3.0.1 in /perfmetrics/scripts/load_tests/python by @dependabot in #1466
- Creating big query tables for perf tests - 3 by @Tulsishah in #1450
- Fix pr perf test by @Tulsishah in #1490
- Build script and config files to run periodic tests on different branches by @Tulsishah in #1455
- Add exec-mode to script files by @gargnitingoogle in #1486
- Support --config-file flag for periodic perf tests by @Tulsishah in #1493
- Remove chmod calls for running scripts by @gargnitingoogle in #1489
- Fix experimental periodic perf test by @Tulsishah in #1499
- Change branch name and end date by @Tulsishah in #1509
- Collate fio installations at one place by @gargnitingoogle in #1506
- Fix clat-percentile accuracy in fio by @gargnitingoogle in #1503
- Run periodic tests for read cache branch with cache enabled by @sethiay in #1515
- Upgrade tensorflow model dependencies by @ashmeenkaur in #1510
- Pytorch 2 support by @Tulsishah in #1513
- Fix inverted commas in pytorch setup by @Tulsishah in #1527
- Upgrading go version 1.21.3 to 1.21.4 by @Tulsishah in #1525
- Bring changes from dec_2023_release branch into master branch by @gargnitingoogle in #1530
- Remove Image recognition models by @Tulsishah in #1483
- Update install test.sh with public documentation install commands by @ashmeenkaur in #1496
- add configs for log rotation by @ashmeenkaur in #1505
- Update installation steps for not using apt-key by @sethiay in #1498
- Integrate with lumberjack for log rotation by @ashmeenkaur in #1504
- Rename log rotate config by @ashmeenkaur in #1520
- Upgrade go storage pkg from 1.31.0 to 1.34.1 by @Tulsishah in #1491
- Fix tf-resnet model failure by @Tulsishah in #1536
- make log compression on by default by @ashmeenkaur in #1537
Full Changelog: v1.2.1...v1.3.0