Technical Question: Does Seafile Server require all blocks on local storage to be available?

I am developing a pattern for Seafile to use local-storage in non-standard way. Essentially, Seafile can see all the blocks in local-storage, and can access them without a problem, but my system has those block-files pulled to the local server on access. It would be similar to the way S3 is accessed (meaning the blocks are on remote storage). However, I am NOT using S3, and Seafile Server sees local-storage.

So, my question is whether Seafile handles how it reads blocks based on the storage medium?

Background:

  • I uploaded a 1GB video via web. The blocks were written and read directly from local-storage. When I viewed the file via web, it took about 5 seconds to load, and I was able to seek with no delay.
  • When I moved the blocks to the remote storage, it took close to a minute just to load the video, and seeking was similar to that. I expected some delay to pull enough blocks to buffer, but not that long. I seemed like Seafile was pulling down all the blocks prior to playing.

I’ve kinda figured out what was happening. A lot of it came down to system performance, and I had to change the way rclone was pulling files. It defaults to pulling only the bits necessary, but since seafile already splits the files up, I changed it to just pull the entire file. That changed the ability to seek in a video dramatically.