2012-06-22 81 views
0

我有一個關於WMI和存儲空間的問題。Windows 8存儲空間WMI錯誤

設置: 我創建了一個存儲池,其中包含一個虛擬磁盤,該虛擬磁盤又包含3個物理磁盤。我使用奇偶校驗,這需要我至少有三個磁盤來創建虛擬磁盤。我在使用VS 2012的Windows 8計算機上使用C#。

問題: 我將第四個磁盤插入計算機並嘗試使用WMI將其添加到虛擬磁盤。 AddPhysicalDisk方法返回一個'緩存過期(40003)'錯誤。我只在收到事件後才查詢和檢索MSFT_VirtualDisk的實例,這是我在其上執行的第一個操作。有人能告訴我爲什麼會出現這個錯誤嗎?

其他數據: 我試圖使用相同的物理磁盤來擴展池,而不是虛擬磁盤,這工作正常。該方法的問題是,我無法展開虛擬磁盤以將附加磁盤放入圖片中。

回答

0

有幾件事情,你可以嘗試:

  • 您已經添加了這4個部分的物理磁盤使用「AddPhysicalDisk」方法的存儲池?如果沒有,你必須將它添加到池中。這就是存儲空間如何知道可以使用磁盤。
  • 您是否使用「PhysicalDisksToUse」參數創建虛擬磁盤?如果是,您仍然需要先將其添加到池中。一旦進入池,然後嘗試在虛擬磁盤上使用AddPhysicalDisk。

請注意,PhysicalDisksToUse是一種進一步限制池內分配的方法。如果您希望虛擬磁盤自動使用所有可用存儲,請在創建虛擬磁盤時省略此參數。

根據錯誤代碼(有時可以將其視爲「未找到」)判斷,您可能沒有先將物理磁盤添加到池中。

+0

謝謝你的回答!我曾嘗試將磁盤首先添加到存儲池,但導致AddPhysicalDisk返回「無效參數(5)」。我用與用於通過查詢MSFT_PhysicalDisk將磁盤添加到存儲池的相同磁盤引用以及全新的磁盤引用進行了嘗試。我沒有使用PhysicalDisksToUse創建虛擬磁盤,我需要虛擬磁盤佔用池中的整個存儲空間,所以我讓它使用了可用的最大空間。我是否需要使用PhysicalDisksToUse?我使用鏡像和固定大小的事實也可能起一部分作用。 – Zomb

+0

哪一個AddPhysicalDisk調用失敗且參數無效? StoragePool?或虛擬磁盤?如果是VirtualDisk調用,如果您在創建磁盤時沒有使用PhysicalDisksToUse,則會出現這種情況。如果您沒有特定的理由來精確控制虛擬磁盤的分配,那麼我會忽略PhysicalDiskStoUse參數以及VirtualDisk類上的Add/RemovePhysicalDisk方法。 –

+0

我意識到錯誤是因爲我最初並沒有添加物理磁盤,而是能夠修復它。我試圖添加特定磁盤的原因就是出於這個原因。如果我用兩個1TB HDD從頭開始創建一個虛擬磁盤,我會得到一個1TB大小的驅動器。如果我從頭開始使用3,我會得到1.5T的驅動器。如果我創建一個有兩個磁盤的虛擬磁盤,然後嘗試添加第三個磁盤,我無法將磁盤從1 TB擴展到1.5。在我添加第四張磁盤後,唯一擴展的時間是2TB。厚配置可能會阻止擴展? – Zomb

1

「與鏡像2個1TB硬盤」

這裏的漁獲,你要創建一個鏡像虛擬磁盤
創建鏡像時,SSP將使用帶有n列的條帶集在所有物理磁盤上進行條帶化。 「n列」的原因很重要,因爲如果你想添加更多的磁盤到集合中,你需要匹配列數來完成它。 通過查看虛擬磁盤的屬性來檢查列數。然後使用這個小公式:

「最小無磁盤的擴展集」 = n列×n個數據副本

因此,如果你創建具有2個磁盤的反射鏡你將結束與1列和2數據拷貝,因此爲了擴展這個集合,你需要提供1 * 2 = 2個磁盤。這就是爲什麼在添加第3張磁盤時無法將其擴展到1.5TB的原因,您需要添加2個新磁盤來擴展它。