1. Improving iSCSI Native Multi Pathing Round Robin Performance

    Mon 27 May 2013

    10 Gb ethernet is still quite expensive. You not only need to buy appropriate NICS, but you must also upgrade your network hardware as well. You may even need to replace existing fiber optic cabling if it's not rated for 10 Gbit.

    So I decided to still just go for plain old 1 Gbit iSCSI based on copper for our backup SAN. After some research I went for the HP MSA P2000 G3 with dual 1 Gbit iSCSI controllers.

    Each controller has 4 x 1 Gbit ports, so the box has a total of 8 Gigabit ports. This is ideal for redundancy, performance and cost. This relatively cheap SAN does support active/active mode, so both controllers can share the I/O load.

    The problem with storage is that a single 1 Gbit channel is just not going to cut it when you need to perform bandwidth intensive tasks, such as moving VMs between datastores (within VMware).

    Fortunately, iSCSI Multi Pathing allows you to do basically a RAID 0 over multiple network cards, combining their performance. So four 1 Gbit NICS can provide you with 4 Gbit of actual storage throughput.

    The trick is not only to configure iSCSI Multi Pathing using regular tutorials, but also to enable the Round Robin setting on each data store or each RAW device mapping.

    So I dit all this and still I got less than 1 Gb/s performance, but fortunately, there is only one little trick to get to the actual performance you might expect.

    I found this at multiple locations but the explanation on Justin's IT Blog is best.

    By default, VMware issues 1000 IOPS to a NIC before switching (Round Robin) to the next one. This really hampers performance. You need to set this value to 1.

    esxcli storage nmp psp roundrobin deviceconfig set -d $DEV --iops 1 --type iops
    

    This configuration tweak is recommended by HP, see page 28 of the linked PDF.

    Once I configured all iSCSI paths to this setting, I got 350 MB/s of sequential write performance from a single VM to the datastore. That's decent enough for me.

    How do you do this? It's a simple one liner that sets the iops value to 1, but I'm so lazy, I don't want to copy/past devices and run the command by hand each time.

    I used a simple CLI script (VMware 5) to configure this setting for all devices. SSH to the host and then run this script:

    for x in `esxcli storage nmp device list | grep ^naa`
    do
        echo "Configuring Round Robin iops value for device $x"
        esxcli storage nmp psp roundrobin deviceconfig set -d $x --iops 1 --type iops
    done
    

    This is not the exact script I used, I have to verify this code, but basically it just configures this value for all storage devices. Devices that don't support this setting will raise an error message that can be ignored (if the VMware host also has some local SAS or SATA storage, this is expected).

    The next step is to check if this setting is permanent and survives a host reboot.

    Anyway, I verified the performance using a Linux VM and just writing a simple test file:

    dd if=/dev/zero of=/storage/test.bin bs=1M count=30000
    

    To see the Multi Pathing + Round Robin in action, run esxtop at the cli and then press N. You will notice that with four network cards, VMware will use all four channels available.

    This all is to say that plain old 1 Gbit iSCSI can still be fast. But I believe that 10 Gbit ethernet does probably provide better latency. If that's really an issue for your environment, is something I can't tell.

    Changing the IOPS parameter to 1 IOPS also seems to improve random I/O performance, according to the table in Justin's post.

    Still, although 1 Gbit iSCSI is cheap, it may be more difficult to get the appropriate performance levels you need. If you have time, but little money, it may be the way to go. However, if time is not on your side and money isn't the biggest problem, I would definitely investigate the price difference with going for fibre channel or with 10Gbit iSCSI.

  2. Creating Storage Benchmark Charts With FIO and GNUplot

    Wed 22 May 2013

    Edit 2019: I've made a new tool called 'fio-plot'to create various graphs.


    I use FIO to perform storage IO performance benchmarks. FIO does provide a script called "fio_generate_plots" which generates PNG or JPG based charts based on the data generated by FIO. The charts are created with GNUplot.

    The "fio_generate_plots" didn't make me very happy as it didn't generate the kind of graphs I wanted. Furthermore, the script just contains some copy/pastes of the same blocks of code, slightly altered for the different benchmark types. I understand that the focus lies on FIO itself not some script to generate some fancy graphs, so don't get me wrong, but the script could be improved.

    I used this script as the basis for a significantly reworked version, putting the code in a function that can be called with different parameters for the different benchmark types.

    The result of this new script is something like this:

    benchmark

    You can download this new script here. This script requires GNUplot 4.4 or higher.

    Update 2013/05/26

    I've submitted the script as a patch to the maintainers of FIO and it has been committed to the source tree. I'm not sure how this will work out but I assume that this script will be part of newer FIO releases.

  3. Linode Hacked: The Dark Side of Cloud Hosting

    Tue 16 April 2013

    Linode has released an update about the security incident first reported on April 12, 2013.

    The Linode Manager is the environment where you control your virtual private servers and where you pay for services. This is the environment that got compromised.

    Linode uses Adobe's ColdFusion as a platform for their Linode Manager application. It seems that the ColdFusion software was affected by two significant, previously unknown vulnerabilities that allowed attackers to compromise the entire Linode VPS management environment.

    As the attackers had control over the virtual private servers hosted on the platform, they decided to compromise the VPS used by Nmap. Yes, the famous port scanner.

    Fyodor's remark about the incident:

    I guess we've seen the dark side of cloud hosting.
    

    That's the thing. Cloud hosting is just an extra layer, an extra attack surface, that may provide an attacker with the opportunity to compromise your server and thus your data.

    Even the author of Nmap, a person fairly conscious about security and aware of the risk of cloud-hosting, still took the risk to save a few bucks and some time setting something up himself.

    If you are a Linode customer and consider becoming a former customer by fleeing to another cheap cloud VPS provider, are you really sure you are solving your problems?

    When using cloud services, you pay less and you outsource the chores that come with hosting on a dedicated private server.

    You also lose control over security.
    

    Cloud hosting is just storing your data on 'Other People's Hard Drives. So the security of your stuff depends on those 'other people'. But did you ask those 'other people' for any information about how they tink to address risks like zero-days or other security threats? Or did you just consider their pricing, gave them your credit card and got on with your life?

    If you left Linode for another cloud VPS provider, what assures you that they will do better? How do you know that they aren't compromised already right now? At this moment? You feel paranoid already?

    We all want cheap hosting, but are you also willing to pay the price when the cloud platform is compromised?

Page 28 / 73