Azure / azure-storage-fuse

A virtual file system adapter for Azure Blob storage
Other
650 stars 205 forks source link

Files not getting updated in blobfuse2, looks like caching issue #1012

Closed lijithomas88 closed 1 year ago

lijithomas88 commented 1 year ago

Which version of blobfuse was used?

Blobfuse2 2.0.1

Which OS distribution and version are you using?

Ubuntu, 20.04.5 LTS

If relevant, please share your mount command.

sudo blobfuse2 mount /opt/sdv/datalake --config-file=/opt/sdv/config.yaml --log-level=log_debug --log-file-path=/opt/sdv/bobfuse2b.log

What was the issue encountered?

File not getting updated in mounted location once it is updated in datalake folder. Changed all cache attributes like timeout-sec, attribute-expiration-sec to 0 and tried. But still file contents are not getting updated.

Have you found a mitigation/solution?

No

Please share logs if available.

I am using streaming config file. Please check if I am missing something.

config.yaml

allow-other: true

logging: type: syslog level: log_debug

components:

libfuse: attribute-expiration-sec: 0 entry-expiration-sec: 0 negative-entry-expiration-sec: 0

stream: block-size-mb: 8 blocks-per-file: 3 cache-size-mb: 1024

attr_cache: timeout-sec: 0

azstorage: type: adls account-name: ompstoragedevelopment tenantid: eb70b763-b6d7-4486-8555-8831709a784e clientid: XXXX clientsecret:XXXX
mode: spn container: tenant102178

vibhansa-msft commented 1 year ago

Generally, kernel caches the contents and subsequent read/writes are served from there. In such case read calls will not even reach blobfuse. Remove attr-cache from your config and try again. If this does not help, then you might need to clean up the kernel page cache manually using "sysctl -w vm.drop_caches=3". When a container is mounted using blobfuse, parallel updates to files through other means is not supported. This is well documented in our Readme and public documents.

lijithomas88 commented 1 year ago

Thanks . Removing attr-cache did not work. Using the above command for clearing kernel page cache and it is working.

I also had another doubt - last week after mounting, when I tried to edit a file from VM, it was not allowing to edit. Also I was not able to create new files in mounted location. But I am not facing this issue since yesterday. I had edited config file for above cache issue, unmounted and mounted .. After that I am able to create new files and edit files in mounted folder.

Any specific configuration related to this in config file which caused mounted folder to behave like read only?

my latest config file is below which allows to edit now.

allow-other: true

logging: type: syslog level: log_debug

components:

libfuse: attribute-expiration-sec: 0 entry-expiration-sec: 0 negative-entry-expiration-sec: 0

stream: block-size-mb: 8 blocks-per-file: 3 cache-size-mb: 1024

azstorage: type: adls account-name: ompstoragedevelopment tenantid: eb70b763-b6d7-4486-8555-8831709a784e clientid: clientsecret:
mode: spn container: tenant102178

vibhansa-msft commented 1 year ago

When you hit the same issue of creation failure you can share the blobfuse logs which can help us root-cause that. As of now I do not see any issue in your config file as such, you can add "--ignore-open-flags=true" to your mount cli for safety.

vibhansa-msft commented 1 year ago

Closing this as there is no update, feel free to reopen when required information is available.

vibhansa-msft commented 1 year ago

We have observed similar issue reported by other customers adding "--disable-writeback-cache=true" in cli parameter solves this problem.

lijithomas88 commented 1 year ago

"--disable-writeback-cache=true" this should be added to mount command or config file? This is to solve caching issue? or the other issue I mentioned not being able to edit file before?

vibhansa-msft commented 1 year ago

Both are possible what I have given is a cli option. This will solve caching as well as write failure issue.