【发布时间】:2016-05-11 06:27:33
【问题描述】:
我们使用 Azure 存储来存储大量小文件(每个约 200 字节)。这些文件中的每一个都位于块 blob 上。如果我将 1000 个此类文件存储在单独的块 blob 上,我的存储使用量是多少:1000 * 200 = 200KB 或 1000 * 4MB(块 blob 大小)= 4GB?存储仪表板上有很多信息,但是我找不到有关已用总空间的任何信息。
【问题讨论】:
我们使用 Azure 存储来存储大量小文件(每个约 200 字节)。这些文件中的每一个都位于块 blob 上。如果我将 1000 个此类文件存储在单独的块 blob 上,我的存储使用量是多少:1000 * 200 = 200KB 或 1000 * 4MB(块 blob 大小)= 4GB?存储仪表板上有很多信息,但是我找不到有关已用总空间的任何信息。
【问题讨论】:
它将是 200KB(所有文件的总大小)。
关于查找这些文件占用的空间总大小,您可以使用存储分析。 Blob 存储大小信息存储在$MetricsCapacityBlob 表中(请注意,这是一个特殊表,当您尝试列出存储帐户中的表时,结果中不包含该表)。您可以在此处找到有关此表架构的更多信息:https://msdn.microsoft.com/en-us/library/azure/hh343264.aspx。
如果您使用 .Net 存储客户端库,您可以使用以下代码找到某个日期的 Blob 存储大小:
var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var cloudAnalyticsClient = account.CreateCloudAnalyticsClient();
var yesterday = DateTime.UtcNow.AddDays(-1).Date;
var query = cloudAnalyticsClient.CreateCapacityQuery().Where(f => f.PartitionKey == yesterday.ToString("yyyyMMddT0000") && f.RowKey == "data").AsTableQuery();
var queryResult = cloudAnalyticsClient.GetCapacityTable().ExecuteQuery(query);
foreach (var item in queryResult)
{
Console.WriteLine(item.PartitionKey + " : " + item.RowKey + " : " + ((double)item.Capacity / (1024 * 1024 * 1024)) + " GB");
}
【讨论】: