giovedì 3 ottobre 2013

Horizon Mirage: spazio occupato

Horizon Mirage salva nel proprio storage, un'immagine compressa e deduplicata dei desktop che gestisce (CVD). Per conoscere la quantità totale di spazio storage occupato da tutte le snapshots conservate per tutti CVD basta connetersi alla mirage consle, cliccare SYSTEM CONFIGURATION > VOLUMES e calcolare la differenza tra CAPACITY e FREE SPACE:

Per conoscere la quantità di spazio occupata sugli HDD dei desktop gestiti nella console di mirage dobbiamo cliccare ASSIGNED DEVICES, e col tasto destro visualizzare le proprietà di un singolo CVD, ed anche qui possiamo confrontare la TOTAL SIZE con la FREE. Il problema è che non esiste un report con lo spazio occupato in totale su tutti gli HDD di tutti i CVD. Per conoscere questa informazione possiamo eseguire una query sul DB mirage:
IF OBJECT_ID('EscapeXmlCharacters')IS NOT NULL DROP FUNCTION EscapeXmlCharacters 

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

GO
CREATE FUNCTION EscapeXmlCharacters(@XmlTxt NVARCHAR(MAX))
RETURNS XML
AS
      BEGIN
      DECLARE @Result NVARCHAR(MAX);
      SET @Result = REPLACE(@XmlTxt,'&#x', '?')
      RETURN CAST(@Result as XML)
      END
GO

SELECT
       DiskInfo.[Device ID]
      ,DiskInfo.[Device Name]
      ,DiskInfo.[Cvd ID]
      ,DiskInfo.[Size of Drive C: (GB)]
      ,DiskInfo.[Free Space in Drive C: (GB)]
      ,"Used Space in Drive C: (GB)" = DiskInfo.[Size of Drive C: (GB)] - DiskInfo.[Free Space in Drive C: (GB)]
FROM
      (
            SELECT 
                    "Cvd ID" = Container.PvdId
                  , "Device ID" = Container.ID
                  , "Device Name" = Container.MachineName
                  , "Size of Drive C: (GB)" = ROUND(dbo.EscapeXmlCharacters(ContainerObjects.Characteristics).value('(/ContainerCharacteristics/MachineInventory/FixedDrives[@Name="C:\"]/@Totalsize)[1]','float')/ 1024 / 1024 / 1024 , 2 )
                  , "Free Space in Drive C: (GB)" = ROUND(dbo.EscapeXmlCharacters(ContainerObjects.Characteristics).value('(/ContainerCharacteristics/MachineInventory/FixedDrives[@Name="C:\"]/@Freespace)[1]','float')  / 1024 / 1024 / 1024 , 2 )
            FROM Container 
                  JOIN ContainerObjects On Container.ID = ContainerObjects.ID
             WHERE Container.PvdId <> 0
      ) As DiskInfo
ORDER BY DiskInfo.[Device ID] ASC



Nessun commento:

Posta un commento