TECHNICAL FIELD

The present disclosure generally relates to data storage systems and, more particularly, to configuration settings for storage devices.

BACKGROUND

Often, distributed storage systems are used to store large amounts (e.g., terabytes, petabytes, exabytes, etc.) of data, such as objects, blocks, or files in a distributed and fault tolerant manner with a predetermined level of redundancy. These storage systems may support a variety of applications, from media servers (audio, video, images, etc.), database-driven transaction servers (banking, e-commerce, logistics, etc.), and complex hybrids, such as video games, virtual reality, autonomous vehicles, machine learning, etc.

Various applications may need different reliability and have different performance requirements for the storage devices, such as flash storage devices, used to store the application data. In many storage devices, the reliability and performance requirements are set for a specific product, such as a particular model and capacity of solid-state drive (SSD) from a particular manufacturer. The users may select the most appropriate model for their application, but may have difficulty matching device requirements dynamically for changing applications and/or different applications running on the same storage devices.

For example, a video service and banking application may have very different requirements. The video service may require very high performance and high data throughput, but has encoding and system configurations that are resilient to some amount of lost data. The banking application may require very high reliability and absolute data recoverability. However, it may be advantageous from a cost, system management, load balancing, and/or growth perspective to run both applications on a common pool of storage devices with the same or similar base specifications. One or more host systems may access application data for both applications from the same storage device or storage pool.

When managing data for multiple applications off of a common set of storage devices, it may be advantageous to allow the host to dynamically vary the reliability and performance trade-offs in how the storage device is configured. A need exists for at least storage systems that enable a host to select storage device configuration settings based on the application and corresponding reliability and performance requirements.

SUMMARY

Various aspects for storage systems using storage devices with dynamic configuration settings, particularly configuration settings that can be varied at runtime based on host application, are described.

One general aspect includes a storage device that includes a storage medium and a device controller coupled to the storage medium and configured to: receive a storage command for a target data unit; select, based on the storage command, a set of configuration settings selected from a first application set of configuration settings and a second application set of configuration settings; and execute, using the selected set of configuration settings, the storage command to the storage medium. The first application set of configuration settings includes a first trim parameter setting for electrical signals used to write data units to the storage medium, the second application set of configuration settings includes a second trim parameter setting for electrical signals used to write data units to the storage medium, and the first trim parameter setting is different from the second trim parameter setting.

Implementations may include one or more of the following features. The device controller may be further configured to: store the first application set of configuration settings, where the first application set of configuration settings corresponds to a first application type; store the second application set of configuration settings, where the second application set of configuration settings corresponds to a second application type; and determine an application type for the storage command. Selecting the first application set of configuration settings for the selected set of configuration settings may be based on the application type for the storage command matching the first application type and selecting the second application set of configuration settings for the selected set of configuration settings may be based on the application type for the storage command matching the second application type. Determining the application type for the storage command may include determining an application identifier in the storage command and determining the application type for the storage command may be based on the application identifier. The device controller may be further configured to: send the first application set of configuration settings to a host system; and receive the second application set of configuration settings from the host system, where the first application set of configuration settings are a default set of configuration settings. The device controller may be further configured to: configure a first set of storage blocks in the storage medium with the first application set of configuration settings; and configure a second set of storage blocks in the storage medium with the second application set of configuration settings, where selecting the selected set of configuration settings uses a storage location in the storage command and the storage location is selected from the first set of storage blocks and the second set of storage blocks. The set of configuration settings may include at least one error correction parameter setting for error correction algorithms used to write the target data unit to the storage medium and the storage command may include a write command for the target data unit. The first application set of configuration settings may include a first error correction parameter setting and the second application set of configuration settings may include a second error correction parameter setting, where the first error correction parameter setting is different from the second error correction parameter setting. The set of configuration settings may include at least one redundancy parameter setting for determining a number of copies of the target data unit to write to the storage medium and the storage command may include a write command for the target data unit. The first application set of configuration settings may include a first redundancy parameter setting and the second application set of configuration settings may include a second redundancy parameter setting, where the first redundancy parameter setting is different from the second redundancy parameter setting. The first application set of configuration settings may correspond to a baseline reliability value for data units stored to the storage medium and the second application set of configuration settings may correspond to a higher reliability value for data units stored to the storage medium. The first application set of configuration settings may correspond to a baseline performance value for data units stored to the storage medium and the second application set of configuration settings may correspond to a higher performance value for data units stored to the storage medium. The storage medium may be configured to include: a first set of storage blocks configured using the first application set of configuration settings; and a second set of storage blocks configured using the second application set of configuration settings. The device controller may be further configured to determine a reliability group for a plurality of data blocks corresponding to a source application and the reliability group may include storage locations in the first set of storage blocks and the second set of storage blocks.

Another general aspect includes a computer-based method that includes: storing a first application set of configuration settings, where the first application set of configuration settings includes a first trim parameter setting for electrical signals used to write data units to a storage medium; storing a second application set of configuration settings, where the second application set of configuration settings includes a second trim parameter setting for electrical signals used to write data units to the storage medium and the first trim parameter setting is different from the second trim parameter setting; receiving, at a storage device, a storage command for a target data unit; selecting, based on an application type for the storage command, a set of configuration settings selected from the first application set of configuration settings and the second application set of configuration settings; and executing, using the selected set of configuration settings, the storage command to a storage medium of the storage device.

Implementations may include one or more of the following features. The computer-based method may include determining an application type for the storage command, where: the first application set of configuration settings corresponds to a first application type; the second application set of configuration settings corresponds to a second application type; selecting the first application set of configuration settings for the selected set of configuration settings is based on the application type for the storage command matching the first application type; and selecting the second application set of configuration settings for the selected set of configuration settings is based on the application type for the storage command matching the second application type. Determining the application type for the storage command may include determining an application identifier in the storage command and determining the application type for the storage command is based on the application identifier. The computer-based method may include: sending the first application set of configuration settings to a host system, where the first application set of configuration settings are a default set of configuration settings; and receiving the second application set of configuration settings from the host system. The computer-based method may include: configuring a first set of storage blocks in the storage medium with the first application set of configuration settings; configuring a second set of storage blocks in the storage medium with the second application set of configuration settings; and using a storage location in the storage command to select the selected set of configuration settings, where the storage location is selected from the first set of storage blocks and the second set of storage blocks. The set of configuration settings may include at least one error correction parameter setting for error correction algorithms used to write the target data unit to the storage medium and the storage command may include a write command for the target data unit. The first application set of configuration settings may include a first error correction parameter setting and the second application set of configuration settings may include a second error correction parameter setting, where the first error correction parameter setting is different from the second error correction parameter setting. The set of configuration settings may include at least one redundancy parameter setting for determining a number of copies of the target data unit to write to the storage medium and the storage command may include a write command for the target data unit. The first application set of configuration settings may include a first redundancy parameter setting and the second application set of configuration settings may include a second redundancy parameter setting, where the first redundancy parameter setting is different from the second redundancy parameter setting. The first application set of configuration settings may correspond to a baseline reliability value for data units stored to the storage medium and the second application set of configuration settings may correspond to a higher reliability value for data units stored to the storage medium. The first application set of configuration settings may correspond to a baseline performance value for data units stored to the storage medium and the second application set of configuration settings may correspond to a higher performance value for data units stored to the storage medium.

Still another general aspect includes a system that includes: a storage device including a storage medium and a device controller coupled to the storage medium; means for storing a first application set of configuration settings, where the first application set of configuration settings includes a first trim parameter setting for electrical signals used to write data units to the storage medium; means for storing a second application set of configuration settings, where the second application set of configuration settings includes a second trim parameter setting for electrical signals used to write data units to the storage medium and the first trim parameter setting is different from the second trim parameter setting; means for receiving, at the storage device, a storage command for a target data unit; means for selecting, based on an application type for the storage command, a set of configuration settings selected from the first application set of configuration settings and the second application set of configuration settings; and means for executing, using the selected set of configuration settings, the storage command to the storage medium of the storage device.

The various embodiments advantageously apply the teachings of storage networks and/or systems supporting host applications to improve the functionality of such computer systems. The various embodiments include operations to overcome or at least reduce the issues previously encountered on the storage networks and/or systems and, accordingly, are more reliable and/or efficient than other computing networks. That is, the various embodiments disclosed herein include hardware and/or software with functionality to improve the storage of application data for heterogeneous host applications on a storage device, such as by varying storage device configuration settings at runtime based on the particular host application storing or retrieving the application data. Accordingly, the embodiments disclosed herein provide various improvements to storage networks and/or storage systems.

It should be understood that language used in the present disclosure has been principally selected for readability and instructional purposes, and not to limit the scope of the subject matter disclosed herein.

