Skip to content

Documentation inconsistency: blob sharing across projects observed despite project-level definition #22648

@neginkheirmand

Description

@neginkheirmand

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.

Image

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

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions