This might need some refinement, but this is what I put together to start with (the Orion.Volumes table only has one Disk Size field, it doesn't contain the history whille VolumeUsageHistory should):
SELECT v.node.Caption as [Server Name], v.Caption as [Disk Name], count(DISTINCT v.VolumeUsageHistory.DiskSize) as [Size Change Count]
FROM Orion.Volumes v
where v.Type = 'Fixed Disk'
group by v.node.Caption, v.Caption
order by [Size Change Count] desc
In my instance there are very many more size increases than I would normally expect, but that could be something else that I haven't looked into yet. Additionally you may want to filter out other drive types or be inclusive depending on your tastes as memory allocations (physical, virtual, etc) show up as volumes.
I had a similar use case that might help. I have a dashboard with two custom tables 'Volume utilization changed by 20% over 2 hours' and 'Volume utilization changed by 20% over 24 hours'.
Preview of table:
SELECT V.Node.NodeName, V.Caption
FROM Orion.Volumes V
WHERE ( V.VolumeType = 'Fixed Disk'
-- Modify the hours value on the line below to set time period
AND V.VolumeUsageHistory.DateTime >= ADDDATE('HOUR',-2, GETUTCDATE()) )
GROUP BY V.Node.NodeName, V.Caption
-- Modify the percentage utilisation value on the line below
HAVING (MAX(V.VolumeUsageHistory.PercentDiskUsed) - MIN(V.VolumeUsageHistory.PercentDiskUsed)) > 20