1.6 Pools

Before you create any NSS logical volumes, you must first create an NSS storage pool on which to place the volumes. The commands in Pool create, delete, and manipulate NSS storage pools. For information about freezing and thawing pools and why this functionality is useful, see Freeze and Thaw Functionality.

Prior to NetWare 6.0, all volumes were directly associated with physical storage. With NetWare 6.0 and later, the physical storage is separated from the volumes, and NSS storage pools now exist.

An NSS storage pool is a group of one or more NSS partitions, while an NSS volume is a logical entity that contains user data and is assigned to reside on an NSS pool. The location of an NSS logical volume is not physically tied to a specific NSS storage pool, and a single NSS storage pool can contain multiple NSS logical volumes.

How you design an NSS logical volume allows it to be migrated from one pool to another and allows it to be replicated across multiple NSS storage pools on different servers.

1.6.1 Freeze and Thaw Functionality

The freeze and thaw functions (see poolFreeze, poolFreezeStatus, and poolThaw) help you ensure all the data in your pool is consistent. For example, a snapshot NLM can freeze and thaw a pool to ensure that snapshots contain consistent data for snapshot and server applications.

You must register your application to receive the two following events, which inform your application when to freeze and when to thaw:

These events are not consumable. You cannot call file system functions during the event, and you must return quickly (in less than half a second) so that other applications can be notified. Most of the work to ensure that data is synchronized and consistent is performed on an application thread and not during an event.

NSS does not prevent multiple freezes from occurring at the same time on a specific server. However, NSS prevents multiple freezes on the same pool at the same time.

NSS.PoolFreeze

The NSS.PoolFreeze event notifies your application that another application wants to synchronize all the data on a specific pool. If the freeze cannot happen quickly, your event handler must start up a thread to finish the work.

Your application must then synchronize all its data on all volumes in the specified pool. This data must remain consistent until your application receives the NSS.PoolThaw event.

To receive a list of all volumes in a pool, call getPoolInfo. To receive a list of pools on a specified server, call listPools. To retrieve the pool that a specified volume is in, call getVolumeInfo.

NSS.PoolThaw

The NSS.PoolThaw event notifies your application that you can thaw your data on the specified pool. If the thaw cannot happen quickly, your event handler must start up a thread to finish the work.

Once your application returns from handling the NSS.PoolThaw event, you can receive another NSS.PoolFreeze event on the same pool.