Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adopt zlib random access algorithm to support OCIv1 compatible nydus image #833

Merged
merged 10 commits into from
Nov 7, 2022

Conversation

jiangliu
Copy link
Collaborator

@jiangliu jiangliu commented Nov 3, 2022

By adopting zlib random access algorithm, nydus can build a RAFS metadata from a targz file and use the targz file as RAFS data blob. By this way, we could associate a small RAFS metadata blob to existing OCIv1 images, which provides lazy loading and data deduplication capabilities with minimal resource overhead.
Now we have a flexible architecture to support all of OCIv1/eStargz/Nydus images as below:

截屏2022-11-03 23 29 58

thread 'main' panicked at 'Command create: Argument or group 'estargztoc-ref' specified in 'requires*' for 'blob-id' does not exist', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-4.0.18/src/builder/debug_asserts.rs:152:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Change storage interfaces to relax the constraint that compressed chunk
must be continuous.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Refine implementation of legacy stargz.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Simplify RAFS fs prefetch implementation.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Refine data validation related logic:
1) force validating of data fetched from storage backend
2) disable data validation for legacy stargz images.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Amplify read requests for RAFS v6 at storage layer, this may help to
reduce IO requests to storage backend and improve performance.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Fix a bug in generating chunk info for RAFS Zran fs.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Enhance nydusd to support ZRan based RAFS v6 fs.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Support generating ZRan based RAFS fs from estargz file, which is
similiar to 'targz-to-ref' but filtering out all estargz specific files.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Only support generating RAFS v6 from estargz/targz files.

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
@anolis-bot
Copy link
Collaborator

@jiangliu , a new test job has been submitted. Please wait in patience. The test job url: https://tone.openanolis.cn/ws/nrh4nnio/test_result/30836

@anolis-bot
Copy link
Collaborator

@jiangliu , The CI test is completed, please check result:

Test CaseTest Result
merge-target-branch✅ SUCCESS
build-docker-image✅ SUCCESS
compile-nydus✅ SUCCESS
compile-ctr-remote✅ SUCCESS
compile-nydus-snapshotter✅ SUCCESS
start-nydus-snapshotter-config-containerd✅ SUCCESS
run-container-with-nydus-image✅ SUCCESS

Congratulations, your test job passed!

@hsiangkao
Copy link
Contributor

Fixes #686

@imeoer
Copy link
Collaborator

imeoer commented Nov 7, 2022

Let's move forward quickly.

@imeoer imeoer merged commit e3df935 into dragonflyoss:master Nov 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants