Clustering Hyper-V with Server 2012 - MPIO Version Mismatch

92

HP recommends that you use the native DSM module for Windows Server 2012 and above, so two things you may want to check are, first, on each computer have you installed the Multipath-IO, you can do that with (using an Administrator PowerShell window):

Add-WindowsFeature Multipath-IO

And once that has been done, run mpiocpl.exe (the MPIO GUI) and check that "Add support for iSCSI devices" is checked and then click "Add". See here (taken on a machine that doesn't use MPIO):

MPIO Properties dialogue box, showing the check boxes for 'Add support for iSCSI devices' and 'Add support for SAS devices'

A final step you can run, which is recommended in an HP support document on StorageWorks but may not be necessary in 2012, is to run the following command on each server:

mpclaim -n -i -a

The -n option suppresses reboot, -i is to install MPIO support on device(s), and -a specifies all applicable devices.

Share:
92

Related videos on Youtube

landis
Author by

landis

Updated on September 18, 2022

Comments

  • landis
    landis almost 2 years

    I'm trying to write the following code that calculates the moving average. In "main.c" file i call 2 functions of "movingAVG.h": The function initAVG() create an array and initialize all element with 0, with this function i choose the number of saples to use for average . The function getAVG() take the array, replace the oldest sample with the newest and return the calculated average. I need to pass the array from initAVG to getAVG using the pointer array duality property but i'm not able to do that, i'm new to C. What i'm doing wrong? Any help would be really appreciated. Many thanks!

    /* ========================================
     *
    MEDIA MOBILE.
     *
     * ========================================
    */
    
    #include "project.h"
    
    uint8 start=0;
    uint8 iy; //sample's vector index
    uint32 sum=0;
    uint32 avg;
    uint32 *ptrSamples;
    
    void initAVG(nSample)
    {
        uint8 i=0;
        uint32 Samples[nSample];
        ptrSamples = Samples;
    
        while (i<=nSample)
        {
            Samples[nSample]=0;
            i++;
        }
        start=1;
    }
    
    uint32 getAVG(uint8 nSample,uint32 lastvalue)
    {
        if (iy<=nSample && start==1)
        {
            sum -= ptrSamples[iy];
            ptrSamples[iy] = lastvalue;
            sum += ptrSamples[iy];
            avg = sum / (nSample + 1);
            if (iy<nSample)
            {
                iy++;
            }else {iy = 0;}
        }
        return avg;
    }
    
    /* [] END OF FILE */
    

    EDIT: I tried to use dynamic memory allocation with malloc() for the array but it doesn't work. What's wrong? Does the allocated memory with malloc() survive exiting from initAVG() function?

    #include "project.h"
    #include "malloc.h"
    
    uint8 start=0;
    uint8 iy; //sample's vector index
    uint32 sum=0;
    uint32 avg;
    uint8 nSample;
    uint32* ptrSamples;
    
    void initAVG(numberOfSample)
    {
        uint8 i=0;
        nSample=numberOfSample;
        ptrSamples = malloc((nSample+1)*sizeof(uint32)); 
    
        while (i<=nSample)
        {
            ptrSamples[i]=0;
            i++;
        }
        start=1;
    }
    
    uint32 getAVG(uint32 lastvalue)
    {
        if (iy<=nSample && start==1)
        {
            sum -= ptrSamples[iy];
            ptrSamples[iy] = lastvalue;
            sum += ptrSamples[iy];
            avg = sum / (nSample + 1);
            if (iy<nSample)
            {
                iy++;
            }else {iy = 0;}
        }
        return avg;
    }
    
    • mnistic
      mnistic over 6 years
      It looks like all you have to do is make Samples global.
    • manuell
      manuell over 6 years
      In initAVG, you set ptrSamples to be a pointer to a local variable and then use that pointer in getAVG. That's illegal. Try the mnistic's suggestion.
  • landis
    landis over 6 years
    If i declare the array Sample[nSample] as global, i cannot use the variable nSample for its lenght uint32 Samples[nSample]; not allowed