While reading the Harbor documentation under:
Configure Project Quotas → How Harbor Calculates Resource Usage
the following statement caused confusion:
“Shared blobs are only computed once per project. In Docker, blob sharing is defined globally. In Harbor, blob sharing is defined at the project level. As a consequence, overall storage usage can be greater than the actual disk capacity.”
Based on this text, it is implied that Harbor does not reuse blobs across different projects and that blob sharing is strictly project-scoped.
However, practical testing shows behavior that contradicts this interpretation.
What I tested
I pushed the same image (node:latest) into two different Harbor projects and observed the push output.
This indicates that Harbor mounted existing blobs from another project, rather than re-uploading or storing separate physical copies.
Another problem I have with the phrasing is the final conclusion:
“As a consequence, overall storage usage can be greater than the actual disk capacity.”
If blob sharing were truly limited to the project level and identical blobs were physically stored separately per project, then the reported per-project usage would be expected to closely reflect actual disk usage. In that model, the sum of all project usage should not exceed the real disk capacity.
However, as shown by the experiment above, Harbor clearly reuses (mounts) existing blobs across projects at the storage/registry layer. This means that physical blob storage is shared globally, while project-level isolation appears to apply primarily to logical ownership and accounting (quotas, retention, GC), not to physical duplication of data.
Without explicitly stating this distinction between logical per-project accounting and physical blob storage reuse, the sentence “overall storage usage can be greater than the actual disk capacity” is difficult to reason about and can easily be interpreted as contradictory or incorrect.
It would be helpful if the documentation clarified that:
- blob sharing is project-scoped from an accounting and ownership perspective
- but physical blob storage may still be shared across projects
While reading the Harbor documentation under:
Configure Project Quotas → How Harbor Calculates Resource Usage
the following statement caused confusion:
Based on this text, it is implied that Harbor does not reuse blobs across different projects and that blob sharing is strictly project-scoped.
However, practical testing shows behavior that contradicts this interpretation.
What I tested
I pushed the same image (
node:latest) into two different Harbor projects and observed the push output.This indicates that Harbor mounted existing blobs from another project, rather than re-uploading or storing separate physical copies.
Another problem I have with the phrasing is the final conclusion:
If blob sharing were truly limited to the project level and identical blobs were physically stored separately per project, then the reported per-project usage would be expected to closely reflect actual disk usage. In that model, the sum of all project usage should not exceed the real disk capacity.
However, as shown by the experiment above, Harbor clearly reuses (mounts) existing blobs across projects at the storage/registry layer. This means that physical blob storage is shared globally, while project-level isolation appears to apply primarily to logical ownership and accounting (quotas, retention, GC), not to physical duplication of data.
Without explicitly stating this distinction between logical per-project accounting and physical blob storage reuse, the sentence “overall storage usage can be greater than the actual disk capacity” is difficult to reason about and can easily be interpreted as contradictory or incorrect.
It would be helpful if the documentation clarified that: