Friday, February 12, 2016

Unikernels, Docker, and Why You Should Care

Docker's recent acquisition of Unikernel Systems has sent pulses racing in the microservice world. At the same time, many people have no clue what to make of it, so here's a quick explanation of why this move is a good thing.
Although you may not be involved in building or maintaining microservice-based software, you certainly use it. Many popular Web sites and services are powered by microservices, such as Netflix, eBay and PayPal. Microservice architectures lend themselves to cloud computing and "scale on demand", so you're sure to see more of it in the future.
Better tools for microservices is good news for developers, but it has a benefit for users too. When developers are better supported, they make better software. Ultimately that means more features and fewer bugs for everyone else. Of course, that's a rather lazy argument. So here's a more detailed description of Docker and unikernels.
Docker is a tool that allows developers to wrap their software in a container that provides a completely predictable runtime environment.
To appreciate containers fully, it's necessary to understand virtual machines. A virtual machine is pretty much what it sounds like: a non-actual machine--a simulation, if you will. In other words, it acts like a single computer complete with hardware, a filesystem, an operating system, services and application software. Because it's simulated, you can run several of them on the same machine.
Why would you do such a thing? There are a few reasons why it's a good idea.
The first reason is to run software that is built for a different operating system. For instance, if you are developing an Android app on your Ubuntu laptop, you can use a virtual machine to test that the app is working properly. Or, if you can't get your Windows programs to run with Wine, you can run Windows in VirtualBox. In these examples, VMs spare you the pain of switching operating systems or devices.
VMs have become essential in the high-volume world of enterprise computing. Before VMs became popular, physical servers often would run a single application or service, which was a really inefficient way of using physical resources. Most of the time, only a small percentage of the box's memory, CPU and bandwidth were used. Scaling up meant buying a new box--and that's expensive.
VMs meant that multiple servers could run on the same box at the same time. This ensured that the expensive physical resources were put to use.
VMs are also a solution to a problem that has plagued developers for years: the so-called "it works on my machine" problem that occurs when the development environment is different from the production environment. This happens very often. It shouldn't, but it does. It's normal to find different versions of software running on different machines. Programs can be very sensitive to their running environment, especially when it comes to their dependencies. A small difference in a library or package can break code that works on the developers machine.
Of course, employers and clients aren't impressed with the "it works on my laptop" argument. They want it to work on their machines too.
If the development machine and the production machine use identical VMs, the code should run perfectly in both environments. Using the abstraction of a virtual machine, you can exercise a great deal of control over your runtime environment.
Although VMs solve a lot of problems, they aren't without some shortcomings of their own. For one thing, there's a lot of duplication.
Imagine you have two CentOS VMs running together on a server. Both of them contain complete CentOS installations, from the kernel through the complete suite of GNU apps and utilities, standard services, language runtimes, software packages and scripts. The only difference between the VMs is the specific application code, its data files and its dependencies.
Containers, such as Docker, offer a more lightweight alternative to full-blown VMs. In many ways, they are very similar to virtual machines. They provide a mostly self-contained environment for running code. The big difference is that they reduce duplication by sharing. To start with, they share the host environment's Linux kernel. They also can share the rest of the operating system.
In fact, they can share everything except for the application code and data. For instance, I could run two WordPress blogs on the same physical machine using containers. Both containers could be set up to share everything except for the template files, media uploads and database.
With some sophisticated filesystem tricks, it's possible for each container to "think" that it has a dedicated filesystem. It's a little complex to describe in detail here, but trust me when I tell you that it's wicked cool.
Containers are much lighter and have lower overhead compared to complete VMs. Docker makes it relatively easy to work with these containers, so developers and operations can work with identical code. And, containers lend themselves to cloud computing too.
So what about microservices and unikernels?
Microservices are a new idea--or an old idea, depending on your perspective.
The concept is that instead of building a big "monolithic" application, you decompose your app into multiple services that talk to each other through a messaging system--a well-defined interface. Each microservice is designed with a single responsibility. It's focused on doing a single simple task well.
If that sounds familiar to you as an experienced Linux user, it should. It's an extension of some of the main tenets of the UNIX Philosophy. Programs should focus on doing one thing and doing it well, and software should be composed of simple parts that are connected by well-defined interfaces.
Microservices typically run in their own container. They usually communicate through TCP and the host environment (or possibly across a network).
The advantage of building software using microservices is that the code is very loosely coupled. If you need to fix a bug or add a feature, you need to make only changes in a few places. With monolithic apps, you probably would need to change several pieces of code.
What's more, with a microservice architecture, you can scale up specific microservices that are feeling strain. You don't have to replicate the entire application.
Using containers to develop and deploy a microservice architecture supports the goal of scalability, but it also introduces some drawbacks.
For one thing, each container consumes more resources than it ever will need. Each one is essentially a complete GNU Linux system, but each microservice uses only a few features of the underlying operating system. Each running service consumes memory and CPU cycles, and many of them are completely unnecessary.
Let's consider the secure shell (SSH) service. This may be useful for microservices that administrators will interface with directly, but it's expensive baggage for microservices that expose a simple TCP interface. There are many features that these microservices don't need.
Efficiency isn't the only concern here. When containers share the same Linux kernel, that opens the door to a set of security exploits. Malicious code that exploits a kernel weakness could potentially affect other containers running on the same machine.
Linux is a "kitchen sink" system--it includes everything needed for most multi-user environments. It has drivers for the most esoteric hardware combinations known to man.
But in the world of microservices, that level of support is strictly overkill. There's no need for a complete collection of services, and the host hypervisor will expose a minimal set of virtual devices, removing the need for an extensive collection of device drivers. Even with clever container tricks, such as sharing files and code between containers, there is still a lot of wastage.
Unikernels are a lighter alternative that is well suited to microservices. A unikernel is a self-contained environment that contains only the low-level features that a microservice needs to function. And, that includes kernel features.
This is possible because the environment uses a "library operating system". In other words, every kernel feature is implemented in a low-level library. When the microservice code is compiled, it is packed together with the features it needs, and general features the microservice doesn't use are stripped away.
The resulting bundle is much, much smaller than a dedicated VM or container. Instead of bundling up Gigabytes of generic code and features, a unikernel can ship a complete microservice in a few hundred kilobytes. That means they are very fast to boot and run, and more of them can run at the same time on the same physical box.
Unikernels also are naturally more secure than containers or VMs. If attackers are able to gain access to a container or VM, they have an entire Linux installation to exploit. A unikernel, on the other hand, has only a few features to exploit, and this seriously restricts the havoc unauthorized users can wreak.
Unikernels are great, but it has been hard for developers to work with them in the past. Docker is a tool that makes it easy to containerize applications and microservices.
Docker's recent acquisition of Unikernel Systems means it will be extending support for unikernels, making it easier to use them in real development and production environments. Considering the wide range of benefits that unikernels expose to modern architectures, that's exciting news.

Thursday, February 11, 2016

CISCO ASA Firewall Site-to-Site VPN configuration

CISCO ASA Firewall Site-to-Site VPN configure:

1. Commandline Based Configure
Cisco ASA Site-to-Site VPN Configuration (Command Line): Cisco ASA Training 101 

2. ASDM GUI Based Configure 

3. Commadline via Demo on GNS3 simulation (Keith Barker)

MendelScan v1.2.1

Free open source tool: MendelScan 
from The Genome Institute at Washington University School of Medicine

Documentation


MendelScan is a command-line program with multiple subcommands (e.g. score, rhro, and sibd). Each subcommand has a unique set of inputs and outputs. For the list of available subcommands, enter:
java -jar MendelScan.jar --help

Available Subcommands


These subcommands are currently supported:
java -jar MendelScan.jar score # Prioritize a VCF
java -jar MendelScan.jar rhro  # Perform RHRO analysis
java -jar MendelScan.jar sibd  # Perform SIBD analysis
For detailed usage information, enter the subcommand followed by -h or –help, e.g.:
java -jar MendelScan.jar score -h
For those familiar with Java, the auto-generated Javadoc documentation may be useful as well.

score: Variant Scoring and Prioritization

The score command of MendelScan takes 4 inputs:
  1. A pedigree file in [PED format][PED] that indicates the name, gender, and affectation status of the samples in the VCF. Samples in the VCF but not in the PED file will be treated as affected females.
  2. A VCF file that has been annotated with dbSNP information (a task that can be completed with the current dbSNP VCF file and the [joinx][] utility).
  3. Variant annotation information in Variant Effect Predictor (VEP) format, ideally with canonical, hgnc, Polyphen, SIFT, and Condel options.
  4. Gene expression for the tissue(s) of interest. This should be a one-column text file with HUGO symbols ordered according to their expression level (highest to lowest). This is optional but highly recommended; many gene expression datasets are freely available.
MendelScan calculates four individual scores (segregation, population, annotation, and expression) for each variant. Each score is a value between 0 and 1 reflecting the likelihood that the variant could be disease-causing. The default settings will prioritize novel/rare protein-altering variants in highly expressed genes that segregate in autsomal-dominant fashion. Many of the scoring parameters can be adjusted to suit different kinds of studies. An overall score, taken as the product of the four scores, reflects the relative priority (higher = more likely to cause disease) of variants based on these criteria.
The output file contains each variant along with the overall and individual scores, as well as annotation, population, expression, and segregation data that were used to compute them. A VCF output option is also available; it places an similar but abbreviated information in the INFO field.

rhro: Rare Heterozygote Rule Out

The rhro subcommand of MendelScan takes three inputs:
  1. A pedigree file in [PED format][PED] that indicates the name, gender, and affectation status of the samples in the VCF. Samples in the VCF but not in the PED file will be treated as affected females.
  2. A VCF file that has been annotated with dbSNP information (a task that can be completed with the current dbSNP VCF file and the [joinx][] utility).
  3. A BED file of chromosome centromere coordinates (optional but recommended).
The RHRO method identifies candidate regions consistent with autosomal dominant inheritance based on the idea that a disease-causing haplotype will manifest regions of rare heterozygous variants shared by all affecteds, and an absence of homozygous differences between affected pairs (which would indicate that a pair had no haplotype in common).
There are two output files from this command. One contains all informative variants (rare heterozygotes shared by affecteds, or variant positions with homozygous differences between affected pairs). The second output is a window of RHRO regions that are consistent with autosomal dominant inheritance given the inputs and assumptions described here.

sibd: Shared Identity-by-Descent

The sibd subcommand of MendelScan uses BEAGLE FastIBD results to identify regions of maximum identity-by-descent (IBD) among affected pairs. It requires the user to run BEAGLE FastIBD on the sequencing data (which requires conversion of the VCF to BEAGLE format and a “markers” file). This should be done on a per-chromosome basis. Then, the following files should be provided as inputs to MendelScan for each chromosome:
  1. A pedigree file in [PED format][PED] that indicates the name, gender, and affectation status of the samples in the VCF. Samples in the VCF but not in the PED file will be treated as affected females.
  2. The BEAGLE markers file for the chromosome at hand, which typically includes four columns: physical position (chrom:position), map position (morgans), allele1, and allele2.
  3. The BEAGLE FastIBD output file (*.fibd) for the chromosome in uncompressed format. It should have five columns: sample1, sample2, index1, index2, and score. The index fields correspond to the markers file; MendelScan will convert these to genomic coordinates and print them to the output file.
MendelScan breaks the chromosome into windows of a user-specified resolution (default: 100,000 bp) and, for each window, determines the number of affected pairs that shared an IBD segment in that window. Typically, windows in which >90% of possible affected pairs were IBD suggests a candidate haplotype. All windows are output to a second output file (if specified) or STDOUT.

Example

Included in the repository is an example data set using 1000 Genomes data. You extract that data and run the following example:
$ tar -zxvf example_data.tar.gz
$ cd example_data
$ java -jar MendelScan.jar score variants.vcf \
    --vep-file annotation.vep \
    --ped-file family.ped \
    --gene-file gene-expression.txt \
    --output-file mendelscan.tsv \
    --output-vcf mendelscan.vcf
Reading input from variants.vcf
Loading sample information from family.ped...
1 males, 2 cases, 1 controls
Loading gene expression information from gene-expression.txt...
Expression rank loaded for 38545 genes
Loading VEP from annotation.vep...
11181 variants had VEP annotation
Scoring variants under dominant disease model
3 samples in VCF (2 affected, 1 unaffected, 1 male)
11181 variants in VCF file
11181 matched with VEP annotation
12846   variants_common
337 variants_known
18  variants_mutation
97  variants_novel
1359    variants_rare
466 variants_uncommon

Wednesday, February 10, 2016

NAS Purchase Pptions: for Enterprise


Once you decide to buy NAS products for the enterprise, take a look at our listing of some of the products in the market. This section provides an in-depth look at today's leading enterprise NAS solutions.
Feature

Dell PowerVault NX Series NAS

The Dell PowerVault NX series offers file- and block-level storage and comes in three models: the NX400, NX3230 and NX3330. The series does not support SSDs or other flash-based storage. Continue Reading
Feature

EMC Isilon HD400 NAS

The Isilon HD400 is designed for deep-archive storage. It uses hard disk drives and is the only product in EMC's Isilon HD-Series. Continue Reading
Feature

EMC Isilon NL400 NAS

The Isilon NL400 NAS platform is designed for near-line storage and is currently the only product in EMC's Isilon NL-Series. The array has a maximum raw capacity of 210 TB per node and has 36 total drive slots.Continue Reading
Feature

EMC Isilon S-Series NAS

The EMC Isilon S-Series lineup of midrange NAS systems consists of the Isilon S200 and Isilon S210. The series is designed for primary storage with an emphasis on performance and supports hybrid flash configurations. Continue Reading
Feature

EMC Isilon X-Series NAS

The EMC Isilon X-Series is a lineup of NAS arrays consisting of three products: the 2U X200 and X210, and the 4U X410. All three models can be scaled into clusters of up to 144 nodes and are designed for environments that need primary storage with an emphasis on high capacity. Continue Reading
Feature

EMC's VNXe3200 midrange NAS

The EMC VNXe3200 is a midrange unified storage array that supports a hybrid flash setup. It also supports EMC's Fully Automated Storage Tiering software suite and EMC Storage Analytics. Continue Reading
Feature

Hewlett Packard Enterprise StoreEasy 1000 Storage family

The HPE StoreEasy 1000 Storage family has four basic models: the 1450, 1550, 1650 and 1850. Formerly HP StoreEasy 1000 Storage, the series is a lineup of midrange NAS appliances that run on the Microsoft Windows Storage Server 2012 R2 Standard Edition operating system. Continue Reading
Feature

Hitachi NAS 4000 series

The Hitachi NAS platform 4000 series consists of the 4040, 4060, 4080 and 4100 models. The modular layout is unlike that of most other NAS systems and can be attached to almost any Hitachi storage system.Continue Reading
Feature

NetApp's FAS2500 series NAS

The NetApp FAS2500 has three models: the FAS2554, FAS2552 and FAS2520. All models are available with one or two controllers and are designed to fill midrange storage needs. The series also supports hybrid flash. Continue Reading
Feature

Oracle's ZFS Storage Appliance

The Oracle ZFS Storage Appliance has two products: the ZS3-2 and ZS4-4. Both have a variety of setup options and a wide range of configurations. The line is designed for mid-tier NAS environments; support includes HDDs for data, and SSDs for metadata and write acceleration. Continue Reading

NAS Purchase Pptions: for SMB

This rundown of four small business NAS appliances dives into their available features to help you decide which product is right for your organization.


Storage needs differ among organizations. This feature discusses four small business NAS appliance options from leading NAS vendors and a glimpse into their feature sets.
Among the appliances discussed are:
  • Buffalo TeraStation 5800DN
  • Drobo B880fs
  • NetGear RN31600
  • Seagate NAS Pro 6-Bay

The basics

The Buffalo TeraStation 5800DN is an eight-bay NAS appliance based around the Intel Atom D2700 2.13 GHz dual-core processor. The unit has a maximum capacity of 48 TB, but is available in 24 TB, 32 TB and 48 TB configurations. A 24 TB unit sells for $2,899.99, with the 32 TB and 48 TB models priced at $4,399.99 and $5,799.99, respectively.
The Drobo B880fs is an eight-bay NAS appliance that can accommodate up to 48 TB of storage. The unit sells for $999 (drives not included).
The NetGear RN31600 is a six-bay NAS appliance based around a dual-core Intel Atom 2.1 GHz processor. The unit has a maximum native capacity of 24 TB, but the capacity can be expanded to 64 TB through an optional EDA500 expansion unit. NetGear does not sell the unit directly to consumers, but a number of websites offer the RN31600 for approximately $850 (online prices vary widely).
The Seagate NAS Pro uses a 1.7 GHz dual-core Intel processor, comes equipped with six drive bays and has capacity ranging from 6 TB to 30 TB. The unit sells for $599 with no drives installed. Seagate sells units that come equipped with drives for an additional fee. A unit that includes the maximum available 30 TB of storage is priced at $1,999.99.

SSD support

Solid-state drives (SSDs) are a popular choice for high-performance storage, so it is a good idea to verify that the NAS appliance purchased provides SSD support. Of the small business NAS appliances described in this feature, just the Drobo B880fs and NetGear RN31600 provide support for SSDs. However, neither vendor mentions SSD-based caching or tiering storage.
Drobo indicates that SSD storage is best suited to file sharing, media editing, database hosting and virtualization (consumer-grade SSDs are not recommended for hosting databases or for virtualization). The NetGear RN31600 also provides support for hard disk drives (HDDs).
According to its hardware compatibility list, the Buffalo TeraStation 5800DN does not support SSD storage. There are currently a limited number of drives listed as being compatible with this appliance. Based on its technical specifications, the Seagate NAS Pro does not officially support the use of SSDs.

Flexible storage support

Ideally, a small business NAS appliance should allow you to use whatever hard disks you want. Some vendors allow any SATA-based drive to be used, while others support only proprietary drives.
Ideally, a small business NAS appliance should allow you to use whatever hard disks you want.
The Buffalo TeraStation 5800DN supports only a very specific list of HDDs. Compatible HDD models include OP-HD1.0WR, OP-HD2.0WR, OP-HD3.0WR, OP-HD4.0WR and OP-HD6.0WR.
The Drobo B880fs is diverse with regard to media support. According to its product page, "Drives of any manufacturer, capacity, spindle speed, and/or cache can be used."
The NetGear RN31600 supports disks up to 4 TB in size.
The Seagate NAS Pro is designed to use Seagate NAS optimized drives. Although it might be possible to use non-Seagate drives in the appliance, the vendor maintains a hardware compatibility list that specifies supported drives. The Seagate drives are available in capacities up to 5 TB each, and are designed specifically for NAS use. It is worth noting that the appliance includes six SATA II channels, and therefore does not support SATA III.

Alerting mechanism

A NAS appliance should alert the storage administrator in the event of a disk failure or other problem. Ideally, an appliance should include a visible indicator and an email notification system.
The Buffalo TeraStation 5800DN displays alerts through its built-in LCD panel. It also supports the Simple Network Management Protocol (SNMP) and can be configured to provide email alerts.
The Drobo B880fs includes drive bay indicator lights, a capacity gauge and status lights. It also supports email notifications and can be managed through the Drobo Dashboard.
The NetGear RN31600 displays alerts through an LCD panel or alerts can be sent through email. The unit can be managed through SNMP and supports local logging.
The Seagate NAS Pro reports its status through a built-in LCD panel. It has a built-in alert management system and can send email notifications.

Supported protocols

Each NAS appliance is designed to work with a specific set of network protocols that dictate how the appliance can be used.
The Buffalo TeraStation 5800DN features twin Gigabit Ethernet (GbE) ports. The unit is designed to work on IP networks, but the product specification sheet makes no mention of IPv6 support. Supported file transfer protocols include CIFS/SMB, AFP, HTTP/HTTPS, FTP/SFTP and NFS. The unit can also be used as an iSCSI target and act as a DLNA, UPnP media server or iTunes server.
The Drobo B880fs features two GbE ports, but the specification sheet makes no mention of IPv6 support. Supported network protocols include CIFS/SMB and Apple AFP.
The NetGear RN31600 supports a wide range of protocols. The unit features two gigabit network ports with link aggregation support, works withIPv4 and IPv6, and supports jumbo frames. Supported transfer protocols include CIFS/SMB 3, Apple AFP 3.3, Linux NFS v4, HTTP(S), FTP, SSH, WebDAV, iSCSI and rsync. In addition, the unit can act as a DLNA-based media server, or iTunes or Plex media server. Tivo archiving is supported.
The Seagate NAS Pro supports a variety of protocols. The unit features twin gigabit network adapters and supports link aggregation. It supports IPv4 and IPv6, jumbo frames and dynamic DNS. Supported network file protocols and services include CIFS/SMB, NFS v3, AFP, HTTP(S), FTP/SFTP, SNMP, SMTPm UPnP, Bonjour, WebDAV and DFS-N. The unit also supports several media streaming protocols, including UPnP A/V media server, DLNA compatibility, iTunes (DAAP) server and MTP/PTP.

Thin provisioning

If you plan to create multiple volumes on a NAS server, thin provisioning is a handy feature to have. Thin provisioning allows volumes to be created without immediately claiming a significant amount of disk space. Instead, physical storage space is allocated to the volume only when data is written. Thin provisioning can help an organization make the most efficient use of its available storage.
The NetGear RN31600 supports thin provisioning, while the Drobo B880fs supports both thin provisioning and storage reclamation.
Based on their technical specifications, the Seagate NAS Pro and Buffalo TeraStation 5800DN do not appear to support thin provisioning.

Support for mixed drive sizes

A small business NAS appliance needs to support mixed disk sizes. If a disk fails, you may be unable to find a replacement that exactly matches the capacity of the original disks. Furthermore, hot adding larger disks is a common way to increase the capacity of a NAS appliance.
Hot adding larger disks is a common way to increase the capacity of a NAS appliance.
The Drobo B880fs includes support for mixed HDD sizes. When the unit's capacity needs to be increased, existing drives can be hot swapped for larger ones. The Seagate NAS Pro includes an HDD mix-and-match feature that can be used for auto-RAID migration or volume expansion.
The specification sheets for the Buffalo TeraStation 5800DN and NetGear RN31600 make no mention of the ability to mix-and-match drive sizes.

Flexible data protection (RAID options)

Most NAS appliances protect against data loss through the use of RAID configurations. The supported RAID levels indicate the levels of redundancy and data protection provided by the appliance.
The Buffalo TeraStation 5800DN accommodates up to eight disks and supports a variety of RAID levels, including: RAID 0, RAID 1, RAID 5, RAID 6, RAID 10, RAID 50, RAID 51, RAID 60, RAID 61 and JBOD.
The Drobo B880fs incorporates BeyondRAID, which emulates RAID 1, RAID 5 and RAID 6. BeyondRAID is designed to be far more flexible than traditional RAID, and supports the ability to change levels of protection (such as moving from single-disk redundancy to two-disk redundancy) with the click of a mouse. BeyondRAID also allows for thin provisioning, instant expansion, drive reordering and a virtual hot spare.
The NetGear RN31600 supports the X-RAID2 standard, which allows for automatic, single volume online expansion. It is also possible to expand multiple RAID groups. RAID levels supported by the appliance are RAID 0, RAID 1, RAID 5, RAID 6 and RAID 10. You can also designate one of the unit's disks as a global hot spare.
The Seagate NAS Pro supports Seagate SimplyRAID (the default configuration), JBOD, RAID 0, RAID 1, RAID 5, RAID 5 with a hot spare, RAID 6 and RAID 10.

Battery backup

Some small business NAS appliances include a battery that can help the appliance remain functional during a power failure. Some appliances do not include a built-in battery, but are uninterruptible power supply-aware and can be shut down gracefully by the UPS in the event of a power failure.

NAS Buyer's Guide: Feature considerations for Enterprise


If you're in the market for enterprise NAS, there are a number of important features you need to evaluate before making a purchase.



Enterprise-scale organizations often use SANs, but NAS still has its place. If your organization is considering an enterprise NAS purchase, here are the important features you should review first.
Form factor. It's easy to assume an enterprise-grade appliance will be rack-mounted, but some are designed to sit on a shelf. If you areconsidering a rack-mounted NAS appliance, you will need to determine how much space you are willing to sacrifice. A 4U appliance will take up more space in your rack than a 2U appliance, but will provide a higher raw storage capacity.
Media supported by the appliance. Although it is becoming less common, some vendors use proprietary connectors that force customers to purchase disks from the appliance manufacturer.
You should verify the disks supported because hardware vendor websites will sometimes offer a seemingly great deal on an appliance without disclosing that it is an older model. For example, I recently saw an ad for an enterprise NAS appliance that supported long-obsolete SATA 2 disks, butnot SATA 3.
You also need to check disk speed, maximum disk capacity and the appliance's overall capacity as some enterprise NAS appliances do not support high-capacity disks. For instance, some manufacturers support only 1 TB drives even though higher capacity drives are available. Similarly, an appliance might have a maximum overall capacity that is less than the aggregate capacity of the disks that could be installed. An appliance that has 12 drive bays and supports 1 TB disks should theoretically provide up to 12 TB of storage, but may have a maximum overall capacity of 8 TB.
Ease of increasing the appliance's capacity. Suppose you have an appliance with eight drive bays, use only four of them but now need to add few extra disks. What happens when you install those disks?
Some appliances require you to perform a full backup, delete any existing volumes, destroy the existing RAID structure, create a new RAID array using all the disks installed in the appliance, create new volumes and restore your backup. This process is tedious and tends to be extremely time-consuming.
An enterprise NAS appliance should include a feature to automatically restructure the existing RAID array when you add capacity to the appliance.
Ideally, an enterprise NAS appliance should include a feature to automatically restructure the existing RAID array when you add capacity to the appliance. You should not have to delete volumes and rebuild array sets simply because you have added extra disks to the appliance. The appliance should be smart enough to use those disks without the RAID set having to be manually reconstructed. Similarly, if you replace an existing disk with a larger capacity disk, the appliance should be able to use the new disk without you having to manually rebuild the RAID array.
Most enterprise NAS appliances support hot-swappable drives, but some appliances make it easier than others to replace a drive. For instance, an appliance may require you to mount the drive into a special caddy prior to placing the drive in the appliance. Similarly, there are appliances that require the use of special tools to install hard drives.
Support for storage tiering. Storage tiering refers to the ability of the appliance to use solid-state drives as a cache for frequently accessed data.
Ideally, the storage tiering feature should be automated. The appliance should be able to differentiate between rotational media and solid-state media, and use the solid-state media as a cache without being told to do so. Furthermore, the administrator should not have to tell the appliance which data to cache. The appliance should also recognize the most frequently accessed data and move it to the cache on an as-needed basis. As the demand for the data changes over time, the appliance should dynamically move aging data out of the cache and replace it with fresh, more frequently accessed data.
Network bandwidth. Bandwidth is the limiting factor when it comes to enterprise NAS appliance performance. As such, you should ensure your appliance contains as many network adapters as possible. It's also a good idea to verify what speeds are supported. Most enterprise  NAS appliances on the market support Gigabit Ethernet, but you may find support for 10-Gigabit Ethernet. There are also some vendors that only provide 100-Megabit Ethernet.
Hardware redundancy. This is a major consideration when it comes to enterprise NAS appliances. Some appliances on the market offer redundant cooling and power supplies. Similarly, there are appliances that let you designate hard disks and network adapters as hot spares that can dynamically take over in the event of a hardware failure. Hardware redundancy is designed to protect against a component-level failure.
Replication. Occasionally, a hardware failure may compromise the entire appliance. When this happens, you need a plan that allows you to continue to operate in spite of the failure.
One way of accomplishing this is through appliance-level replication. Some appliances will allow you to replicate all the data to a secondary appliance on an ongoing basis. Depending on the type of connectivity used in the replication process, it may even be possible to replicate data to a secondary datacenter.
Data storage features. An enterprise NAS appliance should have a deduplication engine that can help limit physical storage consumption by eliminating redundant data.
The appliance should also support storage-level encryption to ensure data cannot be retrieved from a stolen drive.
Manageability. Enterprise-class organizations need storage offerings that are highly scalable. Although a NAS appliance has a limit as to how much data it can store, it is common for large organizations to purchase multiple appliances. In these types of situations, you don't want to manage each enterprise NAS appliance individually. An appliance vendor should offer a management portal that allows you to collectively gauge the health of your appliances at a glance. Ideally, such a portal could be used for simultaneously configuring multiple appliances.