Open audunsolemdal opened 4 days ago
Here is what the health check does: https://github.com/opensearch-project/OpenSearch/blob/2.x/server/src/main/java/org/opensearch/monitor/fs/FsHealthService.java#L223-L229
tl;dr: create a file, write a byte, fsync, close file, delete file
This is all pretty straightforward stuff using the Java NIO API. I would expect anything that is acting as a filesystem to need to work for these APIs.
@audunsolemdal It looks like your stack trace is pointing to a failure when attempting to close the OutputStream
that was used to write a byte. Any idea why that might fail?
This is all pretty straightforward stuff using the Java NIO API. I would expect anything that is acting as a filesystem to need to work for these APIs.
@audunsolemdal It looks like your stack trace is pointing to a failure when attempting to close the
OutputStream
that was used to write a byte. Any idea why that might fail?
I am not sure why it fails on that step, but there are some limitations in Azure blob storage compared to a full fledged file system. I am mounting a Kubernetes Persistent Volume via the Azure Blob Storage CSI driver, which is based on Blobfuse2
https://github.com/Azure/azure-storage-fuse?tab=readme-ov-file#un-supported-file-system-operations
So far I have not noticed any issues using this apart from the health check.
Is your feature request related to a problem? Please describe
Currently I running the opensearch helm chart on kubernetes
monitor.fs.health.enabled = true
My node uses azure blob storage as the backend which seems to work fine, but the fs health check seems to fail[ERROR][o.o.m.f.FsHealthService ] [datalev-opensearch-master-0] health check of [/usr/share/opensearch/data/nodes/0] failed
Describe the solution you'd like
Ideally a health check which works on azure blob storage / Amazon S3 storage.
Related component
Other
Describe alternatives you've considered
Current workaround is setting monitor.fs.health.enabled = false
Additional context
Error log