달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2015. 5. 7. 10:28

Storage Spaces Management Pack SystemCenter2015. 5. 7. 10:28

Microsoft의 스케일 아웃 파일 서버의 요소인 Storage Space 에 대한 관리 팩이 릴리즈 되었네요.

프로젝트 진행 시 관리 팩이 없어 PowerShell과 WMI를 이용해 별도의 관리 팩을 만들었었는데 이제 정식 관리 팩이 출시 되었으니 적용하면 될 것 같습니다.


Microsoft System Center Operations Manager Management Pack for Windows Server Storage Spaces 2012 R2

https://www.microsoft.com/en-us/download/details.aspx?id=46832





:
Posted by 커널64

System Center 2012 SP1과 R2에 대한 업데이트 롤업이 릴리즈 되었습니다. 자세한 내용은 아래 링크들을 참고하세요.


Update Rollup 8 for System Center 2012 Service Pack 1
http://support.microsoft.com/kb/2991990


Update Rollup 8 for System Center 2012 Data Protection Manager SP1 / UR8 for SCDPM 2012 SP1
http://support.microsoft.com/kb/2991995


Update Rollup 8 for System Center 2012 Operations Manager SP1 / UR8 for SCOM 2012 SP1
http://support.microsoft.com/kb/2991997





Update Rollup 4 for System Center 2012 R2
http://support.microsoft.com/kb/2992012


Update Rollup 4 for System Center 2012 R2 Data Protection Manager / UR4 for SCDPM 2012 R2
http://support.microsoft.com/kb/3009516


Update Rollup 4 for System Center 2012 R2 Operations Manager / UR4 for SCOM 2012 R2
http://support.microsoft.com/kb/2992020


Update Rollup 4 for System Center 2012 R2 Virtual Machine Manager / UR4 for SCVMM 2012 R2
http://support.microsoft.com/kb/2992024

:
Posted by 커널64

System Center 2012 R2 Configuration Manager (SCCM 2012 R2)의 누적 업데이트 3 릴리즈 정보입니다.



Description of Cumulative Update 3 for System Center 2012 R2 Configuration Manager
http://support.microsoft.com/kb/2994331/en-us


Description of Windows PowerShell changes in Cumulative Update 3 for System Center 2012 R2 Configuration Manager
http://support.microsoft.com/kb/2999304/en-us


:
Posted by 커널64
오랜만에 글을 올리는 것 같네요.

SCVMM 콘솔에서 VM에 대한 정보를 한 화면에서 보고자 할 때 기본적으로 제공되는 컬럼(속성) 외에 운영자 관점에서 보고자하는 값들이 있을 수 있습니다.
SCOM에서는 Management Pack을 개발해 추가할 수 있지만, SCVMM에서는 좀 더 쉬운 방법을 지원하고 있습니다.

바로 사용자 지정 속성이라는 값을 이용하는 방법입니다. 일단 예를 들어, 기본적으로 제공되지 않는 속성 중 IP 주소를 추가해 보도록 하겠습니다.

1) 아무 가상 머신을 선택한 후 속성 창을 열어 사용자 지정 속성 탭으로 이동해 '사용자 지정 속성 관리' 버튼을 클릭합니다.

 
2) 만들기 버튼을 클릭합니다.


3) 추가할 속성의 이름을 입력하고 확인 버튼을 클릭합니다.
 

4) 추가한 속성을 선택한 후 추가 버튼을 클릭하고, VM의 속성 창을 닫습니다.
 

5) 그런 다음, VM 목록이 표시되는 화면에서 컬럼 제목에 마우스 우클릭을 하면 다음과 같이 추가한 속성이 보입니다.



속성을 추가하는 방법은 간단합니다. 이제 VM마다 속성을 열어서 IP 주소를 수동으로 입력하면 되겠네요.
하지만, 그건 너무 손도 많이 가고 IT Pro 스럽지가 않죠. 우리의 PowerShell을 이용해 자동으로 입력해 보겠습니다.


Import-Module virtualmachinemanager

$CustomProperty = Get-SCCustomProperty -Name "IP 주소"

Clear-Host
$VM = Get-SCVirtualMachine

foreach ($Item in $VM) {
  $tmpIP = ""
  $tmpName = $Item.Name
  $tmpVMDesc = $Item.Description
  $tmpCustom = $Item | Get-SCCustomPropertyValue -CustomProperty  $CustomProperty
  $tmpVMNIC = $Item | Get-SCVirtualNetworkAdapter | Sort-Object -Property SlotId
  
  If ($tmpVMNIC) {
    foreach ($Item2 in $tmpVMNIC) {
      $IPv4 = $Item2.IPv4Addresses -Join ", "
      If ($IPv4 -ne $NULL -and $IPv4 -ne "") {$tmpIP = $tmpIP + $IPv4 + ", "}
    }
  }
  
  If ($tmpIP -ne $NULL -and $tmpIP -ne "") {$tmpIP = $tmpIP.Substring(0,$tmpIP.Length-2)}
  
  If ($tmpCustom.Value -ne $tmpIP -and $tmpIP -ne "") {
    Write-Host -fo White " - VM Name:"$tmpName
    Write-Host -fo White " - Description:"$tmpVMDesc
    Write-Host -fo White " - IP Address:"$tmpIP
    Write-Host -fo Yellow -NoNewLine `n" Updating ..." 
    $outNull = Set-SCCustomPropertyValue -CustomProperty $CustomProperty -InputObject $Item -Value $tmpIP
    $outNull = $Item | Refresh-VM
    Write-Host -fo Yellow " Completed!" `n`n
  }
}


위 스크립트는 IP 주소라는 사용자 지정 속성에 VM의 네트워크 인터페이스에 할당된 IP 주소를 자동으로 입력하는 스크립트입니다. 조금만 응용하시면, IP 주소 외에 VM의 여러 정보들을 사용자 지정 속성에 넣어 줄 수 있습니다.

저 같은 경우에는 IP 주소 외에 OS 이름(짧게), 저장된 위치(스토리지 정보)를 자동으로 입력해 주는 스크립트를 작성해 작업 스케줄러를 통해 자동으로 입력하도록 해 두었습니다.




:
Posted by 커널64
System Center 2012 SP1 VMM에서 업데이틑 롤업 1(UR1, Update Rollup 1) 설치 후 VMM 콘솔을 실행하면 다음과 같은 오류가 발생합니다.

다음 오류로 인해 추가 기능 파이프라인의 관리 코드를 업데이트할 수 없습니다.

'C:\Program Files\Microsoft System Center 2012\Virtual Machine Manager\bin\AddInPipeline\PipelineSegments.store' 경로에 대한 액세스가 거부되었습니다.


이 역시 SCVMM 2012 R2 UR1 때와 마찬가지로 아래 KB에 해당 내용이 있습니다.

Description of Update Rollup 1 for System Center 2012 Service Pack 1
http://support.microsoft.com/kb/2785682/en-us

해결 방법은 다음과 같습니다.
1. Locate the following folder:
C:\Program Files\Microsoft System Center 2012\Virtual Machine Manager\bin

2. Right-click the AddInPipeline folder, and then click Properties.
3. On the Security tab, click Advanced, and then click Continue.
4. Select the BUILTIN group, and then click Edit.
5. Click the Select a principal link, type Authenticated Users, and then click OK.
6. Click OK to close each dialog box that is associated with the properties.

 
:
Posted by 커널64
System Center 2012 R2 Update Rollup 1 설치 후 테넌트 생성 시 다음과 같은 오류가 VMM 콘솔에서 발생합니다.

VMM에서 심각한 예외가 발생하고 C:\ProgramData\VMMLogs\SCVMM.b3e07f83-a61b-436b-9a2a-ac445c48ea7b\report.txt에 예외 보고서를 만듭니다.
자세한 내용은 보고서를 참조하고, 잘 알려진 오류의 근본 원인을 직접 진단할 수 있도록 사용자 포럼을 검색해 보십시오.
ID: 20413

그리고, 오류 창에서 알려준 예외 보고서의 내용을 보다 보니 다음과 같은 오류 내용이 보이더군요.

...
Error report created 2014-04-07 오전 9:06:27
CLR is not terminating
...
EventType=VMM20
P1(appName)=vmmservice.exe
P2(appVersion)=3.2.7620.0
P3(assemblyName)=unknown
P4(assemblyVer)=0.0.0.0
P5(methodName)=unknown
P6(exceptionType)=Microsoft.VirtualManager.DB.CarmineSqlException
P7(callstackHash)=0

SCVMM Version=3.2.7620.0
SCVMM flavor=C-buddy-RTL-AMD64
Default Assembly Version=3.2.7620.0
Executable Name=vmmservice.exe
Executable Version=3.2.7510.0
Base Exception Target Site=140721029663448
Base Exception Assembly name=System.Data.dll
Base Exception Method Name=System.Data.SqlClient.SqlConnection.OnError
Exception Message=일반적인 데이터베이스 오류 때문에 VMM 데이터베이스에 연결할 수 없습니다.
SQL Server가 실행 중이고 올바르게 구성되어 있는지 확인하십시오. 그런 다음 작업을 다시 시도하십시오.
EIP=0x00007ffc3c4d5a88
Build bit-size=64

위 내용을 보고 데이터베이스 서비스를 확인해 보았으나 정상이었습니다. 다시 로그를 확인하던 중 다음과 같은 내용이 확인됩니다.
...
Microsoft.VirtualManager.DB.CarmineSqlException: 일반적인 데이터베이스 오류 때문에 VMM 데이터베이스에 연결할 수 없습니다.
SQL Server가 실행 중이고 올바르게 구성되어 있는지 확인하십시오. 그런 다음 작업을 다시 시도하십시오. ---> System.Data.SqlClient.SqlException: 프로시저 또는 함수 prc_RBS_UserRoleSharedObjectRelation_Insert에 너무 많은 인수가 지정되었습니다.
위치: System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
...

위 저장 프로시저와 관련된 내용을 검색하다 보니 알려진 이슈더군요...
역시 업데이트를 설치하기 전에는 꼭 릴리즈 노트 등을 읽어 보시는 것이 좋겠습니다.
저와 같은 실수를 범하시지 않길 바랍니다.

해결 방법은 해당 저장 프로시저를 수정하면 됨며, 관련 내용은 다음 링크를 참조하시면 됩니다.
Description of Update Rollup 1 for System Center 2012 R2 Virtual Machine Manager
http://support.microsoft.com/kb/2904712/en-us 

쿼리 내용은 다음과 같습니다.
/* script starts here */
ALTER Procedure [dbo].[prc_RBS_UserRoleSharedObjectRelation_Insert]
(
        @ID uniqueidentifier,
        @ObjectID uniqueidentifier,
        @ObjectType int,
        @RoleID uniqueidentifier,
        @UserOrGroup varbinary (85),
        @ForeignAccount nvarchar (256),
        @IsADGroup bit,
        @ExistingID uniqueidentifier = NULL OUTPUT
)
AS
SET NOCOUNT ON
     SELECT @ExistingID = [ID] FROM [dbo].[tbl_RBS_UserRoleSharedObjectRelation]
     WHERE [ObjectID] = @ObjectID AND [RoleID] = @RoleID 
  AND
  -- Select owner OR Select all which matches ForeignAccount or UserOrGroup OR
  -- both ForeignAccount and UserOrGroup is NULL  
  (([UserOrGroup] = @UserOrGroup OR [ForeignAccount] = @ForeignAccount) OR
  ([UserOrGroup] IS NULL AND @UserOrGroup IS NULL AND [ForeignAccount] IS NULL AND @ForeignAccount IS NULL))
      /* Ignore duplicate entries */
      IF (@ExistingID IS NULL)
      BEGIN
     INSERT [dbo].[tbl_RBS_UserRoleSharedObjectRelation]
               ([ID]
               ,[ObjectID]
               ,[ObjectType]
               ,[RoleID]
               ,[UserOrGroup]
               ,[ForeignAccount]
               ,[IsADGroup]
               ,[IsOwner]
               )
    VALUES
    (
            @ID,
            @ObjectID,
            @ObjectType,
            @RoleID,                        
            @UserOrGroup,
            @ForeignAccount,
            @IsADGroup,
            0
    )
      END
SET NOCOUNT OFF
RETURN @@ERROR
/* script ends here */




:
Posted by 커널64

Windows Azure Pack, 전체 이름은 Windows Azure Pack for Windows Server, 짧게는 WAP

WAP에서는 자동화라는 기능을 제공합니다. 이는 PowerShell 명령을 통해 WAP에 관련된 여러가지 일들을 처리할 수 있도록 해 주는 기능으로 Orchestrator의 Runbook과는 별개로 동작합니다.

하지만, 대부분 이미 Orchestrator에 익숙해져 있고, GUI를 통해 Runbook을 제작하고 사용하는 것이 운영 관점에서 수월할 수 있으므로, WAP의 자동화 기능을 통해, 즉, PowerShell을 통해 Orchestrator의 Runbook을 실행하는 방법을 설명합니다.

먼저, WAP 관리자 포탈에 로그인 한 후 자동화 메뉴로 이동합니다.



상단 메뉴에서 자산으로 이동한 후 아래의 설정 추가 메뉴를 차례로 클릭합니다.



자격 증명 추가를 클릭한 후 Orchestrator의 실행 권한을 가지는 계정 정보를 입력합니다.


자격 증명 추가를 완료한 후 아래의 새로 만들기를 클릭해 Runbook -> 빠른 생성을 차례로 클릭해 Runbook의 이름과 설명, 태그 등을 입력합니다. (주의: Runbook의 이름은 이후 변경할 수 없습니다.)


자동화 -> 해당 Runbook -> 작성자 -> 초안을 차례로 클릭해 Runbook 작성 메뉴로 이동합니다.


아래는 테스트에 사용한 Runbook 샘플입니다.
workflow Invoke-OrchRunbook-CreateEvent
{
    $SCOserverName = "Orchesrator 서버 이름"
    $PSCredName = "이전 과정에서 생성한 자격 증명 이름"
   
    $PSUserCred = Get-AutomationPSCredential -name $PSCredName
    $RunbookPath = "Runbook의 위치 및 이름"

    # Runbook의 위치는 최상위에 있는 경우 '\<Runbook 이름>'의 형태로 입력하면 되며,
    # 폴더 하위에 위치하는 경우에는 '\<폴더 이름>\<Runbook 이름>의 형태로 입력합니다.'

    $URL = Get-OrchestratorServiceUrl -server $SCOserverName
   
    $Param1 = "매개 변수 1"
    $Param1GUID = ""
    $Param2 = "매개 변수 2"
    $Param2GUID = ""
    $Runbook = Get-OrchestratorRunbook -serviceurl $URL -runbookpath $RunbookPath -credentials $PSUserCred
   
    Foreach ($Param in $Runbook.Parameters)
    {
        If ($Param.Name -eq $Param1) {$Param1GUID = $Param.Id}
        ElseIf ($Param.Name -eq $Param2) {$Param2GUID = $Param.Id}
    }
   
    [Hashtable] $Params = @{
        $Param1GUID = "매개 변수 1 값";
        $Param2GUID = "매개 변수 2 값";
    }
   
    $Job = Start-OrchestratorRunbook -runbook $Runbook -parameters $Params -credentials $PSUserCred
    $Job
}



:
Posted by 커널64
VBS VB 스크립트 기반 SCOM 모니터 - 장애 조치 클러스터의 실패한 클러스터 리소스 그룹 모니터링


'==========================================================
'Normal State: Property[@Name='State'] equals Normal
'Error State: Property[@Name='State'] equals Critical
'Alert Message: $Data/Context/Property[@Name='Message']$
'==========================================================

On Error Resume Next

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()

Set wshShell = WScript.CreateObject( "WScript.Shell" )

strHostName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Set wshShell = Nothing

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_ResourceGroup Where OwnerNode = '"&strHostName&"' And State = 2")

strFailedRes = ""
If colItems.Count <> 0 Then
  For each Item in colItems
    strFailedRes = strFailedRes & Item.Name & ", "
    Call oBag.AddValue("Failed Resource", Item.Name)
  Next
  Call oBag.AddValue("State", "Critical")
  If colItems.Count = 1 Then
    Call oBag.AddValue("Message", "There is a Failed Cluster Resource. '"&Left(strFailedRes,Len(strFailedRes)-2)&"'")
  Else
    Call oBag.AddValue("Message", "There are Failed Cluster Resources. '"&Left(strFailedRes,Len(strFailedRes)-2)&"'")
  End If
Else
  Call oBag.AddValue("State", "Normal")
  Call oBag.AddValue("Message", "There is no Failed Cluster Resource.")
End If

Set colItems = Nothing
Set objWMIService = Nothing

Call oAPI.Return(oBag)
Set oBag = Nothing 
Set oAPI = Nothing


 
:
Posted by 커널64
#####################################
 $ClusterName = "<Hyper-V 클러스터 이름>"
 $DPMServerName = "<DPM 서버 이름>"

 $PGPrefix = "<보호 그룹 접두어>"
 $VMPrefix = "<VM 이름 접두어>"
#####################################

If ($DPMServerName -notlike "*.$env:userdnsdomain")
{
  $DPMFQDN = $DPMServerName+".$env:userdnsdomain"
}
Else
{
  $DPMFQDN = $DPMServerName
}

Connect-DPMServer $DPMFQDN

$Cluster = Get-DPMProductionCluster $DPMFQDN | Where {$_.ClusterName -like "$ClusterName.*"}
$NotProtectedVM = Get-DPMProductionVirtualName $Cluster | Where {$_.MachineName -like "SCVMM*$VMPrefix*" -and $_.ServerProtectionState -ne "HasDatasourcesProtected"}

# 초기 복제 시간 설정 (밤 12시)
$tmpDate = Get-Date
$tmpDate = [String]$tmpDate.Year+"-"+[String]$tmpDate.Month+"-"+[String]$tmpDate.Day
$tmpDate = [DateTime]$tmpDate
$ReplicaCreationTime = [DateTime]$tmpDate.AddDays(1)

# 백업되고 있지 않은 VM을 보호 그룹에 추가
# 보호 그룹은 구성원 수가 가장 적은 그룹 선택
foreach ($Item in $NotProtectedVM)
{
  $TargetDS = $Item | Get-DPMDatasource -Inquire | Where {$_.ObjectType -like "*Hyper-V*"}
  If (! $TargetDS) {continue}
  Else
  {
    $TargetPG = Get-DPMProtectionGroup $DPMFQDN | Where {$_.Name -like "$PGPrefix*"} | Sort-Object -Property NumberOfShortTermDatasources,TotalDiskReplicaSize | Select-Object -First 1
    $MPG = Get-DPMModifiableProtectionGroup $TargetPG
    $NPG = Add-DPMChildDatasource -ProtectionGroup $MPG -ChildDatasource $TargetDS
    $DiskAlloc = Get-DatasourceDiskAllocation -Datasource $TargetDS
    Set-DatasourceDiskAllocation -Datasource $TargetDS -ProtectionGroup $MPG
    Set-DPMReplicaCreationMethod -ProtectionGroup $MPG -Later $ReplicaCreationTime
    Set-DPMProtectionGroup $MPG
  }
}


 
:
Posted by 커널64
2013. 8. 22. 14:00

Hyper-V 환경에서의 DPM 백업 관련 SystemCenter2013. 8. 22. 14:00

Hyper-V 기반의 서버 가상화 환경에서 일반적으로 DPM을 이용해 VM에 대한 백업을 수행합니다.
그런데, Windows Server 2012가 되면서 호스트 간 실시간 마이그레이션 뿐만 아니라 스토리지에 대한 라이브 마이그레이션 기능까지 지원하게 되면서 DPM 입장에서 VM의 호스트가 변경되거나 스토리지 위치가 변경되는 경우 백업이 실패하는 경우가 발생할 수 있습니다.
이러한 문제를 해결하기 위해 DPM 2012 SP1에서는 VMM과의 상호 작용을 통해 백업이 실패하지 않도록 하는 기능이 추가되었습니다.


DPM과 VMM의 연동(?) 구성 절차는 다음과 같습니다.

1. 대상 Hyper-V 호스트에 DPM 및 VMM 에이전트를 설치합니다.

2. DPM 서버에 VMM 콘솔을 설치합니다.

3. DPM 관리 셸(DPM Management Shell)을 실행한 후 다음 명령을 입력합니다.
Set-DPMGlobalProperty -DPMServerName <DPM 서버 이름> -KnownVMMServers <VMM 서버 이름>
* 참고: VMM 서버는 하나만 등록할 수 있습니다.

4. 입력이 정상적으로 되었는지 Get-DPMGlobalProperty -PropertyName KnownVMMServers 명령으로 확인합니다.
 

5. 서비스 콘솔에서 DPM-VMM 도우미 서비스(DPMVMMHelperService)가 시작되어 있는지 확인합니다.
* 참고: 해당 서비스는 시스템 계정으로 실행되므로, VMM에 적절한 권한을 부여합니다.
 


 
:
Posted by 커널64