1.3 Understanding NSS

NSS is a 64-bit file system that can manage a virtually unlimited number of file objects. On each physical storage device, NSS abstracts physical partitions to make them appear as contiguous free space. With NSS you can create any number of virtual storage resources, called pools. Beginning with OES 2015, NSS supports two types of pools: NSS32 and NSS64. NSS32 pools use 32-bit block addressing and supports pool size upto 8 TB. On the other hand, NSS64 pools use 64-bit block addressing and supports pool size upto 8 EB (exabyte). All pools prior to OES 2015 use 32-bit block addressing and they are of type NSS32. A pool can contain any number of volumes. If the pool spans devices by using space from them for the pool, the volumes automatically span the devices. A single NSS32-bit volume can contain up to 8 trillion files and grow upto 8 TB in size; NSS64-bit volume can grow up to 8 EB in size. The volume sizes depend on the size of the pool and space consumed by other volumes in the pool.

1.3.1 Storage Pools

You can use NSS pools and volumes to store applications, files, and databases. You create storage pools by assigning areas of free space obtained from one or more of a server’s storage devices. You can create one or more NSS volumes from the space in the storage pool. The following figure shows how NSS uses free space on multiple devices to create a storage pool.

Figure 1-1 NSS Pool Architecture

1.3.2 NSS Volumes

The logical volumes you create on NSS storage pools are called NSS volumes. You can specify a maximum storage quota for the volume, or allow the volume to grow dynamically to the size of its pool. You can add any number of volumes to a storage pool.

Because there is no limit to the number of volumes you can create, it is possible that the combined administrative size of all the volumes taken together is larger than the physical size of the storage pool itself. NSS refers to this process as “overbooking.” If you overbook space in the pool, the individual administrative size of a volume cannot exceed the size of the storage pool.

NSS allocates space from the pools to the volumes only as needed. Typically, user consumption of a volume’s available space ebbs and flows; it is unlikely that users concurrently consume volumes at 100% of their available capacity. Each volume consumes the space it needs as it needs it. By overbooking space, NSS provides a flexible and cost effective way to accommodate expanding storage needs.

For example, suppose you have a 300 GB storage pool. From this storage pool, you create two NSS volumes of 200 GB. You can define two 200 GB NSS volumes out of a storage pool of only 300 GB, if you feel comfortable that the NSS volumes will not both exceed 75 percent capacity (150 GB) and therefore, exceed the overall size of the storage pool. If one NSS volume does reach 150 GB, but the other volume stays under 100 GB, your overbooking plan worked.

Suppose you expect one of the volumes might exceed its share of the pool. You can overbook the pool by creating one NSS volume with a quota of 200 GB and a second NSS volume that can grow to the size of the pool. As the combined size nears the size of the pool, you can extend the size of the pool by adding another segment to it, allowing more space for the larger, expanding volume. Your overbooking plan works because you built in the opportunity to expand the pool and volume, according to your business needs.

1.3.3 Cache Devices

Cache Devices (cachedev) are special block devices that are designed for hosting cache for the NSS storage pools. You can group the free storage space available in the fast storage devices to form the cache device. Adding partitions or more devices will allow you to expand the cache device even further.

For additional storage operations like building a pool, you can utilize cache device like a regular block device. But in this instance, you cannot create a cache device.

To configure and manage the cache devices, you must use the NLVM command-line utility. For more information, see Create Cachedev, Expand Cachedev, Delete Cachedev, and Rename Cachedev in OES 23.4: NLVM Reference.

NOTE:This feature is currently available only on local pools and devices with 512 bytes and 4Kn sector size.

1.3.4 Cache Enabled Pools

The NSS storage pools can have cache on a specific cache device in order to improve the IO performance. Three components constitute the Cached Enabled Pool: the cache, cache metadata, and data from the NSS pool. Cache and metadata are not accounted as part of the pool's space and hence they will not increase the available NSS pool's space.

In the following figure, /dev/sdh and /dev/sdi are fast storage devices. You can create logical cache devices, CACHEDEV1, CACHEDEV2, and CACHEDEV3 by assigning areas of free space obtained from one or more of fast storage devices. Using these logical cache devices, the cache and metadata <C1 M1>, <C2 M2>, and <C3 M3> are allocated for the cache-enabled pools Pool1, Pool2, and Pool3 respectively. Any of the available devices can provide space for cachedev. This improves the performance of the cache enabled pools.

Figure 1-2 NSS Cache Enabled Pools Architecture

You can use NLVM command-line utility and perform the following operations:

  • Associate a cache with an existing pool.

  • Disable the associated cache in an existing pool.

  • Perform pending modifications to the pool's metadata and cached file data written to the underlying storage pool.

For more information, see Pool Cacheenable, Pool Cachedisable, and Pool Cachesync in OES 23.4: NLVM Reference.