Dragonfly v2.5.0发布:新增多项功能、修复重要Bug,Nydus模块也有更新! 新功能和增强从Hugging Face和ModelScope直接下载仓库Dragonfly Client如今支持直接从Hugging Face和ModelScope下载模型仓库。用户可运行dfget hf://deepseek-ai/DeepSeek-OCR和dfget modelscope://models/deepseek-ai/DeepSeek-OCR命令获取仓库。Git LFS数据会通过Dragonfly P2P加速下载其他仓库元数据则通过Git协议获取。用于Kubernetes Webhook注入的Dragonfly InjectorDragonfly提供了用于自动注入P2P能力的Kubernetes Mutating Admission Webhook——dragonfly-injector。它能通过基于annotation的策略将Dragonfly client二进制文件和配置、dfdaemon socket挂载以及CLI工具注入到应用Pod中让Pod无需重新构建容器镜像就能使用Dragonfly下载文件。Helm Charts现在也支持在启用webhook injection的情况下部署Dragonfly。用于下载控制的BlocklistDragonfly支持在Manager控制台中配置blocklist来禁用特定下载以此作为紧急措施缓解突发异常请求对服务的影响。当被阻止的下载被拦截时gRPC下载会返回PermissionDenied错误码HTTP proxy下载会返回FORBIDDEN状态。全面的限流Dragonfly在控制平面和客户端引入了更完整的限流能力。Manager和Scheduler gRPC servers现在支持为unary requests和streaming connections配置请求速率限制。客户端支持outbound bandwidth、inbound bandwidth、back-to-source bandwidth、prefetch bandwidth、upload request、download request和adaptive rate limiting能更好地保护源服务提升系统在高负载下的稳定性。dfctl命令行工具Dragonfly Client引入了命令行工具dfctl用于管理客户端本地存储中的任务涵盖tasks、persistent tasks和persistent cache tasks。它支持列出和删除本地资源还能通过Scheduler对文件任务和镜像任务进行preheat。容器镜像仓库代理配置简化dfdaemon现在可从containerd registry mirror requests附加的ns查询参数中推断upstream registry。结合proxyAllRegistries: true用户用一个_default/hosts.toml配置就能将所有registries路由到Dragonfly无需维护单独的、特定于registry的hosts.toml文件和X-Dragonfly-Registry headers。Client下载和传输优化Dragonfly Client在多方面提升了下载效率和文件传输可靠性。parent selector和piece collector会更紧密协作在调度决策前收集足够的parent peers提升带宽利用率为不稳定的parent peers保留graceful fallback。文件导出和下载操作使用buffered writesgRPC stream buffer sizes和连接设置也经过调优以实现更好的大文件传输性能。HTTP处理和重定向安全改进HTTP backend现在使用HTTP/1.1并改进了stat request处理当响应有Transfer-Encoding但没有Content-Length时会用HEAD request重试。Dragonfly在跟随跨源重定向时会移除敏感headers如Authorization和Cookie同时避免缓存相对路径形式的HTTP 307 redirect locations但仍会在请求处理过程中正确解析它们。其他增强在Manager中增加ExternalRedis TLS支持含CA certificate、client certificate、key和insecureSkipVerify选项。移除已废弃的V1 preheat API endpoints将健康检查统一到/healthy endpoint。改进upload和download metrics collection移除未使用的gRPC piece download逻辑。改进INSTANCE_NAME生成方式使用Kubernetes build-time environment variables必要时fallback到系统hostname。增加dfdaemon hickory_dns选项使DNS resolver行为可配置。改进OCI registry blob downloads的task ID计算减少跨registries的重复下载和存储。重要Bug修复修复Redis Lua script中peer TTL和concurrent_piece_count的参数顺序防止非预期的key expiration和错误的peer state。修复在写入默认Scheduler Cluster和Seed Peer Cluster记录后PostgreSQL SERIAL sequence的处理问题避免创建新clusters时出现primary key冲突。修复相对路径HTTP 307 redirect处理对相对Location值跳过缓存在跟随重定向前基于base URL对其进行解析。Nydus新功能和增强支持为Ondemand data构建prefetch-optimized layer blobs。支持将Nydus images转换为OCI格式支持与local archives相互转换。支持Nydusify Copy中的zero-disk transfer。引入基于uffd的virtio-pmem DAX backend支持在Kata场景中实现高性能的on-demand image loading。支持将Storage layer从Proxy mode切换到Dragonfly SDK mode提升P2P cache hit性能。支持使用short container IDs执行commit在commit前同步filesystem。支持在恢复Nydusd时重新发送FUSE requests修复hot-upgrade tests。重要Bug修复修复Blobfs与fuse-backend-rs 0.12.0的兼容性。修复failover-policy参数解析。修复Builder中symbolic link覆盖directory时触发的panic。修复chunkdict deduplication logic、DBSCAN clustering和chunk sorting中的多个问题。修复Nydus image detection logic。修复fusedev中nested mount points的remount invalidation。修复Nydusctl backend metric counters被reset时出现abnormal values的问题。修复image names被修改后Nydusify找不到blobs的问题。修复Nydusify中的plain HTTP conversion。