Software-defined storage (SDS) is a storage architecture that separates storage software from its hardware. As opposed to storage area network (SAN) or network-attached storage (NAS) systems, SDS is typically designed to perform on any industry-standard or x86 system. This essentially removes the software’s dependence on proprietary hardware. Decoupling storage software from its hardware helps in expanding the storage capacity as and when one sees fit. They do not have to scramble to add another piece of proprietary hardware. The system also makes it easy for people to upgrade or downgrade hardware whenever they want.
Earlier, Anand Jayapalan had spoken about how SDS is part of a larger ecosystem called hyper converged infrastructure) where all software is separated from all hardware. It enables people to select the hardware they want to buy, as well as how much storage they actually require. In majority of the cases, SDS must have:
- Scalability: The ability to scale out storage infrastructure without hampering the performance.
- Automation: Simplified management that keeps in check.
- Standard interfaces: An application programming interface (API) for managing and maintaining storage devices and services.
- A virtualized data path: Block, file, and object interfaces that support applications written to such interfaces.
- Transparency: The ability to monitor and manage storage use while having a good understanding of which resources are available and at what costs.
Traditional storage systems were monolithic, and are sold as a bundle of hardware and proprietary software. The usefulness of SDS, however, lies in its independence from any specific hardware. It is important to note that SDS does not separate the storage itself from the hardware. Instead, SDS is simply a layer of the technology stack that offers a range of services with the use of industry-standard servers instead of proprietary hardware. In simple terms, SDS tends to subtract things that control storage requests, but not what is actually stored. It is a software layer between the data request and physical request, which allows people to manipulate how and where data is stored.
The benefits of software-defined storage are many, including:
- Freedom to select the hardware that shall run storage services: The SDS one selects does not have to come from the same company from where one purchases the hardware. They can use just about any commodity or x86 server to build an SDS-based storage infrastructure. This basically means that one can effectively maximize the capacity of their existing hardware, as their storage needs grow,
- It is cost efficient: Rather than scaling up, SDS is distributed and scales out. It allows people to adjust capacity and performance in an independent manner.
- Join multiple data sources to build storage infrastructure: People can join as many data sources they want to build the storage infrastructure. They may network object platforms, virtual servers, cloud-based resources, external disk systems, as well as disk or flash resources to create a unified storage volume.
In the past, Anand Jayapalan had spoken about how SDS can adjust automatically based on the capacity needs of the user, which can be quite advantageous. As SDS does not depend on hardware, it can adjust as per data needs and performance without administrator intervention.