none
Hyper-V server core 2012 and Storage pool for a Windows 2012 guest

    Question

  • Hi

    I've already made a topic for this while the beta went out:

    http://social.technet.microsoft.com/Forums/fr-FR/winserver8gen/thread/2c29fa7f-0e48-4b2f-bcd3-7ee838b0c6e9

    Seems that nobody was able to answer the issue, so I waited for the final release of Win2012 and the release of Hyper-V server core based on 2012 server to make a new try... which failed as early on!

    This is the story:

    - Setting up a Hyper-V server core 2012 as the Host
    - Installation of Windows 2012 server as a guest 
    - Using HDD passtrought for the guest to let it access directly to the physical drives
    - Setting up a storage pool under the guest OS on the drive that are passed through

    So far so good until them everything work fine. The storage pool is OK, etc.

    The issue:

    - Reboot the host
    => Guest is unable to load, missing SCSi device.

    Looking closer: no more disk seen with Diskpart on the Host => Hyper-V Manager doesn't see it and is unable to pass-through it to the Guest.

    Seems that the way storage pool is working bypass totally the disk management of the system.
    Actually if I plug the drive in my Windows8 desktop, I immediately get the storage space working, without any notification, indication or something asking me if I want to "import" or "use" the storage pool detected on the drive.

    There's should be a way to say on the host "do not use the storage pool detected - keep passtrough the drive"

    My thought is Pass-trough as to be and stay pass-trough whatever is written on the disk. 

    And as I use Hyper-V Server Core, I'm not able to set a storage pool on the host, and using it as a drive on the guest (by the way this is something I doesn't want, I want my guest to manage their own storage space, the host is only here to run the hypervisor)

    I really want to use storage pool, but for now it's totally impossible.

    Thanks




    Wednesday, September 12, 2012 9:13 AM

All replies

  • Storage Pools are just abstractions of disks. 

    They don't need to be physical disks; but the model is that it is aggregating physical disks.

    The design is that a Windows Server presenting storage would have a Storage Pool above the physicla disks and in turn present this to other servers (iSCSI, SMB3, NFS).

    Or, you install Hyper-V, create a storage pool of your phsycal disks, store VHDs on it.

    The model that you are trying to accomplish really isn't a designed scenario and I don't beleive that it would ever be recommended or supported, as Storage Pools were never intended to be used within a VM (they could if you presented multiple VHDs, say one per physical disk).

    The performance of VHDX is so close to physical only an extremely high IO workload would ever detect an issue.


    Brian Ehlert
    http://ITProctology.blogspot.com
    Learn. Apply. Repeat.
    Disclaimer: Attempting change is of your own free will.

    Wednesday, September 12, 2012 4:08 PM
    Moderator
  • Yep. We've have this discussion on here before. No reason to use storage spaces inside a VM. Do as Brian said and create a pool on your host to store VHDs or VHDXs. You will save yourself a lot of headache.
    Wednesday, September 12, 2012 5:16 PM
  • Hi

    Thanks for your answers. Sorry to be late to answer you, be a little bit busy theses days ;)

    From what you're telling me I see 2 points:

    The philosophical issue, and the technical issue.

    About the philosophical issue. Sorry but I have to disagree with you. I don't see why I shouldn't be able to use pass-through disk on the Hyper-V host and fully manage my storage server on the guest with storage space. (Is there anywhere an official Microsft documentation telling that it's not supported/allowed ? I really don't find it)

    The point of using Hyper-V server core is to only have the Hyper-V host running and having only hyper-v to manage. Everything else should be the work of the guest, whatsoever the roles are: storage server, web server, exchange etc.

    If I add a storage role on the server core , for me it's change a lot of things, and it lower a little bit the need of running my storage server virtualized.

    About the technical issue:

    There's one little thing I really don't get:

    How can we accept that a system (Windows Server, Server core, or even Windows8) can use  storage spaces you setting up on an other machine (physical or virtual) without telling you, warning you and allowing you to say it: No I don't want you to "mount" the storage space you found on this drive. 

    When I plug a physical drive There's a message telling me a new drive is detected, I can set it "offline" so the system wont access it anymore (BTW this allow Hyper-V to pass-through the drive to the guest).
    A VHD file on a drive isn't automatically mounted on the systeme like this. I need to tell the system that I want it to use this VHD file.
    I use Dynamic drives on my actual server, and it works really well for this point. When the system detect dynamic drive on a disk, you have to "import" them. And if you want, you can still disconnect the drive.

    But with Storage space/pool: No, It did what it want no matter what you are trying to do. 

    There's really nothing that bugs you here ?
    For me it's a big flaw over the "power" of the user on his machine/system.
    And about Hyper-V: Pass-through should stay Pass-through, the server core shouldn't look on whatt is on your drive. When you pass-through the drive it's because you want the guest to have FULL access to the physical drive.

    At least let us have some powersheel command to disconnect the storage space, so the system can see the physical drive and leave you doing what you want with your drive. At this time I only saw powersheel command to delete the storage pool/space.

    Now. As I think it's a dead end issue.
    What advice can you have for this case?

    Can you tell me what the best setting I can do if I wan to have the benefits of storage space (expendability, parity check, mirroring, etc), when using a Hyper-V server Core, and a Win2012 guest for storage server on my network (SMB/NFS).
    As server core is a pain in the ass to manage (thanks to the hyper-v remote manager once the server is up it's more easy, but only for the hyper-v role), I don't see how I can manage storage space on it. 
    Should I install a Win2012 server in place of Hyper-V server core? 

    Thanks again.




    • Edited by Le_Poilu Saturday, September 15, 2012 3:55 PM
    Saturday, September 15, 2012 3:52 PM
  • The performance of VHDX is so close to physical only an extremely high IO workload would ever detect an issue.

    Thin provisioned? Thick provisioned? Or both?

    -nismo

    Saturday, September 15, 2012 9:33 PM
  • VHDX are a type of Dynamic virtual disk by nature. 

    They can be forces into fixed disk, but it is touted by MSFT that there are few reasons to do so.

    (the VHDX standard states its different model in growth, block sizes, compatibility with new physical disk 4k allocation sizes, etc.)

    I am just passing on information, not defending anything.


    Brian Ehlert
    http://ITProctology.blogspot.com
    Learn. Apply. Repeat.
    Disclaimer: Attempting change is of your own free will.

    Saturday, September 15, 2012 10:10 PM
    Moderator
  • Can you tell me what the best setting I can do if I wan to have the benefits of storage space (expendability, parity check, mirroring, etc), when using a Hyper-V server Core, and a Win2012 guest for storage server on my network (SMB/NFS).
    As server core is a pain in the ass to manage (thanks to the hyper-v remote manager once the server is up it's more easy, but only for the hyper-v role), I don't see how I can manage storage space on it. 
    Should I install a Win2012 server in place of Hyper-V server core? 

    To answer that question, I think it is what we have been saying. Create the space on the host itself in order to store your VHD's. You still gain all the benefits without the hassel. There is a great document out there on how to put together powershell scripts for storage spaces. This will allow you to automate the creation of new hosts (if necessary) as well as manage your current environment.

    http://www.microsoft.com/en-us/download/details.aspx?id=30125

    And if you are not comfortable with powershell, then I would suggest installing full OS and sticking to the GUI.

    Monday, September 17, 2012 3:11 AM
  • ok

    I think I'll give a try to it, As I'm able to manage Hyper-V core from the server manager on the guest, it's a lot easier to do ;) (but still waiting the RTM of RSAT for Win8)

    But I still think the way Storage pool/space work are "mounted" on the system is wrong.

    Monday, September 17, 2012 1:05 PM
  • Damn! It doesn't work at all :(

    Not sure if I should create a new topic so I put it here.

    While using the GUI Server Manager from the 2012 Server guest I have an "unexpected error" and nothing more.

    While using powersheel on the server core I have strange errors messages. See the code below:

    PS C:\> Get-StorageSubSystem
    
    FriendlyName               HealthStatus               OperationalStatus
    ------------               ------------               -----------------
    Storage Spaces on HYPER... Healthy                    OK
    
    
    PS C:\> Get-PhysicalDisk
    
    FriendlyName  CanPool       OperationalS HealthStatus Usage                Size
                                tatus
    ------------  -------       ------------ ------------ -----                ----
    PhysicalDisk0 True          OK           Healthy      Auto-Select       1.36 TB
    PhysicalDisk1 False         OK           Healthy      Auto-Select     189.92 GB
    PhysicalDisk2 False         OK           Healthy      Auto-Select       1.82 TB
    PhysicalDisk3 False         OK           Healthy      Auto-Select     596.17 GB
    PhysicalDisk4 False         OK           Healthy      Auto-Select     465.76 GB
    
    
    PS C:\> New-StoragePool
    
    applet de commande New-StoragePool à la position 1 du pipeline de la commande
    Fournissez des valeurs pour les paramètres suivants :
    StorageSubSystemFriendlyName[0]: Storage Spaces
    StorageSubSystemFriendlyName[1]:
    FriendlyName: Pool1
    PhysicalDisks[0]: PhysicalDisk0
    PhysicalDisks[1]:
    New-StoragePool : Aucun objet MSFT_StorageSubSystem avec la propriété «
    FriendlyName» égale à «Storage Spaces» n'a été trouvé. Vérifiez la valeur de
    la propriété et réessayez.
    Au caractère Ligne:1 : 1
    + New-StoragePool
    + ~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (Storage Spaces:String) [New-Sto
       ragePool], CimJobException
        + FullyQualifiedErrorId : CmdletizationQuery_NotFound_FriendlyName,New-Sto
       ragePool

    The Erro Message is in French, but it basicaly say that the friendly name "Storage Spaces" for the Storagesubsystem is not found. but you can see that the cmdl "Get-StorageSubSystem" give me this name (I tried with "Storage Space on HYPER..." or with the full name of the Server.. no change)

    If someone as an idea ..

    Nota: At this time I tried this on a single drive connected via un JMicron controler on the mainboard, which provide me a eSata port. Tonight I'll try on a native SATA port. I gave the good driver for the controler, the disk is fully accessible. I can use it for everything else (did some passthrough tries, etc), there's only with storage pool I have issue)

    Tuesday, September 18, 2012 12:58 PM
  • A StoragePool can only be created from unallocated (unmounted disks).  Think the state a Passthrough disk must be in before presenting it to a VM.

    StoragePool (in the user expereince) is similar to created the old software RAID dynamic disks in the Windows OS.  You take a bunch of disks and assign them to a Pool.  But, they cannot already be in use.

    If you have a Server Full install and you add the File Server managmeent GUI you can see all this, but you need the very basics of File Server enabled.  At a PowerShell prompt;  "Install-WindowsFeature FS-FileServer"

    From what I understand Hyper-V Server should have this capability in there already.  To create StoragePools.  But, the disks must not be mounted in order to do it. 

    The disks become a member of the Storage Pool and are formatted in that way.  Storage Pool is not an abstraction that lays over the top - a Resource Pool is.


    Brian Ehlert
    http://ITProctology.blogspot.com
    Learn. Apply. Repeat.
    Disclaimer: Attempting change is of your own free will.

    Tuesday, September 18, 2012 3:33 PM
    Moderator
  • The disk is not mounted or used in any way.

    If I put it offline (like it is needed for passthrough to VM) you'll see no disk to add to the pool.

    As you can see above, when I use the cmdlt "get-physicalDisk" the result is that PhysicalDisk0 has "CanPool" status to "True".  So it's in a status that allow me to use it for a Storage Pool.
    All the other disks are offline disks already passed-through for running VM (+ the actual disk for the server core installation), they all have "CanPool" to False.

    When using the GUI of Server Manager I need to initialize the disk to be able to create a Storage Pool, if not system doesn't any disk that can be use, and doesn't allow me to create a SP.

    For more "safety" before all I used the cmdlt "Clear-Disk X -removedata". The Disk should be ok pour storage creating a SP.

    The powershell error I have is about the StorageSubSystem  (Friendlyname=Storage Spaces") not founded by the command "new-StoragePool" but here when I look at "Get-StorageSubSystem".



    • Edited by Le_Poilu Tuesday, September 18, 2012 3:57 PM
    Tuesday, September 18, 2012 3:55 PM
  • Finally I was able to get it working.

    I think the issue was from the Jmicron eSata controller. 

    I tested with the native controller and it worked.

    What I did:

    First, on the Hyper-V server core host:
    Create a storage pool with one 1.5TB Physical disk  (thanks to RSAT for Win8 it's really easy)
    Create a simple virtualstorage 25TB (fin provision)
    Don't create a volume on it
    Under Diskpart the 25TB appear like a physical disk, was able to put it offline
    Under Hyper-V manager: passthrough the 25TB virtualdisk as any other physical disk to the VM guest.

    Then, on the Win2012 guest:
    The new 25GB disk appear like any other
    Create volumes as you want. For a testing purpose I did a 1TB volume an a 10TB volume. All worked fine.

    Next step: adding new harddrive, make a little test for parity/mirror virtualstorage... and then copy all my actual data :D

    Thanks for those who answered my questions. The situation is a not at worst as I thought. (But I'm still don't get why storagePool is managed as this)

    Saturday, September 22, 2012 9:09 AM
  • This is an old thread, but my solution could come in handy if any one comes across this.

    use Get-storagepool on the Hyper-V server, it should show the storage pool you created

    use set-stoargepool -isreadonly $false

    then Get-VirtualDisk | Connect-VirtualDisk to your storagepool and it should be available again to be re-added back to the Guest.


    • Edited by Iang123 Wednesday, January 28, 2015 8:54 PM
    Wednesday, January 28, 2015 8:52 PM