Infra - Virtualização

Aumentando o tamanho de VHDs no Hyper-V R2

Neste artigo será exibido o método para aumentarmos o tamanho de um HD virtual (vhd) com o Hyper-V do Windows Server 2008 R2. Também será explicado como compactar e converter um arquivo vhd.

por Leandro Carvalho



Tecnologias

Windows Server 2008 R2 Standard

Windows Server 2008 R2 Enterprise

Windows Server 2008 R2 Datacenter

Hyper-V Server 2008 R2

Sumário

Neste artigo será exibido o método para aumentarmos o tamanho de um HD virtual (vhd) com o Hyper-V do Windows Server 2008 R2. Também será explicado como compactar e converter um arquivo vhd.

Conteúdo

Introdução

Procedimento

Conclusão

Sobre o autor

Introdução

Quando planejamos o uso de capacidade em disco do servidor as vezes não pensamos num crescimento futuro ou no mal uso desse HD na hora da alocação de dados. Nos sentimos num beco sem saída quando nos deparamos com um disco cheio. Caso isto ocorra numa máquina virtual você verá que o processo para aumentar seu tamanho é bem simples, como descrito abaixo.

Procedimento

Abra o Hyper-V Manager em Start>Administrative Tools>Hyper-V Manager. Clique em Ok na mensagem do User Account Control para elevar suas credenciais como administrador.

Clique na opção Edit Disk no lado direito da tela, conforme figura 1.



Figura 1 – Opção de edição de discos virtuais.


Na tela de boas vindas clique em Next e logo após escolha o caminho do arquivo do HD virtual que você deseja aumentar e clique em Next novamente.

Vale lembrar que a máquina virtual que está usando o HD não pode estar ligada e nem no status Saved. Também não é aconselhável que seja feito este procedimento em máquinas que tenham snapshots. Os mesmos não estarão disponíveis depois do procedimento.



Figura 2 – Caminho do VHD


Na tela Choose Action escolha a opção Expand e clique em next.

Para explicar as outras duas opções, é interessante entendermos os dois tipos de discos: Dinamicos e Fixos.

O Disco dinâmico é um arquivo vhd pequeno, de 2 MB, que aumenta com a quantidade de dados conforme ela é adicionada no vhd, interessante em ambientes de testes ou quando não há muito espaço em disco na máquina física.

Já o disco fixo é um arquivo vhd que é criado com o mesmo espaço físico que o disco virtual, reservando seu uso na máquina física somente a VM. Por exemplo, se você criar um disco virtual de 50 GB, o arquivo ocupará 50 GB no disco físico. O disco fixo seria a melhor opção, pois proporciona uma performance maior para a VM comparado com o dinâmico.

A opção Convert converte um vhd dinâmico em um disco fixo. Em caso de máquinas que precisem de muito I/O de disco.

A opção Compact diminui o tamanho do arquivo vhd quando um grande número de dados são excluidos do HD dinâmico.



Figura 3 – Opção para aumentar o tamanho do disco virtual


Escolha o novo tamanho do disco virtual e clique em Next. No exemplo usado o vhd que tinha 20 GB será aumentado para 40 GB.



Figura 4 – Novo tamanho do disco virtual


Confirme as opções escolhidas e clique em Finish. Após isso você já pode ligar a máquina virtual. No gerenciamento do disco aparecerá um espaço não alocado do tamanho que você aumentou. Daí é só criar novas partições ou extender com a partição existente. Caso você precise extender uma partição que esteja sendo usada como volume de boot ou de sistema, só será possível fazer isto à partir do Windows Vista e Windows Server 2008.



Figura 5 – Confirmação


É possível usar o script abaixo do powershell se você precisar automatizar este processo. É só copiar o conteúdo abaixo em um arquivo texto com a extensão .ps1:

---------------------------------------------------------------------------------------

# Expandindo um VHD

param(

    [string]$vhdPath = $(throw "D:\Dados.vhd"),

    [string]$vhdSize = $(throw "2000")

)

# Tamanho em bytes

$MB = [System.UInt64] $vhdSize*1024*1024

#Obtendo a classe Msvm_ImageManagementService

$ImageMgtService =
get-wmiobject -class "Msvm_ImageManagementService" -namespace "root\virtualization"

# Criando o vhd dinâmico

$result = $ImageMgtService.ExpandVirtualHardDisk($vhdPath,$MB)

if($result.ReturnValue -eq 4096){

    $job = [wmi]$result.Job

    # esperando o job ser completado

    while($job.jobstate -lt 7){$job.get()}

    # Retornando o erro do job caso exista

    return $job.ErrorCode

}

# conclusão com sucesso do processo

return $result.ReturnValue

---------------------------------------------------------------------------------------

A primeira linha em vermelho mostra o caminho do arquivo vhd e a segunda o tamanho que você deseja aumentar (em MB).

Conclusão

Este artigo explicou como aumentar, converter e compactar um vhd do Hyper-V 2008 R2, ajudando a gerenciar, economizar e fazer o provisionamento de discos de uma forma mais amigável.

Leandro Carvalho

Leandro Carvalho - Leandro Carvalho trabalha em um parceiro na Australia como instrutor e engenheiro de sistemas em produtos Microsoft como Windows Server, virtualização, ISA Server, Exchange Server, System Center, CRM Server, Sharepoint e sistemas clientes, além de ajudar a comunidade constantemente com artigos, palestras e foruns.
Possui as certificações MCP/MCSA+M+S/MCSE+S/MCTS/MCITP/MCBMS, MCT e MVP Virtual Machine. No ano de 2009 ele ganhou o prêmio MCT Awards destaque do ano da América Latina e em 2010 o MVP awards especialista em virtualização.
Blog: http://msmvps.com/blogs/msvirtualization
Twitter: @leandroeduardo