What is AVM doing?

What is AVM doing?

Since I started working with VNX I’ve been wondering what is AVM (Automatic Volume Manager) doing with my file systems. It is great to know that you can delegate everything to AVM so you don’t care what happens between the LUN being assigned from the block side and the file system provisioning, but I always thought it would be nice to understand what AVM is doing in the middle. This article does not cover all the functionalities from AVM, but rather what it does with the LUNs after they have been assigned to the Celerra (VNX File component).

So, before we begin, I will recommend you, if you want to read further on this, you look for a document named “Managing Volumes and File Systems on VNX Manually” and another one called “Managing Volumes and File Systems with VNX AVM”, these 2 documents will answer many of your questions for sure, even if you are using AVM read the PDF on manual configuration since it has many background info on what AVM does behind scenes. In fact I do reference these documents here couple of times.

Let’s begin. If you have come this far I will assume you know that any (or many) File and Unified versions of VNX have 2 components. One component managing block storage (formerly known as Clariion) and another to manage all file related operations (formerly known as Celerra), there is actually a third component for merely administrative purposes named Control Station but you must be used to this component already. In Unified configurations the Block storage will manage the disks and LUNs both for the File component and any other host connected to the system, while in the file configuration the Block side will be completely dedicated for the Celerra side, that’s why even for File configuration the Storage Processors are still present.

From the moment the LUNs have been presented to the File side, there are 2 ways these disks can be configured in order to be able to start provisioning NFS exports and CIFS shares:

  1. Manually configured
  2. Automatically configured (using AVM)

In the first case you will have to configure and arrange your volumes manually, while in the second case AVM will do the work for you. But before going there, what is a volume? Well, for DART (or File Operating Environment, the OS running on the Celerra) everything is a volume. These are the different types of volumes:

  • Disk volume: this is the most basic type of volume, the LUN itself. Once assigned and the Celerra has detected it, it will crate a d# (ie. d9) volume. If you want to see all the disk volumes in your system use nas_disk –list
  • Striped volume: An stripped volume is a volume created from pieces from different disk or slices volumes. For example, this is an 8GB striped volume made of 4 disk volumes of 10GB:

                                                            clip_image002

  • Slice: This is basically an slice of another volume, it might be a slice from a disk volume, or a slice from a striped volume.
  • Metavolume: this is the requirement for a file system, a metavolume must exist in order for a file system to exist (this is a 1 to 1 relationship). It can be formed from any other type of volumes. For example a 16GB metavolume can be formed by 2 8GB slices, each of these created from 2 different stripped volumes each of these stripped volumes backed by 4 disk volumes (as the previous image show).

If you want to read more on Volumes go to page 18 on “Managing Volumes and File Systems on VNX Manually” for details on volume types.

Going back to the way on how to arrange / create these volumes, they can be created in these 4 combinations:

  1. disks –> metavolume
  2. disks –> stripe –> metavolume
  3. disks –> slice –> stripe –> metavolume
  4. disks –> stripe –> slice –> metavolume (being this the way the devices are arranged while using AVM).

If you want to read on the advantages and disadvantages of these combinations go to page 27 on “Managing Volumes and File Systems on VNX Manually”.

So how do we do this? If you are going to do this manually, it is just matter of creating and arranging the volumes on your desired configuration. You can do that by using the nas_volume command, you might also get valuable information from nas_disk and nas_slice. AVM will play it’s role when a pool for file has been created. Be careful, you will see many people, including EMC manuals referring pools for file as Storage Pools, this is a huge mistake, since it can lead to misunderstanding, Storage Pools operate at block level, they are an alternative to Raid Groups, and are owned by the Clariion component. While Pools for File operate at File level and are owned by the Celerra system. SO if you are looking for some information on Pools for File and you see a document referencing to Storage Pools, don’t discard it, keep reading. because it might be what you are looking for.

Using Pools for File and AVM doesn’t disable from you the possibility of also managing volumes manually, but my advise is you to follow the same guidelines for everything or if there is an actual need to go into a complex scenario where mixing manual and automatic volume management keep things well documented.

There are 3 types of Pools for File which can be created:

  • System Defined Pools: these are built in pools, they get activated when LUNs are provisioned to the Celerra using the “Disk Provisioning Wizard for File”, just a couple of clicks and you are ready to start provisioning file systems.
  • User Defined Pools: These ones are particularly useful in cases where you want to have some control, for example, which physical disks are going to be used, but you leave the rest of the management process to AVM.
  • Mapped Pools: This type of pool is created when you manually add LUNs to the Celerra. If you want to manually distribute this LUNs, remove them from the pool. The Pool will be deleted when no LUNs are assigned to it.

If you want to read more on Pools for File go to page 24 on “Managing Volumes and File Systems with VNX AVM”.

Now if you ask me, Network Attached Storage is not a performance driven solution, most of all because before reaching a bottleneck in the disk component is much more likely to encounter a bottleneck in the network layer of the solution. That is why I prefer to keep things simple. In my opinion AVM and System Defined pools work just fine in 99.9% of the cases (most of all if you are using your NAS device to serve file share for end users), there is no need to manually control how are the LUNs being utilized by the Celerra system, you can rely on AVM to do so in most of the cases.

Yet knowing what is AVM doing might be valuable most of all while troubleshooting or evaluating the performance of a system. The following script will help you to understand where has AVM placed different file systems.

#!/bin/sh
for i in $(nas_disk -list | grep –i <diskType> | awk '{print $6'})
do
  type1=<code>nas_volume -info $i | grep -i type | awk '{print $3}'</code>
  clients1=<code>nas_volume -info $i | grep -i clnt | awk '{print $3}' | awk 'BEGIN{FS=&quot;,&quot;};{for (m=1;m&lt;=NF;m++) print $m &quot; &quot;}'</code>
  for j in $(echo $clients1)
  do
    type2=<code>nas_volume -info $j | grep -i type | awk '{print $3}'</code>
    clients2=<code>nas_volume -info $j | grep -i clnt | awk '{print $3}' | awk 'BEGIN{FS=&quot;,&quot;};{for (m=1;m&lt;=NF;m++) print $m &quot; &quot;}'</code>
    for k in $(echo $clients2)
    do
      type3=<code>nas_volume -info $k | grep -i type | awk '{print $3}'</code>
      clients3=<code>nas_volume -info $k | grep -i clnt | awk '{print $3}' | awk 'BEGIN{FS=&quot;,&quot;};{for (m=1;m&lt;=NF;m++) print $m &quot; &quot;}'</code>
      for l in $(echo $clients3)
      do
        type4=<code>nas_volume -info $l | grep -i type | awk '{print $3}'</code>
        clients4=<code>nas_volume -info $l | grep -i clnt | awk 'BEGIN{FS=&quot;=&quot;};{for (m=2;m&lt;=NF;m++) print $m &quot; &quot;}'</code>
        echo $i $type1 $j $type2 $k $type3 $l $type4 $clients4 $clientType4
      done
    done
  done
done

Where <diskType> should be replaced with the disk type in the pool for file, for example clata for NL SAS. This script will return a table in the form of, for example:

<diskVolume> <type> <strippedVolume> <type> <sliceVolume> <type> <metaVolume> <type> <fileSystem>

d9 disk v100 stripe s30 slice v110 uxfs1

One line will be printed for each existing combination (disk->stripe->slice->meta->fs) Then you can sort this table by fields 3 and 5 (in that same order) and reading from right to left you will be able to see how are you file systems spanned across the volumes and LUNs.

Hope you find this useful.

Hernán J. Larrea

One Reply to “What is AVM doing?”

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.