2015-11-23 98 views
0

下面我功能與外部其計算的blob容器大小的Blob容器大小的Azure存儲計算

function getBlobContainerSize(container, callback) { 
    storageClient.listBlobsSegmented(container, null, null, function(error, result) { 
     var length=0,counter=result.entries.length; 
     for (var i = 0; i < result.entries.length; i++) { 
      getBlobSize(container, result.entries[i].name, function(size){ 
       length+=size; 
       if(--counter===0) callback(length); 
      }); 
     }; 
    }); 
} 
function getBlobSize(container, blob, callback){ 
    storageClient.getBlobProperties(container, blob, function(err, result, response) { 
     if(result==null) callback(0); 
     else callback(parseInt(result.contentLength)); 
    }); 
} 

,結果是一個特定容器20907510,並且在Azure存儲資源管理器中,我看到84.03M。糾正我,如果我錯了,但這兩個是不同的64MB,Azure存儲資源管理器顯示更多MB與我的功能相比。

回答

0

考慮到您使用的是標準存儲,您用於計算容器大小的方法可能不是Azure存儲爲您指定的大小。對於標準存儲中的頁面和塊blob,存儲數據的Azure存儲帳單。更詳細的信息可以在這裏找到: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx

您的方法會給你的容器中所有blob的內容長度的總和。 Azure存儲可能仍然會以較少的費用爲您計費。

+0

嗯,Azure存儲資源管理器告訴我他們有多少計費? –

+0

我不這麼認爲。 請參閱我之前分享的博客,按照公式\步驟來計算大小。如果您使用塊blob並且沒有快照,那麼獲取球場號碼應該相當容易。 頁面blob和快照可能會非常棘手,因爲Azure存儲不會爲空白頁面範圍計費,並且任何數據會兩次......並且您將不得不跟蹤此類頁面以便能夠正確預測實際大小。 – ASB