possible composefs /etc improvements

Đang mở
#2,627 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
linux, rust
Lĩnh vực
backend, operating-systems

Hướng nghiên cứu

The issue identifies the composefs backend, /etc deployment handling, and the three-way merge, but names no source files or tests. Start by locating the composefs deployment path and reading how it copies and merges /etc; then assess whether an overlayfs or reflink approach is viable. Done means a chosen approach is implemented and verified to preserve the existing merge behavior while avoiding unnecessary file copies.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Currently with the composefs backend populating /etc for a deployment is basically:

  • mount the erofs for the new image
  • cp -a /etc into /sysroot/state/deploy/*/etc
  • does the 3-way merge in place, and then bind mounts the deployment /etc directly into the final system

At the very least instead of copying all of the files out of the image on each deployment, we should be able to reflink each from the object store and not duplicate the data.

Going a bit further, we could do something like:

  • /sysroot/state/deploy/*/etc instead just becomes an overlayfs upperdir
  • we mount the erofs from the image and use its /etc as a lowerdir with above
  • perform the 3-way merge on the overlay

No copying (except for internal overlay ops), and I think this also allows us to optimize the 3-way merge? Since we can just look at the upperdir on the previous deployment to know exactly which files have been modified and do the copy (reflink?) directly from those files.

Something like that. I haven't looked into proving this out, but wanted to write it down before I forget.

Ngôn ngữ chính
Rust
Star
2.3k
Fork
230
Merge trung bình
3 ngày 19 giờ
Pull request đã merge (30 ngày)
37

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của bootc-dev/bootc

Tất cả issue của bootc-dev/bootc

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.