.

Eu vou ...

Posts Recentes

Redes Sociais

Tags

Apoio


   
Global IT Community Association

Visitas

Locations of visitors to this page

Os meus Links

Arquivo

Novembro 2009 - Posts

Anexar discos Passthough via WMI (IDE ou SCSI)

Se deseja usar discos passthough com Hyper-V como vou anexar os discos? Que scripts utilizar? Bem, aqui está a resposta… Mas primeiro precisa decidir se vai para utilizar a controladora IDE virtual ou a controlador SCSI virtual. A controladora IDE é ideal se planear a inicialização a partir do disco de passthough ou se seu guest não suporta o adaptador SCSI virtual (Ex: Linux). O controlador SCSI é ideal se quiser adicionar/remover armazenamento da máquina virtual enquanto esta a ser executada (recurso do Hyper-V R2) ou se tiver mais de 4 discos que deseja adicionar. Anexar ao IDE ou SCSI é bastante semelhante – existe realmente apenas 1, diferença em negrito nos dois scripts abaixo, só tem que seleccionar a controladora correcta. Excepto se for usar o número do disco físico para Gestor de disco (não muito mau) ou se fornecer um ID de LUN quando criar o armazenamento (no caso de uma SAN), pode usar o que pode ser um pouco mais determinista.

 

Anexar discos Passthrough numa controladora IDE

$HyperVGuest = "Passthough Demo"

 

$VMManagementService = Get-WmiObject -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization"

$Vm = Get-WmiObject -Namespace "root\virtualization" -Query "Select * From Msvm_ComputerSystem Where ElementName='$HyperVGuest'"

 

$VMSettingData = Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$Vm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState"

 

$VmIdeController = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$VMSettingData} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_VirtualSystemSettingDataComponent" |`

                        where-object {$_.ResourceSubType -eq "Microsoft Emulated IDE Controller" -and $_.Address -eq 0}) 

 

$DiskAllocationSetting = Get-WmiObject -Namespace "root\virtualization" -Query "SELECT * FROM Msvm_AllocationCapabilities WHERE ResourceSubType = 'Microsoft Physical Disk Drive'"

$DefaultHardDisk = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$DiskAllocationSetting} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_SettingsDefineCapabilities" | `

                        where-object {$_.InstanceID -like "*Default"})

                       

$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where DriveNumber=2"

#$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where ElementName Like '%Lun 200%'"

 

$DefaultHardDisk.Parent = $VmIdeController.__Path

$DefaultHardDisk.Address = 0

$DefaultHardDisk.HostResource = $Disk.__PATH

 

$VMManagementService.AddVirtualSystemResources($VM, $DefaultHardDisk.PSBase.GetText(1)) | ProcessWMIJob $VMManagementService "AddVirtualSystemResources"

 

 

Anexar discos Passthrough numa controladora SCSI

$HyperVGuest = "Passthough Demo"

 

$VMManagementService = Get-WmiObject -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization"

$Vm = Get-WmiObject -Namespace "root\virtualization" -Query "Select * From Msvm_ComputerSystem Where ElementName='$HyperVGuest'"

 

$VMSettingData = Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$Vm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState"

 

 

$VmScsiController = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$VMSettingData} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_VirtualSystemSettingDataComponent" | `

                         where-object {$_.ElementName -eq "SCSI Controller"})

 

$DiskAllocationSetting = Get-WmiObject -Namespace "root\virtualization" -Query "SELECT * FROM Msvm_AllocationCapabilities WHERE ResourceSubType = 'Microsoft Physical Disk Drive'"

 

$DefaultHardDisk = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$DiskAllocationSetting} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_SettingsDefineCapabilities" | `

                        where-object {$_.InstanceID -like "*Default"})                    

$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where DriveNumber=2"

#$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where ElementName Like '%Lun 200%'"

$DefaultHardDisk.Parent = $VmScsiController.__Path

 

$DefaultHardDisk.Address = 0

$DefaultHardDisk.HostResource = $Disk.__PATH

$VMManagementService.AddVirtualSystemResources($VM, $DefaultHardDisk.PSBase.GetText(1)) | ProcessWMIJob $VMManagementService "AddVirtualSystemResources"

Como lidar com VMs e as quebras canal de segurança (secure channel) ao fazer snapshots.

Com a virtualização cada vez mais presente, a utilizações de cenários de teste utilizando o Hyper-V aumenta de uma forma significativa. Durante esses testes, a utilização de snapshots o tempo todo para proteger dos erros/teste e das falhas de alterações, é cada vez mais frequente. É um recurso fantástico, mas por vezes pode o colocar em problemas.

 

Em um mundo perfeito, quando estiver trabalhar com um cenário de teste que inclui um controlador de domínio e vários membros do domínio, ao necessitar de fazer um snapshot das máquinas virtuais, teria de fazer snapshot de todas as VMs utilizadas no cenário do ensaio e teria de fazê-lo, exactamente o mesmo tempo. Isto significa que todas as VMs iria ser salvas em uma configuração ideal.

 

O problema com esse mundo perfeito é que talvez queira uma única máquina para executar um teste e, em seguida, ser capaz de fazer rollback. Mas se não fizer snapshots de todas as VMs ao mesmo tempo, corre o risco de uma das máquinas virtuais alterar a sua senha de canal seguro (secure channel) durante o período de teste. Quando for reverter as alterações durante a sessão, e tentar fazer login, irá receber uma mensagem de erro dizendo que o relacionamento de confiança com o controlador de domínio está quebrado. A única opção é remover e adicionar novamente o computador ao domínio.

 

Existe uma solução para este problema. Pode desabilitar a conta do computador de alterar sua senha do canal seguro (secure channel), ou pode alterar a janela de alteração de senha para algo mais do que o padrão 30 dias. Ao fazê-lo eliminará o problema de não poder fazer logon. Agora, claro que gostaria de fazer isso em um ambiente de produção, mas não sem compreender totalmente as alterações e os riscos de segurança que advêm.

 

Para fazer a alteração, abra o editor da GPO (pode ser através do GPMC - Group Policy Management Console) e vá para

 

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\

 

Habilite a opção Domain Member: Disable machine account password changes ou edite a opção Domain Member: Maximum machine account password age e aumente o valor do padrão de 30 dias para um novo valor maior (até ao máximo de 999 dias)

 

Fazer uma destas opções deve impedi-lo de obter a mensagem de terrível que o canal seguro (secure channel) é quebrado.