Novell Storage Services (NSS): Pushing IntranetWare to New Heights
Articles and Tips: article
01 Sep 1997
Imagine a storage system that can hold hundreds of millions of files and over half a billion directory entries in a single volume, load such a volume (or larger ones) in as little as 32 MB of memory, and bring such a volume back online and ready to use in a few seconds upon restart, even after a crash! It's coming soon in the form of NSS, the future of IntranetWare data storage.
IntranetWare has long been considered the most powerful high-performance server operating system available. IntranetWare provides powerful, reliable processing for efficient file, print, directory, security, and management services. IntranetWare integrates all major computing platforms, powers great applications, makes the most of Web technology, and significantly reduces the cost of network management and administration.
Even with all the advantages provided by IntranetWare, network administrators and users need more. They need to push beyond the limitations still imposed by the traditional IntranetWare storage system. They need the ability to store larger files and to store more of them in a single directory. They need to mount more volumes on a single server. They want faster volume mount times and quicker error recovery. While gaining these new capabilities, users and administrators still need all the IntranetWare advantages they've come to depend on.
Novell Storage Services (NSS) is Novell's response to these needs. NSS gives you the ability to store large objects, and large numbers of objects, without degrading system performance. NSS gives you rapid access to your data. Volumes can be mounted and repaired in seconds rather than hours, regardless of their size. Best of all, NSS gives you all these new capabilities while still maintaining full backward compatibility.
What Is Novell Storage Services?
Novell Storage Services is a powerful new high-performance storage and access system that greatly expands the performance of Novell's current IntranetWare products while maintaining backward compatibility with traditional file storage systems. NSS has three basic goals:
Backward compatibility with the IntranetWare 4.11 file system
In order to support Novell's extensive installed customer base, the NSS project is committed to backward compatibility with the currently deployed file system. NetWare Loadable Module (NLM) and NetWare Core Protocol (NCP)interfaces are both emulated, and NSS-powered servers can be made to look just like Novell's current file system. This allows Novell to protect its customers'investments while still realizing the significant benefits deliveredby NSS.
Eliminate NetWare 4.11 file system limitations
Some customers have been hampered by several limitations imposed by the NetWare 4.11 design and implementation. In particular,they have run into sizing limitations which in turn affect availability and suitability for larger deployments. The use of 32-bit interfaces limits users to files no greater than 2 gigabytes. A maximum of 16 million directory entries are available per volumeand up to 64 volumes per server. The use of File Allocation Table(FAT)-oriented approaches to file system organization requires memory roughly linear to the number/size of files. It also takes time roughly linear to the volume size to mount a NetWare 4.11 volume after a clean dismount. After a crash, it may take hours before very large NetWare 4.11 volumes are scanned and repaired with VREPAIR, during which time they are unavailable to users.
NSS is completely new technology, specifically designed to provide the scalability Novell's customers need to move them through the next generation of storage services and applications. Its internal and external interfacesare all 64 bits wide, allowing not only huge numbers of entities, but entities that are individually very large as well.
Wide interfaces aren't enough, though. The FAT-based organization has been eliminated and replaced by high-performance, compact, and memory-efficient structures and algorithms. NSS completely decouples the amount of memory needed by a server from the amount of disk storage it maintains.
The amount of time needed to mount a volume under NSS is also decoupled from its size. After a clean shutdown, a volume mounts in a fraction of a second regardless of its size. After a crash, full integrity is restored between 15 seconds and a minute regardless of the volume'ssize, whether it contains 100 megabytes or 100 terabytes of data.
Support completely new generations of storage environments
It's not just vanilla file systems any more, and NSS is targeted to deliver more than just vanilla files. At its core is a modular, object-oriented storage engine. For backward compatibility, NSS comes with a native set of objects including standard versions of files and directories. In the future, objects new to NetWare 4.11 (but well-known and well-loved elsewhere) suchas symbolic links and hard links will be plugged in.
NSS volume objects are more powerful and flexible than the NetWare 4.11 versions. NSS volumes support transaction-based journaling in the underlying storage, delivering the rapid mount times described earlier. In a future release, NSS volumes will be organized in a hierarchical tree much the same as Novell DirectoryServices (NDS) partitions. This core NSS object engine provides a common solution to the scalability, availability, performance, and robustness requirements for the various ways clients wishto access data.
Above the NSS object engine is the Semantic Agent(SA) layer. Its specific mission is to provide these different "flavors" of client access to system storage. An example of a pluggable resident in this layer is the NetWare 4.x (IntranetWare) FileSystem SA. The job of this Semantic Agent is to implement the NLM and NCP interfaces that define the NetWare 4.11 file system. Another possible future Semantic Agent above the common storage engine might be an HTTP service, implementing the six Web access methods (for example, GET, PUT, POST, and so on) over TCP/IP.All NSS Semantic Agents exist side by side in this layer, running simultaneously.
Novell Storage System Benefits
You won't have to give up any system performance to enjoy all the benefits provided by NSS. NSS benefits include:
Quick access to data-- mounting and repairing volumes in seconds, independent of their size
Improved resource use-- improving memory and disk space usage
Handles large objects and large numbers of objects -- storing objects as large as hundreds of terabytes and a virtually unlimited number of directory entries
Superior return on investment-- providing a faster, easier to manage system
Quick Access to Data. The electrical power to the office was only off for five minutes, but that was enough to bring your server down and corrupt a large volume. You've explained to several impatient users about the time it takes to re-mount all the server volumes, but how are you going to keep tempers in check while vrepair sorts through the damaged volume? You're already 45 minutes into the process, and your phone just won't stop ringing.
NSS changes wasted time spent waiting for volumes to mount into productive work time. Mounting and repairing an NSS volume takes minutes rather than hours to complete.
In an IntranetWare 4.11 environment, the amount of time required to mount a volume is generally related to the number of files in the volume-more files usually require more time. A lengthy wait to mount a large volume isn't uncommon. Compare that wait to an NSS system than can mount any size volume in seconds.
NSS further reduces wasted time when recovering data from a file system after a crash. You'll no longer have to face the possibility of waiting for hours while the VREPAIR utility repairs a volume. Instead of laboriously scanning an entire volume for corruptions, the NSS advanced journaling algorithms can quickly replay uncommitted changes and get a volume back online in under a minute.
Improved Resource Use. Imagine a smaller-sized company with a stingy hardware budget and an enormous new Web site to bring on-line. Imagine a server with a limited amount of RAM available and no hope of adding more. It isn't hard to imagine a situation where the volume containing the Web site files won't load because the server doesn't have enough memory to cache the entire directory entry table.
NSS solves this and similar memory management problems by running on virtually any amount of memory you have available. NSS mounts any size volume with as little as one megabyte of memory. NSS lets systems with limited resources perform better, and larger systems provide even higher performance.
NSS provides more than just improved memory management. Sophisticated data management techniques let NSS make more efficient use of available disk space as well. NSS lets multiple name spaces share storage space rather than using additional storage for each version of an object's name. NSS also stores objects in balanced trees (B-trees) for faster storage access.
Handles Large Objects and Large Numbers of Objects. Your patient accounts database is quickly approaching two gigabytes in size. You've got to find a way to store two million image files in the Radiology volume. The servers in the hospital network already hold the maximum number of volumes, and you need to add two more. You need an NSS storage system that can be easily scaled to meet your needs.
NSS uses 64-bit interfaces everywhere in the storage engine, and uses advanced algorithms to manage the storage system. This technology lets you easily store single files as large as several hundred terabytes and provides a virtually unlimited number of directory entries, all without degrading the system performance.
Return On Investment. It all looked good on paper. True, switching to a new network operating system required upgrading all the server hardware, but those figures the sales people showed off made you assume those costs could be recovered in a matter of months. Now you've even managed to outgrow the new system. You're paying the network administrator to spend more and more time just to keep the system operating. When you total up the real costs, that new system doesn't look as good any more.
There are no hidden costs associated with upgrading to an NSS storage system. There is no new hardware required and no need to purchase additional memory. Rapid volume mount and repair times mean NSS will provide savings in increased administrator and user productivity. Best of all, your needs cannot outgrow the system. The modular structure of NSS lets you add needed new functionality as technology and your needs change.
Structure of Novell Storage Services
This section describes the internal NSS structure and explains how the benefits provided by NSS are achieved. If you're not interested in the technical details, skip to the "Future Novell Storage Services Directions" section to learn how an investment in NSS technology will satisfy your file system and storage service needs well into the future.
Figure 1 shows the four basic sections of the NSS system. From the bottom up, they are the Media Access Layer(MAL), the Object Engine, the Common Layer Interface, and the Semantic Agents.
Media Access Layer
The Media Access Layer (MAL) provides connection to a wide range of storage devices such as standard hard drives, CD-ROMs, the new Digital Versatile Disk (DVD) media, virtual disks implemented as networked clusters, and even non-persistent media such as RAM disks. The MAL lets you view the storage capabilities of your server as simply a quantity of storage blocks and frees administrators from the details of enabling various storage devices. The MAL's modular design allows new devices and technologies to be easily added as needed. The MAL also provides the interfaces used by the Object Engine to interact with the available storage devices.
Figure 1: The structure of Novell Storage Services.
The Object Engine
The Object Engine layer is the NSS object storage engine. The NSS Object Engine differs from traditional object engines by providing significantly higher levels of efficiency. The NSS Object Engine uses sophisticated and highly efficient mechanisms to manage the objects it stores, achieving high levels of performance, scalability, robustness and modularity.
Performance. The Object Engine stores objects on disk in balanced trees, sometimes called B-trees, to improve system performance. Using the compact B-tree structures guarantees the system can retrieve an object from the disk in no more than four I/O cycles. B-trees also improve memory management by letting the system locate an object anywhere in storage without loading the entire directory entry table into memory.
The ability to share name spaces also improves disk space usage. Instead of storing a name for each name space in a single stored object, such as one name for DOS and another for NFS, the name spaces in an object share a common name, if no naming conflicts exist.
Scalability. The Object Engine uses 64-bit interfaces to let you create far more objects and individual objects far larger than was possible in the traditional IntranetWare file system.
Robustness. To enable rapid volume mounts after a crash, the Object Engine maintains a journal that records all transactions written to disk and all transactions waiting to be written. In the event of a system crash, the traditional IntranetWare recovery procedure would include using the VREPAIR utility to laboriously check and repair inconsistencies in the Directory entry tables. Instead, the Object Engine can locate an error on a disk by referencing the transaction journal, noting the incomplete transaction, and correcting the error by either re-processing the incomplete transaction or by backing it out-all without searching the volume.
Modularity. The Object Engine's modularity lets you define new objects and plug them into the storage system whenever needed. New storage technologies, such as DVD, can be transparently plugged into the engine at any time without affecting the rest of the system. This modularity lets you make use of hard links, symbolic links and authorization systems not previously available through the traditional IntranetWare file system.
Common Layer Interface
This layer defines the interfaces the Semantic Agents use to access the underlying Object Engine. These services fall into three basic categories: naming services, object services, and management services.
Naming Services. These services include basic object naming and lookup operations as well as name space management services.
Object Services. These services provide the standard and direct input and output to and from objects, as well as other operations on objects themselves, such as create, delete and truncate operations.
Management Services. These services cover a variety of tasks, including locking, managing volume operations, and the addition and registration of new objects.
The Semantic Agent layer contains loadable software modules that define the client-specific interfaces available to stored objects. For example, the IntranetWare File System Semantic Agent interprets requests received from IntranetWare 4.x clients and passes the requests to the Common Layer Interface and onward to the Object Engine for execution. Another Semantic Agent implements an HTTP interface, allowing Web browsers to access data also stored by the Object Engine. Additional Semantic Agents will be developed to add support for other popular systems, such as NFS and a Web Proxy Cache. This modular approach means you no longer need separate storage solutions for different storage systems. New Semantic Agents can be created and added to the system at any time, without impacting any Semantic Agent currently loaded.
Future Novell Storage Services Directions
Advances in technology have a way of revealing new limitations in computer hardware and software. What was state of the art today could be the source of your biggest aggravation next year. However, the modular design of NSS will be helping administrators, developers and users solve problems far into the future.
Future Administrator Benefits
The modular structure of NSS means administrators will be able to load new Semantic Agents to add storage capabilities for any object storage need, including HTML, IntranetWare, NFS and Java Virtual Machine (JVM). NSS will provide a single storage solution for all common object types, eliminating the need to implement new solutions as technology and needs change. The ability to add new Semantic Agents to NSS systems means you'll be able to store virtually anything in NSS, both now and in ten years from now.
Modularity will also simplify and reduce the cost of setting up and administering server systems. For example, to set up an NFS server, all you'll need is the NSS core and NFS Semantic Agent. To set up a web server, you can easily add an HTTP Semantic Agent and the supporting Web server components to the NSS core system. Administrators will also benefit from the availability of NSS services on many different platforms, including NT and UNIX.
Future Developer Benefits
Application developers will also benefit from the modular design of NSS. Novell is committed to open interfaces and will publish a well defined NSS application program interface to provide an open interface for developing new Semantic Agents and interfaces to new storage devices. Since NSS is language and platform independent, developers will be able to write in any format they choose, including Java programs and new NLMs.
Future User Benefits
NSS will continue to provide users with enhanced performance in the future. Users can expect to see significantly faster responses from all IP-based services, including responses from NSS-based Web servers, without losing the ability to run over IPX. Improvements in data access will continue, with the ability to store and run Java applications quickly. All 64-bit applications will become available, and integration of data replication technology and client-side caching will provide even more improvements in data availability and performance.
Novell Storage Services provides a way to push IntranetWare to new heights. NSS provides:
Quick access to data by reducing volume mount times to under a second, and reducing volume repair times to under a minute
Improved memory utilization and more efficient disk space management
The ability to store files much larger than even two gigabytes, and a virtually unlimited number of available directory entries
A superior return on investment
For More Information
Novell Storage Services (NSS) is currently in Alpha stage, and is scheduled to be delivered as part of the next IntranetWare release.
The latest NSS Alpha evaluation release(at this writing, v1.40 Build 523) provides the following features at this point in the NSS product roadmap:
Object-oriented base storage engine The core object engine is in place.
(Internal) 64-bit interfaces Although these interfaces are currently in operation, NetWare 4.11 is unable to expose them to clients through its current interfaces.
Huge numbers of files A virtually unlimited number of files may be created per NSS volume.
Huge individual files Files up to 8 terabytes may be created per volume(and even larger in future revisions).
Huge number of volumes per server Thousands of volumes may be created and maintained.
Super high-speed volume mounts and dismounts After a clean shutdown, NSS volumes mount in less than one second regardless of size. After a crash, NSS volumes mount in less than a minute regardless of size.
Small memory footprint An NSS-powered server requires a minimum of 32 MB of memory to operate comfortably. Given that minimum amountof memory, NSS is capable of mounting any size volume, even one with hundreds of millions of files.
Shared storage for name spaces Whenever possible, NSS volumes share storage between multiple name spaces. By default, NSS volumes automatically load the following three name spaces for its volumes: DOS, LONG, and UNIX.
Unicode storage All system strings are stored internally in 16-bit Unicode.
Support for existing NLMs, NCPs, Clients Many standard NLMs have run successfully against this evaluation code without modification. They include MONITOR,SERVMAN, Oracle, backup/restore Target Service Agents (TSAs) including SBACKUP and Cheyenne, the Java Virtual Machine (JVM), various Java apps on this JVM, and the Novell Web Server.The most common NCPs are currently being emulated by this Alpha release.Some of the clients now running successfully include IntranetWare Client32, VLM, Windows NT, Windows 95, Macintosh, and NetWare UNIX Client (NUC).
NetWare 4.11 Semantic Agent (SA) This Alpha supports a Semantic Agent that emulates the current IntranetWare file system product, although some limitations exist (see "NSSEvaluation Code Warnings").
Support for unlimited trustees The original NSS Alpha release only allowed fourtrustees per object.
Better internal system resource allocation Work has been done to allocate system resources more dynamically. The result is reduced system deadlocks.
Robust Transactioning The transactioning system is now tightly integrated with the storage system, making it more reliable.
The NSS Engineering group has been running on an NSS-powered server for the last two months for all their development work! Their entire development environment is hosted on NSS volumes. This has served to help locate bugs quickly and repair them as we move forward.
NSS Alpha Evaluation Code Warnings
Here are some items you should be aware of when using the NSS Alpha evaluation code.
Most importantly, this is Alpha code and is not yet intended to host any permanent user data! Novell does not in any way warrant data placed onto NSS volumes. Future releases of NSS will changeon-disk layouts and formats, so there is no guarantee of compatibility between this code and future Alphas, Betas, and the final product.
The disk format used by NSS is different than that used by NetWare 4.11. Do not create NSS volumes in a NetWare partition! Data in the NetWare 4.11 partition will be destroyed.
There is a fixed-size memory cache of 8MB created by NSS at load time. This memory cache is not shared; the default value may be changed in the NSS command line when the NLM is being loaded.
This Alpha evaluation code is not intended as a base for computation of performance metrics. The code is completely untuned, and several features have not yet been added (described in the next section). Thus, any performance numbers computed for this Alpha release will not serve as a metric for future product performance.
Use of the "/ResetVolumes" command-line switch will result in the complete re-initialization of all NSS volumes on that machine. Use this switch with care!
Any NSS volume re-initializations will have absolutelyno impact on NetWare4.11 volumes on other partitions!
Although a number of NLMs have been tested against this Alpha release, not all Novell or third-party NLMs willwork properly.
Future NSS Additions
Several features and capabilities must still be added to this evaluation Alpha. This section lists some of the coming features:
Extended attributes support
Multiple data stream support
Macintosh name space
SYS volume support
Byte-range, Logical, and File locking support
Event System to replace FS hooks
More robust error handling
Where to Get Updates and More Information
New information and code drops will be made available on a regular basis via the Internet as well as through formal Alpha and Beta programs. Check the following URL on a regular basis for new documentation, news, and binary releases:
The NSS Development Team encourages and welcomes any and all comments, suggestions and feedback via their Internet mailing address:
Your input can (and does) make a difference as far as what NSS looks like when it appears as a product. If something is important to you or you have strong opinions about certain features (either planned or missing) that are important to your needs, please let us know.
* Originally published in Novell AppNotes
The origin of this information may be internal or external to Novell. While Novell makes all reasonable efforts to verify this information, Novell does not make explicit or implied claims to its validity.