Storage Compiler for Virtualized Network Storage Adaptability
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The complexity of managing storage solutions across growing computer networks, particularly in virtualized environments, requires innovative solutions for customizable storage implementations that can adapt to different physical storage devices and provide flexible data management abstractions.
Innovation Solution
A method and system for network storage that involves a storage compiler receiving a storage definition from a developer, compiling it into a customized storage implementation module, and loading it into an IO engine, allowing data to be stored differently than before, enabling customizable storage solutions for virtualized environments.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If traditional distributed file systems or locally attached block devices are used for storage, then storage solutions can be implemented in non-virtualized environments, but the system lacks the adaptability and customization required for virtualized multi-tenant cloud environments
Solution Approach 1:
The storage system is segmented into distinct modules: a storage definition module that describes customized storage implementations, a storage compiler that compiles definitions into executable modules, and an IO engine that loads and executes the compiled modules. This segmentation allows different storage implementations to be developed, compiled, and loaded independently, providing adaptability without increasing overall system complexity.
Solution Approach 2:
The storage system implements dynamic adaptability by allowing storage implementation modules to be compiled and loaded at runtime. The IO engine can dynamically load different customized storage implementation modules based on requirements, enabling the system to adapt to different virtualized environments without requiring complex pre-configuration or hardware changes.
2Adaptability or versatility
If coarse-grained bottom-up abstractions (box, volume, LUN, filesystem) are used in software defined storage, then storage virtualization can be achieved, but fine-grained top-down abstractions required for multi-tenant cloud environments are not provided
Solution Approach 1:
The storage compiler serves multiple functions: it receives storage definitions from developers, compiles them into executable modules, and generates code that can be loaded by the IO engine. This universal compiler component bridges the gap between high-level storage definitions and low-level implementation details, providing both coarse-grained and fine-grained abstraction capabilities through a single unified interface.
Solution Approach 2:
The storage implementation module acts as an intermediary layer between the IO engine and physical storage devices. It translates high-level storage operations into device-specific commands, enabling fine-grained control over storage operations while maintaining ease of operation through standardized interfaces. This intermediary layer resolves the contradiction by providing abstraction at multiple granularities simultaneously.
3Adaptability or versatility
If fixed storage implementations are used, then system simplicity is maintained, but customization and flexibility for different physical storage devices cannot be achieved
Solution Approach 1:
The system allows storage implementation parameters to be changed by compiling different storage definitions into executable modules. Instead of changing the underlying system architecture, users can modify storage behavior by providing different storage definitions that describe customized implementations. The compiler translates these definitions into modules with altered parameters and behavior, enabling customization without increasing structural complexity.
Data Source
AI summary
A method for network storage by receiving, by a storage compiler, a first storage definition from a storage application developer, where the first storage definition describes a customized storage implementation for storing data in an abstraction of at least one physical storage device, compiling the first storage definition to generate a first customized storage implementation module, and loading the first customized storage implementation module into an IO engine. The first customized storage implementation module causes data to be stored in the at least one physical storage device differently than prior to loading the first customized storage implementation module in the IO engine.


