Category Archives: Storage

Hardware Accelerated Fast Provisioning in vCloud Director

Recently I have been struggling to enable hardware accelerated fast provisioning in vCloud Director. It is not particularly well documented so I am putting all the necessary steps here for the benefits of others.

First some theory: VMware technical marketing storage guru Cormac Hogan explains on his personal blog new vSphere 5.1 storage enhancement in vCloud Director and also the new NFS VAAI Fast File Clone primitive. vCloud Director has been supporting linked clone based fast provisioning since version 1.5. However in the current version 5.1 we fully support the hardware offload. A linked clone (first used in VMware View) is a duplicate of a virtual machine that uses the same base disk as the original with a chain of delta disks to track the differences between the original and the clone. It is used mainly to speed up the VM provisioning operations where it takes just a second or so to create a clone whereas a full clone operation can take minutes. It brings also significant storage efficiency. However it has also some drawbacks – the main is the loss of performance. As we can create clone of a clone a long chain of related delta disks is created (by default up to 30) and the virtual machine’s disk read I/O operation has to traverse through the chain to find the right block. Also by design delta disks are not storage aligned as they contain the block content plus its location.

So here comes the hardware offload. If NFS storage is used we can use the Fast File Clone VAAI primitive which offloads the clone creation (basically a vmdk file copy) to the storage hardware. NFS has advantage here over the block storage as the storage array has no notion of vmdk files. I have seen EMC and NetApp implementations and will describe the latter as it can be easily simulated with the NetApp Edge Virtual Storage Appliance which can be downloaded with 90 day evaluation licenses here: (note NetApp Edge requires 2 vCPUs and utilizes them 100% all the time!).

  1. NetApp supports NAS VAAI with firmware Data ONTAP 8.1 in cluster mode and Data ONTAP 8.1.1 in 7-mode. The NetApp Edge Appliance I used came with Data ONTAP 8.1.1 in 7-mode.
  2. FlexClone file technology is used to create hardware offloaded linked clones therefore it must be licensed. FlexClone does not physically copy any data blocks just a new metadata is created which points to the original blocks as shown in the picture taken from the NetApp Storage Management Guide.

    FlexClone

    If FlexClone is not licensed, vCloud Director can still offload the cloning to the array however slow full clone is created instead by the array. The Eval license comes with FlexClone license key which must be entered with license add <license code> command from the Data ONTAP console.

  3. In order to enable NFS VAAI on vSphere a storage vendor VMkernel module must be installed. NetApp provides NetApp NAS Plugin (NetAppNasPlugin.v18.zip). It must be either incorporated to the ESX installation image profile or installed manually from the ESXi shell:

    esxcli software vib install -d /path/to/NetAppNasPlugin.v18.zip

  4. VAAI must also be enabled on the NetApp. This is done by enabling VMware vStorage support by running the following command from Data ONTAP console:

    options nfs.vstorage.enable on

  5. If everything done correctly the Hardware Acceleration column in the vSphere list of datastore should show Supported. More info about the datastore can be displayed by running command vmkfstools -Ph /vmfs/volumes/<datastore>


    ~ # vmkfstools -Ph /vmfs/volumes/NetAppNFS1
    NFS-1.00 file system spanning 1 partitions.
    File system label (if any): NetAppNFS1
    Mode: public
    Capacity 28.5 GB, 28.5 GB available, file block size 4 KB
    UUID: 1799ba01-2494838d-0000-000000000000
    Partitions spanned (on “notDCS”):
           nfs:NetAppNFS1
    NAS VAAI Supported: YES
    Is Native Snapshot Capable: YES

  6. Once we assign the NFS datastore to a StorageProfile which is used by a Provider VDC in vCloud Director we should see it in the vCloud Director > System > Manage & Monitor > vSphere Resources > Datastores & Datastores Clusters menu. Here we must check the Enable VAAI fast provisioning checkbox in the datastore General properties, which instructs vCloud Director that on this particular datastore linked clones will be hardware offloaded.

    Datastore Properties

  7. Now we can create a Organization VDC with Fast Provisioning enabled and test its functionality.

A few notes:

  • Maximum length of FlexClone chain is 32,767 which is much higher than vCloud Director default VAAI chain length 256. In cases where storage array does not support chain length 256 it must be lowered by changing the value in the vCloud Director database (table config -> VirtualMachine.AllowedMaxVAAIChainLength)
  • You can see if a particular vmdk was create by hardware snapshot by examining its vmdk descriptor file:

    isNativeSnapshot=”yes” … hardware offloaded snapshot
    isNativeSnapshot=”no” … regular vSphere REDO logs based snapshot

  • The concept of shadow VMs stays the same as with regular fast provisioning. FlexClone operation cannot span FlexVols even if both are on the same aggregate. Therefore a fully cloned Shadow VM is created first when a clone operation between datastore is initiated. Then a regular vSphere snapshot is performed on the Shadow VM and then a Native Snapshot is created for the target clone. Shadow VMs are registered in the System VDC resource pool.
  • Shadow VM is not deleted automatically even if all her clones on datastores are removed. This actually makes sense as additional clones could be created and leverage the fast clone operation. It can be deleted from original VMs “Shadow VMs” tab.
  • Native clones cannot be storage vMotioned.
  • I have seen statement that only VM hardware 9 is supported however I have successfully tested it with VM hardware 8.

Visit to EMC Centre of Excellence at Cork, Ireland

Early this week I had to opportunity to visit the EMC Centre of Excellence at Cork, Ireland. The Czech EMC subsidiary organized a factory tour and number of presentations of the new storage and backup products for their customers and partners.

The EMC campus is located west of Cork in Ovens county. The visitor center is right next to the factory. At the entrance there are on display fake CLARiiON, Celerra, Centera and Symmetrix which are all assembled in the factory. As I was not allowed to take photos in the factory this is the only picture I have got.

They are assembling, configuring and testing storage at the factory for the whole EMEA region. The PCBs with chips and memory, solid state and spindle drives are shipped here from other factories (China, Japan) and are electronically and mechanically tested here. Once assembled into a rack, a few temperature controlled rooms are fulled with them. The systems are abused with changing temperatures from very cold to very hot for few days with diagnostic tests run on them. Seeing full racks of disks with furiously flashing LEDs in an environment with 40+ degrees was quite impressive. At any time if something fails the component is taken to a lab where they try to reproduce the failure and find root cause with the manufacturer of given component. It takes about five days from the initial paper configuration to the assembled and tested equipment ready to be shipped to the customer.

We mostly saw Symmetrixs, but the new VNX product lines were also present.

EMC as a storage leader is not afraid to show how they make their products. On the other hand the current trend in storage industry is to use commodity hardware and the technical differentiation among vendors is the software. I guess to see how software is made would not be that impactful.

Nexenta and SIL3512 Controller

NexentaStor is Solaris based storage appliance which leverage ZFS filesystem. NexentaStor Community Edition is free version (up to 18 TB) with NFS, CIFS and deduplication features. I have just started to play with it little bit. I am installing it on bare metal hardware (there are also virtual appliance editions for VMware or Xen available) and am curious about the performance.

The hardware I use is a few years old ASUS P5B-VM DO motherboard with 6 SATA ports on ICH8DO Intel controller and two SATA ports on JMicron onboard controller (one internal and one external). I always intended to use this hardware for fileserver and 7 SATA ports seemed not enough therefore I have added two dual port SATA SIL3512A controllers which gave me altogether 11 internal SATA ports. I used to run Linux and VMware ESX4 on this hardware and never had any problems with recognizing all the available ports or connected drives. However with Nexenta it was not the case. Nexenta did not see the SIL3512A controllers and the four 1TB SATA drives attached to them.

The SIL3512A is generic chip made by Silicon Image the controller is made by Kouwell and the actual make is 571S.

It features some kind of SATARAID 1 and 0 but that does not work in any OS but Windows. There is however available another BIOS without the RAID features. So I created FreeDOS USB drive with HP USB Disk Storage Format Tool and copied the BIOS file and SIL flash utility there. I booted my file server of the USB drive and flashed both controllers with following command:

UPDFLASH.EXE B4502.BIN

Nexenta now sees the connected disks as ATA attached drives. See the highlighted screenshot.

Iomega VMware ESX NFS Datastore Issue

In my VMware vSphere home lab I have been using for shared storage various hardware or software appliances: from Openfiler, Falconstor VSA, HP LeftHand/StorageWorks P4000 VSA to EMC Celerra VSA. Recently I have added Iomega ix4-200d. Its NFS sharing is VMware vSphere certified. Although Iomega is not very powerfull (see my previous blog post about Iomega) I moved all my VMs to it to free up my storage server to play with other storage appliances (I am testing Nexenta now, but that is for another blog post).

My setup is now very simple. I have diskless ESXi that runs all the VMs from the NFS datastore served by Iomega. Today I have restarted the ESXi server and was surprised that due to inaccessible NFS datastore no VM was started.  The datastore was grayed out in the vSphere Client GUI.

I have virtual domain controller, internet firewall/router, mail server and some other less important machines. So if the ESX does not start properly I have no internet, email and I cannot even log in to Iomega CIFS shares because it is joined to domain which was also not available.
I was very surprised as I had no idea why the ESX server could not connect to the NFS datastore. Storege rescan did not help, so I have unmounted the datastore and tried to reconnect it. I received this error message:

Call “HostDatastoreSystem.CreateNasDatastore” for object “ha-datastoresystem” on ESXi “10.0.4.202″ failed.
Operation failed, diagnostics report: Unable to complete Sysinfo operation. Please see the VMkernel log file for more details.

VMkernel log (which is on ESXi stored in /var/log/messages) did not help much:

Jan 15 22:10:25 vmkernel: 0:00:01:30.282 cpu0:4767)WARNING: NFS: 946: MOUNT RPC failed with RPC status 13 (RPC was aborted due to timeout) trying to mount Server (10.0.4.251) Path (/nfs/Iomega)

I was able to connect to the NFS Iomega export from regular linux machine. I was also able to connect the ESX server to regular linux NFS export. And that helped me to find the solution.

Because both of my DNS servers were running in virtual machines and not accessible, Iomega took more time to connect the ESX server to the NFS datastore and ESX server meanwhile gave up. The remedy was very simple. To Iomega /etc/hosts file I have added a line with the ESX server IP address and its hostname. This must be done via Iomega ssh console and not via web GUI:

root@Iomega:/# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.0.4.251 Iomega.FOJTA.COM Iomega
10.0.2.251 Iomega.FOJTA.COM Iomega
10.0.4.202 esx2.fojta.com esx2

From now when the ESX server reboots it mounts the NFS datastore immediately.

Iomega ix4-200d: The Good, The Bad and The Ugly

Recently I have added to my home lab NAS Iomega ix4-200d – with 4×2 TB hard drives. Here are some of my thoughts about the product.

Iomega makes consumer disk based products but since April 2010 is part of EMC. They are now claiming to deliver enterprise storage solutions to small and medium businesses. The Iomega’s biggest unit – 12 disk ix12-300r is rack mountable, with dual hot-swappable power supplies but with the same OS as my Iomega ix4 – EMC Lifeline Linux. I have read many blogs saying that Iomega is very good fit for VMware home labs. It is even on VMware hardware compatibility list.

So what are my thoughts?

The good

  • it is very small, neat and quiet unit with four 2 TB hard drives, if RAID5 is used you get around 5.5 TB of capacity
  • it is very simple to setup and use via web based GUI
  • it has many features: RAID 0/1/5, CIFS, NFS, iSCSI, FTP, TFTP, rsync and CIFS replication, Active Directory integration, Quotas, Printer server, USB ports for external drives, Bluetooth dongle or UPS communication, scheduled backups, power management, torrent client, …
  • dual ethernet ports, jumbo frames
  • as mentioned it is on VMware HCL
  • in this white paper EMC recommends the use of Iomega for Remote Office Branch Office (ROBO) deployments with centralized backup repository to Celerra

The Bad

  • it uses software RAID (linux mdadm), slow 5.9K rpm Seagate 2TB drives, ARM9 (ARM926EJ-S) CPU with 512 MB RAM, therefore the disk performance is not very good
  • the web based GUI is sometimes too simple and limiting
  • although it has many features, most of them are implemented on very basic level
  • the dual network ports do not support VLANs, using each port for different network segment is possible, but the separation of services is not done very well. For example you cannot limit the management interface to only one network.
  • only NFS is VMware certified, iSCSI is not. You cannot limit iSCSI to one network segment and separate LAN from SAN.

The Ugly

  • Very basic documentation
  • My hopes were that because of the Active Directory integration it could be used as replacement of Windows File server. Well, this is not the case. You can create shares with AD access control list only at the root level and only via the GUI. You cannot create subfolders with different access rights neither from Windows nor from the GUI. This makes it unusable for business deployment.

The result

I think the unit is perfect for home use. It has enough capacity to be used for home media – movies, music and photos, for backups and for some light VMware home lab usage. However for small businesses I would recommend to use it only for backups. I was expecting Iomega to have Celerra like features and am little bit dissapointed but that is probably too much to ask in this price range.

HP StorageWorks P4000 Virtual SAN Appliance Now With VAAI



I am using HP StorageWorks (formerly known as LeftHand) P4000 Virtual SAN Appliance (VSA) for my iSCSI storage. It is a virtual machine that uses any storage (in my case local disks) and presents it as iSCSI targets. It is enterprise level software (as opposed to OpenFiler) with such features as high availability (network RAID), thin provisioning, snapshots, replication and Site Recovery Manager plugin. The list price is 4500 EUR, but the good thing is that it can be used for free without the advanced features such are replication, snapshots, HA, etc. Those features can be used in trial mode for 60 days which is perfect for Site Recovery Manager testing. HP also sells hardware equivalents of P4000 which are basically regular computers with SAN appliance software.

The SAN appliance software is called SAN/IQ and new update version 9 was released last week. For me the most interesting new feature is vStorage API for Array Integration (VAAI). Now in vSphere ESX4.1 there are some storage related operations offload from the vmkernel to the storage processor. One of them is zeroing newly created thick disk (eager zero thick disk) needed for fault tolerance VMs. To test if VAAI works I compared creation of 10GB FT enabled disk. Without VAAI the disk was created in 249 seconds with VAAI it took only 193 seconds without any ESX host CPU overhead or unnecessary SAN traffic.

Here is the screenshot of a datastore with hardware acceleration.

I love when you can play with enterprise technology at home.

The HP VSA can be downloaded here: www.hp.com/go/tryvsa

Openfiler running from 2GB SD card

I am building my home lab for VMware vSphere testing. To use advanced features vSphere offers external storage is a must. There are many options. My choices were to buy NAS (my favorite is Iomega StorCenter ix4-200d which is even on vSphere HCL), use my file server linux box with NFS exports or build an open source NAS that supports iSCSI. vSphere supports NFS, so standard linux with NFS-kernel-server is an option, however you cannot use vStorage thin provisioning. I needed flexibility, which buying NAS would not offer (5×1 TB RAID5 for my files and 2x 500GB RAID1 for vSphere) and so decided to change my file server into an Openfiler appliance. This way I could still use it as file server with samba shares for my Windows station and also as iSCSI storage for vSphere ESX 4 hosts. To maximize the number of disks I could put into the box I decided to boot it from SD card. Unfortunately that is not an easy task. There are many guides on the Openfiler forum, however at the end I came up with my own solution with the help of VMware Workstation.

  • Download ISO from here
  • Create VM in Workstation with similar setup as the physical machine that will be used for Openfiler. In my case with 2 GB HDD, 2 GB RAM and 3 e1000 NICs.
  • Install Openfiler with linux text expert option
  • Select Druid partitioning option and make these partitions:
/boot 100 MB EXT2
/ 1200 MB EXT2
/var 512 MB EXT2
  No swap!
  • After installation, log in via web interface  and update Openfiler. Use background update. It takes some time. Reboot.
  • Before moving the installation to SD card we must add USB storage drivers to boot image:

cd /boot
mv initrd-2.6.29.6-0.6.smp.gcc3.4.x86_64.img initrd-2.6.29.6-0.6.smp.gcc3.4.x86_64.img.old
mkinitrd –preload ehci-hcd –with usb-storage initrd-2.6.29.6-0.6.smp.gcc3.4.x86_64.img 2.6.29.6-0.6.smp.gcc3.4.x86_64

  • Edit the fstab options to protect the limited writes of SD card with noatime option and moving some folders to ramdrive

nano /etc/fstab

LABEL=/                 /                       ext2    defaults,noatime        0 0
LABEL=/boot             /boot                   ext2    defaults,noatime        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620          0 0
tmpfs                   /dev/shm                tmpfs   defaults,noatime        0 0
/proc                   /proc                   proc    defaults,noatime        0 0
/sys                    /sys                    sysfs   defaults,noatime        0 0
LABEL=/var              /var                    ext2    defaults,noatime        0 0
tmpfs                   /tmp                    tmpfs   defaults,noatime        0 0
tmpfs                   /var/tmp                tmpfs   defaults,noatime        0 0

  • Do any additional customizations (admin password, NIC setup, etc.)
  • Once we are done we can transfer the image to SD card. For that I used another linux VM with Debian. I added the VMDK disk from Openfiler VM and plugged in SD with physical access to Debian VM (little icon in the right corner of VMware Workstation – Disconnect from Host).
    • With fdisk create /boot / and /var partitions same size and filesystem as in Openfiler install
    • copy boot partition with dd (/dev/sdb is Openfiler disk, /dev/sdd is SD card

dd /dev/sdb1 /dev/sdd1

  • copy the rest with cp

mkdir /mnt1
mkdir /mnt2
mount -t ext2 /dev/sdb2 /mnt1
mount -t ext2 /dev/sdd2 /mnt2
cp -a /mnt1 /mnt2
umount /mnt1
umount /mnt2
mount -t ext2 /dev/sdb3 /mnt1
mount -t ext2 /dev/sdd3 /mnt2
cp -a /mnt1 /mnt2
umount /mnt1
umount /mnt2

  • label the partition so they can be mounted properly

e2label /dev/sdd1 /boot
e2label /dev/sdd2 /
e2label /dev/sdd3 /var

  • We are done. Now the SD card is ready to be inserted into the physical Openfiler machine.