Content Addressable Storage for Software Home Patching
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Patching complex software systems often requires modifying large amounts of data, leading to significant downtime and increased storage and resource consumption, which is unacceptable for mission-critical systems.
Innovation Solution
The use of content addressable storage separates the namespace of a software home from its contents, allowing for efficient patching by generating content addresses based on file contents, enabling updates without affecting running deployments and reducing downtime.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If cloning is used to reduce downtime during patching, then downtime is reduced, but storage overhead and resource consumption significantly increase
Solution Approach 1:
The patent segments the software home into two independent parts: namespace (directory structure and filenames) and content (actual file data). This segmentation allows the namespace to remain unchanged while content is updated, eliminating the need to clone entire software homes. Only the specific content blocks that need patching are modified in the content addressable storage, reducing storage overhead from gigabytes to kilobytes of metadata changes.
Solution Approach 2:
The patent introduces content addressable storage as an intermediary layer between the namespace and actual file content. This intermediary decouples the namespace from content, allowing updates to occur independently. The content addressable storage system manages content blocks with unique identifiers, enabling efficient patching without cloning by simply replacing content blocks while maintaining the same namespace structure.
2Quantity of substance
If in-place patching is used to modify software files, then storage overhead is reduced, but downtime increases significantly
Solution Approach 1:
The patent performs preliminary actions by staging content changes in content addressable storage before committing them to the namespace. The patching process first creates new content blocks with updated data, validates them, and only after successful validation does it update the namespace to point to the new content blocks. This preliminary staging allows for rollback if validation fails, eliminating downtime by preparing changes beforehand without affecting running deployments.
Solution Approach 2:
The patent enables continuous operation by allowing the namespace to remain active and serve running deployments while content updates are prepared and validated in the background. The content addressable storage system maintains both old and new content blocks simultaneously, allowing seamless switching without interrupting service. This continuity ensures that software deployments can continue to run from the current namespace while patching occurs in parallel.
3Loss of time
If cloning is used for patching, then downtime is reduced, but the amount of data to be copied increases for large-scale systems
Solution Approach 1:
The patent extracts only the specific content blocks that need to be patched from the large software home, rather than copying the entire system. The content addressable storage system identifies and extracts only the modified files or code segments, storing them as separate content blocks. This extraction approach reduces the patching data from gigabytes (in cloning) to kilobytes or megabytes, dramatically improving patching efficiency while maintaining low downtime through the namespace-content separation.
Data Source
AI summary
Techniques are disclosed herein for creating and patching software homes using content addressable storage. One or more embodiments comprises storing content for a file that is used to run a particular software deployment. The file is associated with a particular directory that includes a link to a first filename. The first filename is generated as a function of the content for the file, such as by applying a hash function. Responsive to receiving updated content a second filename is generated as a function of the updated content. The second filename is different than the first filename. The link included in the particular directory is modified to point to the second filename. After modifying the link included in the particular directory, the updated content for the file is used to run the particular software deployment.


