

- #UPGRADE FROM BENTO 3 TO BENTO 4 UPGRADE#
- #UPGRADE FROM BENTO 3 TO BENTO 4 SOFTWARE#
- #UPGRADE FROM BENTO 3 TO BENTO 4 CODE#
File systems are written in Rust, a type-safe, performant, non-garbage collected language. As Bento runs in the kernel, it enables file systems to reuse well-developed Linux features, such as VFS caching, buffer management, and logging, as well as network communication. Bento hooks into Linux as a VFS file system, but allows file systems to be dynamically loaded and replaced without unmounting or affecting running applications except for a short performance lag. We built Bento, a framework for high-velocity development of Linux kernel filesystems. This means supporting a user-friendly development environment, safety both within the file system and across external interfaces, effective testing mechanisms, fast debugging, incremental live upgrade, high performance, and generality of file system designs. Our trust model is that of a slightly harried kernel developer. Our goal is to enable high-velocity development of kernel file systems without sacrificing performance, for existing kernels like Linux. We show that the same file system runs a factor of 7x slower on ‘git clone’ via FUSE than as a native kernel file system. However, FUSE can incur a significant performance overhead, particularly for metadata-heavy workloads. FUSE is a widely-used system for user-space file system development and deployment. Īn alternative is to trade higher velocity for reduced performance. Indeed, the failure of file systems to keep pace has led to perennial calls to replace file systems with blob stores that would likely face many of the same challenges despite having a simplified interface. Likewise, application workload diversity and system management requirements (e.g., the need for container-level SLAs, or provenance tracking for security forensics) make feature velocity essential. Recent changes in storage hardware (e.g., low latency SSDs and NVM, but also density-optimized QLC SSD and shingle disks) have made it increasingly important to have an agile storage stack. In the cloud setting, this forces kernel upgrades to be batched to meet cloud-level availability goals.
#UPGRADE FROM BENTO 3 TO BENTO 4 UPGRADE#
Finally, upgrading a kernel module requires either rebooting the machine or restarting the relevant module, either way rendering the machine or module unavailable during the upgrade and forcing programs relying on the module to be stopped or moved to other machines. The restricted and different kernel programming environment also limits the number of trained developers. The difficulty of implementing kernel-level debuggers and kernel testing frameworks makes this worse. The lack of isolation between kernel modules means that these errors often have non-intuitive effects and are difficult to track down.
#UPGRADE FROM BENTO 3 TO BENTO 4 CODE#
Combined with the inherent difficulty of programming correct concurrent code in C, this means that new code is very likely to have bugs. Linux has a large code base with relatively few guardrails, with complicated internal interfaces that are easily misused.

Slow Linux development can be attributed to several factors. Elsewhere in the cloud, new features are deployed weekly or even daily. In Linux, the most widely used cloud operating system, release cycles are still measured in months and years.

However, this push for rapid development has not fully caught up to operating systems. High velocity delivers new features to customers more quickly, reduces integration and debugging costs, and reacts quickly to security vulnerabilities.
#UPGRADE FROM BENTO 3 TO BENTO 4 SOFTWARE#
Bento also supports userspace debugging.ĭevelopment and deployment velocity is a critical aspect of modern cloud software development. Bento file systems can be replaced with no disruption to running applications, allowing daily or weekly upgrades in a cloud server setting. It enables file systems written in safe Rust to be installed in the Linux kernel, with errors largely sandboxed to the file system. To this end, we have developed Bento, a framework for high velocity development of Linux kernel file systems. It is especially important for filesystems, which need to cope with new storage devices and new usage patterns. High development velocity is critical for modern systems, but for the most part hasn't reached operating systems development.
