Como marcar automaticamente a fita como livre no DPM 2012?

2

Eu tenho um servidor de backup executando o System Center Data Protection Manager 2012, conectado a algumas unidades de fita (sem biblioteca). Eu também tenho, claro, algumas fitas. A rotação da fita é manual.

A fita foi usada antes, pelo próprio DPM (mas o servidor foi completamente reconstruído) e por outros softwares de backup; eles não são vazios. Mas eles não contêm dados que o DPM conhece e / ou deseja preservar, portanto eles podem ser marcados como livres sem precisar executar forcefreetape.ps1 .

Quando uma fita é colocada na unidade, é necessário executar um inventário, reconhecê-lo como uma fita importada e marcá-lo como livre; caso contrário, o DPM simplesmente se recusará a usá-lo.

Como posso dizer ao DPM para tratar automaticamente as fitas importadas como gratuitas? E, é claro, eu não quero reutilizar as fitas de backup reais se, por acaso, elas forem colocadas nas unidades antes de sua data de expiração, portanto a solução deve marcar as fitas importadas como livres, mas não deve fazer o mesmo com fitas reais, não expiradas.

    
por Massimo 25.10.2012 / 10:34

3 respostas

2

Como de costume, é necessário um pouco de script ...

Import-Module DataProtectionManager

$Server = Get-Content env:computername

Get-DPMLibrary $Server | foreach {
    write-host
    write-host Starting inventory for library $_.UserFriendlyName

    $result = Start-DPMLibraryInventory -DPMLibrary $_ -DetailedInventory

    while (!$result.HasCompleted)
    {
        write-host -NoNewline "."
        sleep 1
    }

    write-host
    write-host Inventory complete for library $_.UserFriendlyName

    write-host Setting tape in library $_.UserFriendlyName as free

    Get-DPMTape $_ | Set-DPMTape -Free

    write-host Operation completed for library $_.UserFriendlyName
}
    
por 13.11.2012 / 17:48
0

O script a seguir procurará cada biblioteca de fitas online e marcará todas as fitas expiradas como gratuitas. Execute no seu servidor DPM.

$sw = [Diagnostics.Stopwatch]::StartNew()
Import-Module DataProtectionManager

$DPMServerName = Get-Content env:computername

if (!(Connect-DPMServer $DPMServerName)) 
{ 
    Write-Error "Failed to connect To DPM server $DPMServerName" 
    exit 1 
} 

$libraryList = @()
$libraryList = Get-DPMLibrary -DPMServerName $DPMServerName | where {$_.Status -eq 'Enabled'}
foreach ($library in $libraryList) 
{ 
    write-host
    write-host Starting inventory for library $library.UserFriendlyName
    write-host "This operation can take a long time, please be patient..."
    $result = Start-DPMLibraryInventory -DPMLibrary $library -DetailedInventory
    write-host
    write-host Inventory complete for library $library.UserFriendlyName
    write-host
    $expiredTapeList = @(Get-Tape -DPMLibrary $library | ? {$_ -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia] -and $_.DatasetState -eq "Recyclable"}) 
    if ($expiredTapeList.Length -gt 0) 
    { 
        $expiredTapeList #| Export-Csv -NoTypeInformation -Encoding UTF8 -Path $Exported_csv_path -Force
        Write-Host "Marking $($expiredTapeList.Length) tape(s) as free in $($library.UserFriendlyName)." 
        foreach ($expiredTape_ in $expiredTapeList)
        {
            Write-host "Setting tape Barcode $($expiredTape_.Barcode) in $($expiredTape_.Location) as free."
            Set-Tape -Tape $expiredTape_ -Free
        }
    } else {Write-Host "No Expired Tapes were Found in $($library.UserFriendlyName)" -ForegroundColor Red}

}
$sw.Stop()
Write-Host "'n Total job running time ...." $sw.Elapsed
    
por 19.11.2017 / 16:14
0

Eu estava tendo o problema EXACT SAME. O problema é que o script acima na resposta anterior não considera todos os dispositivos que podem estar associados ao DPM. A maneira que o script acima está escrito, leva o primeiro dispositivo com um ID de dispositivo de [0]. (O que geralmente é atribuído à unidade de fita e não à biblioteca). Portanto, você deve abordar o dispositivo adequado no script. Você pode emitir um comando Get-DPMLibrary para obter uma listagem de todos os seus dispositivos.

Get-DPMLibrary -DPMServerName " nome do servidor "

Isso listará todos os dispositivos associados ao DPM na ordem de menor número de dispositivo [0] a maior.

A biblioteca normalmente seria listada como a segunda entrada, que é a entrada 1, pois os dispositivos começam em 0 ....

(Observe o número do dispositivo e a linha de código 3 adicionada para a variável $ DPMLibrary)

Eu também removi " Get-DPMTape $ _ | Set-DPMTape -Free " Simplesmente não funcionou! Substituí-lo por:

$ Tape = Get-Tape -DPMLibrary $ DPMLibrary

Set-DPMTape -Tape $ Tape -Free

Nota: O Set-DPMTape -Tape $ Tape -Free Produzirá erros. (não se assuste). Tem a ver com fitas já sendo associadas a grupos de proteção. O código MARCARÁ todas as fitas como livres, no entanto.

(Então copie o script abaixo substituindo o seu ID de dispositivo) .... aproveite:)

Import-Module DataProtectionManager

$Server = Get-Content env:computername

$DPMLibrary = get-dpmlibrary -DPMServerName $Server

Get-DPMLibrary $Server | foreach {
    write-host
    write-host Starting inventory for library $DPMLibrary[2]

    $result = Start-DPMLibraryInventory -DPMLibrary $DPMLibrary[2] -DetailedInventory

    while (!$result.HasCompleted)
    {
        write-host -NoNewline "."
        sleep 1
    }

    write-host
    write-host Inventory complete for library $DPMLibrary[2]

    write-host Setting tape in library $DPMLibrary[2] as free

    $Tape = Get-Tape -DPMLibrary $DPMLibrary
    Set-DPMTape -Tape $Tape -Free

    write-host Operation completed for library $DPMLibrary[2]
}
    
por 29.08.2014 / 20:30

Tags