Mounted Google Drive loads files slowly, even from VFS cache

What is the problem you are having with rclone?

Files read from a mounted Google Drive shared drive are occasionally loaded slowly (more than 30 seconds to open). There seems to be no sensible pattern as to which files are slow to load. I have had this issue before and I still have the fixes from that attempt in action. I'm not sure what has changed to reintroduce the problem, other than perhaps a much larger number of files in the mount.

The app which is reading the files times out after 30 seconds, and generally after this point a new read operation for the same file completes instantly.

I don't believe this is an issue with Google Drive being slow, because all the files being loaded are in the VFS cache (this does make for a large VFS cache of over 15,000 files, although only about 130GB data).

I noticed when running with -vv that the cache stale poll was being run every minute, and because of the size of the VFS cache, firing out 15,000 vfs cache RemoveNotInUse log lines every minute. I tried increasing --vfs-cache-poll-interval to see if the cache stale procedure was holding up file IO, but no difference.

Run the command 'rclone version' and share the full output of the command.

rclone v1.75.0
- os/version: Microsoft Windows 11 Pro 25H2 25H2 (64 bit)
- os/kernel: 10.0.26200.9168 (x86_64)
- os/type: windows
- os/arch: amd64
- go/version: go1.26.5
- go/linking: static
- go/tags: cmount

Which cloud storage system are you using? (eg Google Drive)

Google Drive (shared drive)

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone mount music: M: --volname "Music" --network-mode --temp-dir D:\ --cache-dir D:\ --vfs-cache-mode full --vfs-cache-max-age 2y --dir-cache-time 2y --vfs-refresh --vfs-cache-min-free-space 10Gi --config "C:\config\rclone.conf"

Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

[music]
type = drive
client_id = XXX
client_secret = XXX
scope = drive
service_account_file = C:/config/service-account.json
team_drive = XXX
root_folder_id =

A log from the command that you were trying to run with the -vv flag

The log is quite busy with other stuff going on (e.g. a simultaneous ongoing file read), so here are the excerpts I think are relevant by matching the rclone logs to the logs of the app loading the files.

  1. At the time the app first tries to open a file, rclone logs:
    2026/09/01 19:50:19 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Getattr: fh=0xFFFFFFFFFFFFFFFF
    
  2. 30 seconds later, when the app says the file load has timed out:
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Getattr: errc=0
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Getattr: fh=0xFFFFFFFFFFFFFFFF
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Getattr: errc=0
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: OpenEx: flags=0x0
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: OpenFile: flags=O_RDONLY, perm=-rwxrwxrwx
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Open: flags=O_RDONLY
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: newRWFileHandle: 
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >newRWFileHandle: err=<nil>
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Open: fd=App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3 (rw), err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >OpenFile: fd=App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3 (rw), err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >OpenEx: errc=0, fh=0x5
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=0, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=4096, off=0
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): openPending: 
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: vfs cache: checking remote fingerprint "219598,2026-08-24 19:05:01.816 +0000 UTC,c437c4f7161f39c215e206a3fbab5fbc" against cached fingerprint "219598,2026-08-24 19:05:01.816 +0000 UTC,c437c4f7161f39c215e206a3fbab5fbc"
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: vfs cache: truncate to size=219598 (not needed as size correct)
    2026/09/01 19:50:50 DEBUG : App AudioStore: Added virtual directory entry vAddFile: "c516ef3fe1d04f47b1565786a8389333.mp3"
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >openPending: err=<nil>
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:0 Size:4096} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=4096, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=4096
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=219455, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=4096, off=219455
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:219455 Size:143} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=143, err=EOF
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=143
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=0, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=4096, off=0
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:0 Size:4096} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=4096, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=4096
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=4096, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=11904, off=4096
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:4096 Size:11904} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=11904, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=11904
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=0, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32768, off=0
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:0 Size:32768} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32768, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32768
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=32768, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32084, off=32768
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:32768 Size:32084} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32084, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32084
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=64852, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32560, off=64852
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:64852 Size:32560} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32560, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32560
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=97412, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32449, off=97412
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:97412 Size:32449} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32449, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32449
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=129861, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32765, off=129861
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:129861 Size:32765} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32765, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32765
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=162626, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32437, off=162626
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:162626 Size:32437} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=32437, err=<nil>
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=32437
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=195063, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32537, off=195063
    2026/09/01 19:50:50 DEBUG : vfs cache: looking for range={Pos:195063 Size:24535} in [{Pos:0 Size:219598}] - present true
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=24535, err=EOF
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=24535
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: Read: ofst=219598, fh=0x5
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): _readAt: size=32768, off=219598
    2026/09/01 19:50:50 DEBUG : App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3(0x252bf3a4be00): >_readAt: n=0, err=EOF
    2026/09/01 19:50:50 DEBUG : /App AudioStore/c516ef3fe1d04f47b1565786a8389333.mp3: >Read: n=0
    

hi,

if you are using service_account_file, then remove client_id and client_secret
if you are using client_id and client_secret, then remove service_account_file

Done that now, thank you. Does having both set affect performance or is this a change to meet best practice?

well, it is best practice. the service file contains the client_id

now, you have a simplified setup, one small setup closer to a solution.


i do try some random testing.
for example, remove --volname "Music" --network-mode


fwiw, i have a summary of the rclone's two vfs caches

I've removed your suggested flags and will monitor to see if it makes any difference, thank you.

I'm intentionally using both caches quite heavily - the dir-cache is high since I was previously told that Google Drive is a polling remote so it tells you about changes to the directory structure anyway. vfs cache is high to try and make access to all files as fast as possible. The cloud mount in this case is less about storage space and more about sync.

which app? what other apps have you tested that have the same exact problem?
if you watch a video, does the exact same problem occur?

imo. the flags used in your command are pretty standard usage for gdrive.