Metadata refers to the information about stored data that helps in its identification, categorization, accessibility, and retrieval. In the world of data management and storage arrays, effective handling of metadata is crucial for efficient and organized storage systems.
Modern application workloads, such as AI and EDA, run metadata-intensive operations and rely on robust metadata handling capabilities to ensure seamless operations and optimize storage resources. By efficiently storing and managing metadata alongside the actual data, storage arrays can enhance performance, improve searchability, and enable faster access to information.
How Metadata Architectures Enhance Metadata Storage
In modern storage arrays, advanced techniques are employed for efficient metadata storage and retrieval. These include distributed metadata architectures that distribute the load across multiple nodes or devices within the array. Such architectures enhance scalability while maintaining high performance levels. These solutions can come with a lot of design challenges, so let’s have a look at them.
For example, a file move operation may need to modify multiple metadata records, likely in different blades or nodes: the source directory, target directory, source lookup, target lookup, moved file, and possibly the target file that’s being renamed over. Even just the operation of creating a file needs to modify the directory metadata and directory listing and create a metadata record for the file (a file inode).
Similarly, in an object, PUT may create a new version of an object and consequently needs to modify both the object metadata as well as object version metadata. To avoid bottlenecks, we want the metadata for different versions of a single object to be spread across blades or nodes, just like we want the metadata records for files in the same directory to be spread across. As a result, just about every storage operation may be touching metadata across multiple blades.
How the Pure Storage® FlashBlade® Distributed Metadata Transactions Architecture Solves These Challenges
Distributed Metadata Transaction Framework
FlashBlade provides effective distributed metadata handling that enables users to have proper metadata management and accurate tracking of changes made to stored data over time. The distributed metadata transactions framework provides load distribution and enhances scalability with high performance levels.
As the interfacing layer receives requests to process metadata operations, the endpoints distributed on all blades connect to the virtual controller(s) (again spread across blades), which controls the lookup, inode, and parent directory inode information, and stages the change in metadata parallelly across all the storage devices where the information is supposed to be updated or modified.
This transaction framework also helps extend rich operations such as fast-path/slow-path locking, deadlock avoidance, minimized communication roundtrips, and durability under various HA events (power loss, hardware failures, software crashes). Let’s try and understand this using an analogy:
Consider a bank account transfer from account A to B:
- Check proper balance in A and get the customer ID of B to access the customer record.
- Also, check the sender customer ID to maintain integrity of the operation.
- Check if either accounts A or B are in deactivated state and fail the transaction if the account is deactivated.
- Update the account balance information of A and B by decreasing the balance of A and increasing the balance of B.
In a distributed storage system (like FlashBlade), all of this has to happen simultaneously and it gets really complex when multiple entities (multiple clients trying to access multiple files and objects) are distributed across blades.
How does FlashBlade ensure metadata operations are performant while solving the complex challenges of a distributed system?
FlashBlade uses multiple virtual controllers (distributed across blades), which are controlled by the Purity//FB operating environment. Here are some actions that FlashBlade executes to achieve a high-performance metadata handling framework:
- Synchronously updates all the entities involved in a transaction to avoid any issues that might happen during concurrent updates of multiple entities, so that two different account transfers to the same account do not end up leaving an incorrect account balance. For example, if multiple clients are trying to update the same file permissions, the FlashBlade metadata framework will maintain the integrity of the update action performed.
- If there’s an HA event (power loss, hardware failures, software crashes), Purity/FB makes sure that the content is kept consistent gracefully by using internal logging mechanisms and resiliency applied at every level of the transaction. For example, while any client(s) is trying to update a file permission and there are blade failures where the file metadata information is being stored, FlashBlade will log the changes in the internal data structures which are resilient and will re-update the information when the blades and devices are in a healthy state.
- Interrupts a transaction where casualty problems are detected. For example, if a client is trying to access information on a file that has been renamed or deleted, appropriate error messages will be provided to the client from FlashBlade.
- Avoids deadlock situations on contention by using a two-phase hybrid locking approach which has a pessimistic and optimistic locking phase deployed by Purity//FB on a particular situation basis. This is extremely helpful when multiple clients are trying to access and update the metadata of the same file.
- Deploys different mechanisms to handle modifying metadata (example: changing name of file) and non-modifying metadata (example: get attributes of a file) by using internal mechanisms of front-end and back-end information. FlashBlade executes front-end information by processing it as record-level transactions and back-end information is processed in a batch to improve efficiency.
7 Benefits of FlashBlade Metadata Management
In a nutshell, here’s how FlashBlade stands out against other distributed storage systems when it comes to high-performance metadata management:
- Provides true parallelism with an independent protocol stack for NFS, SMB, and S3.
- Brings in the best of flash storage technology using LSM trees and pyramids, and provides best read, write, and updates on metadata (refer to the Pure Storage Better Science blog for more details).
- Optimized multi-threaded transaction framework (as described in the previous section) with proper mechanisms in place to enhance performance of the system when dealing with metadata-intensive workloads.
- No complexity at the user level, as all complex operations are managed by Purity//FB.
- All transactions are resilient, as there are resiliency algorithms deployed at every level of the transaction.
- Leverages best locking optimizations to avoid deadlocks and conflicts.
- Increases business productivity for the infrastructure running on FlashBlade NFSv3 by deploying Pure Storage Rapid File Toolkit, which helps execute native Linux metadata operations commands (such as chown, chmod, ls) expeditiously.