Bạn đang nói về một FUSEhệ thống tệp (hệ thống tệp trong không gian người dùng - Linus gọi chúng là đồ chơi ) hoặc hạt nhân được biên dịch tùy chỉnh HOẶC squashfs. Squashkhông chính xác như bạn mô tả - ví dụ, bạn không thể gắn tarball - nhưng không phải với VFS được hỗ trợ kernel bạn chắc chắn có thể có mksquashbất kỳ số lượng tệp hoặc thư mục và gắn kết lưu trữ chỉ đọc. Bạn có sự lựa chọn xz, lzma, or gznén. Squashđược sử dụng mọi lúc - nếu bạn đã từng sử dụng hình ảnh linux trực tiếp thì rất có thể đó làsquashed.
Tôi sẽ nói với bạn một mẹo tôi sử dụng với squashfs.tôi muốn tạo btrfstệp hình ảnh và sử dụng btrfstune -S 1để biến nó thành một seedtập . Sau đó tôi đặt hình ảnh đó trong một squashfskho lưu trữ. Từ đó tôi có thể mount -o loopsự image.sfsvà từ bên trong mà mount -o loopcác btrfshình ảnh.
Âm btrfs seedlượng ban đầu sẽ gắn kết như read-only- dự kiến sẽ xem xét rằng nó được chứa trong một squashedvòng lặp. Nhưng nếu tôi thì làm:
GB_tmp_loop=$(
fallocate -l $((1024*1024*1024)) /tmp/1GB_tmp.img &&
losetup -f --show $_
)
btrfs device add "$GB_tmp_loop" "${btrfs_seed=/path/to/btrfs_image_mount}"
umount "$btrfs_seed"
mount -o compress-force=lzo,autodefrag,rw "$GB_tmp_loop" "$btrfs_seed"
Đột nhiên, tôi đang tận dụng chức năng btrfscủa s copy-on-writevà nén ghi tự động VÀ squashfs nén vượt trội tất cả trong RAM VÀ trong kernel.