Finding considerable interest in how the Sun Storage 7000 Unified Storage System leverages SSDs and how it handles SSD failure, Ryan Matthews has put together a Q&A blog on the topics for readers interested in them.
Matthews begins with an explanation of how ZFS works with respect to SSDs, discussing how the Data Management Unit (DMU) manages the storage and retrieval of data regardless of its structure. He identifies the Adaptive Replacement Cache (ARC), which is used as cache for both read and write operations as well as key file system data and metadata.
Matthews also explains that the DMU manages the ZIL as well, which is the journal that allows the file system to recover from system failures. By default, the ZIL is stored inside the storage pool, Matthews continues, noting that it can also be stored on a dedicated disk device called a log device. Regardless of how the system is configured to store the ZIL, it is always cached in system memory while running in order to improve performance. Below all of the caching tiers is the disk pool itself. It is built from groups of disk devices. In the Hybrid Storage Pool, this is where the data protection happens, Matthews writes.
The Sun Storage 7000 Unified Storage System uses Write-Optimized SSDs to store the non-volatile copy of the ZIL and Read-Optimized SSDs to store the L2ARC.
Data gets written onto the Write-Optimized SSD containing the ZIL when either a filesystem or LUN received new data and then creates a transaction to add the new data to the currently open transaction group (TXG) in the DMU, according to Matthews. As part of the transaction, the data is sent to the ARC while the Write Optimized SSD containing the ZIL is updated to reflect the changes. New transactions are logged continually and sequentially to the ZIL.
The System 7000 technology treats the SSD as a circular buffer, being careful to distinguish active from inactive data, writing from the beginning of the disk to the end and then stating once again at the beginning to minimize disk wear.
Transferring data from the Write-Optimized SSD to disk occurs by having the system read the copy of data in the ZIL in memory and then integrates that data into the pool, compressing it if necessary and creating a checksum for the created data. The system decides where the data should live, and then finally the data is synchronized from the ARC to disk, Matthews explains.
Data gets onto the Read-Optimized SSD by scanning it for frequency of access and then transferring blocks of that data from the ARC to the L2ARC. These transfers are performed in fewer, larger writes rather than frequent, smaller writes. A circular buffer process is used in the Read-Optimized SSD as well to minimize wear.
As space begins to be scarce in the ARC, the system evicts data that has already been copied to the L2ARC. Should there be a read request for that data, a checksum routine will determine whether there has been corruption and, if not, return the data. If the data is found to be corrupt, the system will read the correct data from the disk pool. Should a Read-Optimized SSD fail, because the L2ARC is a clean cache (the data is also stored elsewhere on disk) and the system will return read requests directly from disk.
Sun Storage 7000 Unified Storage Systems
ZFS Learning Center
Read More ...