Em volumes deduzidos, como posso determinar o espaço usado em uma pasta com Measure-DedupFileMetadata

4

Estou tentando entender como o Measure-DedupFileMetadata funciona para que eu possa recursivamente passar por algumas pastas para relatar quanto espaço é realmente usado. Eu não sei como interpretar a saída.

Se eu entendi a documentação corretamente, o DedupDistinctSize deve informar quanto espaço é liberado se eu excluir esses arquivos (após a coleta de lixo). Esses números parecem precisos para a maioria das minhas pastas. Mas nas pastas em que a deduplicação ainda não ocorreu, ela mostra 0.

Eu também não sei como entender as informações do SizeOnDisk.

Aqui está a saída para duas pastas:

Path                    : {E:\veeam\folder1}
Volume                  : E:
VolumeId                : \?\Volume{77da8d6d-1416-4d2a-8c85-75c91f980398}
FilesCount              : 19
OptimizedFilesCount     : 3
Size                    : 2.38 TB
SizeOnDisk              : 1.81 TB
DedupSize               : 491.38 GB
DedupChunkCount         : 6786488
DedupDistinctSize       : 475.59 GB
DedupDistinctChunkCount : 6561011

Path                    : {E:\veeam\folder2}
Volume                  : E:
VolumeId                : \?\Volume{77da8d6d-1416-4d2a-8c85-75c91f980398}
FilesCount              : 18
OptimizedFilesCount     : 0
Size                    : 332.7 GB
SizeOnDisk              : 332.7 GB
DedupSize               : 0 B
DedupChunkCount         : 0
DedupDistinctSize       : 0 B
DedupDistinctChunkCount : 0
    
por Dan Buhler 10.04.2017 / 19:49

1 resposta

2

Eu fiz alguns testes deduzindo vários tipos de dados e minha conclusão é que o espaço real usado é SizeOnDisk + DedupDistinctSize.

Para que pareça bonito e mostre em GB, use uma propriedade calculada:

Measure-DedupFileMetadata -Path e:\folder1 | Select Path, @{label="TotalGB"; expression={[math]::Round(($_.SizeOnDisk + $_.DedupDistinctSize) / 1GB, 0)}}

E aqui está como fazer o script e criar uma tabela classificada em um arquivo de texto:

$Folders = @()
foreach ($folder in (Get-ChildItem -Path E:\ -Directory))
{
    Write-Host -NoNewline "Calcuating $($folder.FullName): "
    $Result = Measure-DedupFileMetadata -ErrorAction Continue -Path $folder.FullName
    $Folders += $Result
    Write-Host $Result.DedupDistinctSize
}

$Folders | Select {$_.Path[0]}, @{label='DedupDistinctSizeGB'; expression={[math]::Round($_.DedupDistinctSize / 1GB, 0)}}, @{label='SizeOnDiskGB'; expression={[math]::Round($_.SizeOnDisk / 1GB, 0)}}, @{label="TotalGB"; expression={[math]::Round(($_.SizeOnDisk + $_.DedupDistinctSize) / 1GB, 0)}} | Sort TotalGB -Descending | Format-Table -AutoSize | Out-File -FilePath 'Dedup_Summary.txt' -Append

A saída é semelhante a:

$_.Path[0]                                       DedupDistinctSizeGB SizeonDiskGB TotalGB
----------                                       ------------------- ------------ -------
E:\veeam\xxxxxxx                                                3868         2178    6045
E:\veeam\xxxxx                                                   840         3712    4553
E:\veeam\xxx                                                     801         3244    4044
E:\veeam\xxxxxxxxxx                                              683         1213    1896
E:\veeam\xxxxxxxxxxxxxx                                           41         1636    1678
E:\StorageCraft\xxxxxxx                                         1537           56    1593

Não sei por que esse comando é tão lento, mas demorou mais de uma semana para ser executado em um volume de 50 TB.

    
por 14.04.2017 / 20:08