In storage technology, a storage server is a processing system that provides one or more storage clients with access (e.g., read and write access) to a mass storage facility over a network. Such a system is called a network storage system. In other words, a storage server is adapted to store and retrieve data on behalf of one or more client processing systems (“clients” or “hosts”) in response to requests received from the hosts. At least some storage servers can provide clients with both file-level access and block-level access to data stored in storage devices (e.g., disks, solid-state drives, etc.). For convenience, a storage server will be described herein, for the most part, in terms of storage devices that provide file-level access, although the description herein also has application to storage systems that provide block-level access, as will be apparent to those of ordinary skill in the art. Examples of such storage servers include a file server or another type of computing device that provides storage services using a file system to respond to file-oriented data access requests (“filer”). A storage server includes a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the storage devices. A “file system” as discussed herein is a structured set of logical containers of data, which may be, but are not necessarily, in the form of files, directories, logical units and/or other type(s) of logical containers. Each file stored on a disk or other type of storage device may be implemented as a set of data structures, e.g., disk blocks, that are configured to store information.
A disk-based storage for a storage server typically has one or more storage volumes. A “volume” is a logical data set which is an abstraction of physical storage, combining one or more physical mass storage devices (e.g., disks, solid-state drives, etc.) or parts thereof into a single logical storage object, and which is managed as a single administrative unit, e.g., a single file system. A volume may be defined from a larger group of available storage, e.g., an aggregate, and may be logically broken down into logical data sets (storage objects) called “plexes”, which may contain one or more RAID groups. An aggregate is a logical aggregation of physical storage; e.g., a logical container for a pool of storage, combining one or more physical mass storage devices or parts thereof into a single logical storage object, which contains or provides storage for one or more other logical data sets at a higher level of abstraction (e.g., volumes).
The file systems of the volumes maintained by a storage server can form a single shared namespace. A “namespace” as discussed herein is a logical grouping of unique identifiers of a set of logical containers of data, e.g., volumes. A storage server can include a namespace table for storing metadata (e.g. file name, directory information and file attributes) for the files stored within the files systems under the single shared namespace. A namespace table provides a single access point (and typically the only way to access) to the critical metadata for all files stored in the storage server. If the namespace table fails or becomes corrupted for any reason, the storage server can no longer provide any data service for the data files that it maintains.