快訊
2026-07-28
Windows教學

Windows 儲存空間 Storage Spaces 鏡像教學:雙硬碟建立與故障換碟

約 16 分鐘閱讀

⚡ 站長快讀:核心重點

  • 文章屬性:教學實戰
  • 適用系統:Windows 10 / Windows 11(cmdlet 規格對照 Windows Server 2016–2025 官方文件)
  • 難易度 / 耗時:⭐⭐⭐ / 約 40 分鐘(不含鏡像同步時間)
  • 核心結論:Storage Spaces 鏡像用兩顆硬碟互相備援,一顆掛了資料還在;但它防的是「硬碟壞掉」,不防誤刪、不防勒索軟體,更不是備份。
  • 適用對象:家用或工作室主機,有兩顆以上空白資料碟,想要單碟故障不掉資料的人

📌 快速答案

一句話答案:Storage Spaces 鏡像是把兩顆以上實體硬碟併成儲存集區,再切出雙向鏡像虛擬磁碟,同一份資料寫兩份,可容忍一顆硬碟故障;可用容量約為總容量的一半。

廣告

🧰 開始前的準備

  • 系統需求:Windows 10 或 Windows 11(用戶端版本內建儲存空間);PowerShell 以系統管理員身分執行
  • 權限需求:本機系統管理員
  • 需要硬碟:除了安裝 Windows 的那顆之外,另外至少 2 顆磁碟(官方用戶端說明的門檻);磁碟必須是空白、未格式化、上面沒有磁碟區的狀態(此項與下方 4 GB 下限同樣出自 Windows Server 部署文件;用戶端說明未載明,但官方狀態文件的 Insufficient capacity 一項也印證了「分割區佔住空間就無法入池」)。Windows Server 部署文件另載明每顆容量不得小於 4 GB——該份文件的適用範圍標示為 Windows Server,用戶端說明未載明同一數值,本文引用時一律標明出處
  • 磁碟介面:官方支援的磁碟類型包含 USB、SATA、SAS;但外接 USB 磁碟經常根本不會出現在儲存空間清單裡(原因見總結段),建議優先用直接連接的 SATA 磁碟
  • 控制器設定:若主機板或擴充卡具備 RAID 功能,必須整張切到非 RAID 模式並關閉所有 RAID 功能——Windows Server 部署文件寫得很白:Storage Spaces 只相容於「能完全停用 RAID 功能」的 HBA
  • 預計耗時:建立集區與磁碟區約 10 分鐘,鏡像同步視容量而定
  • 難度門檻:看得懂 PowerShell 指令即可,不需要寫腳本

⚠️ 執行前必讀:建立儲存集區會清除被選中磁碟上的所有資料。Windows Server 部署文件載明的前提就是「磁碟必須空白、未格式化」,這代表你如果拿一顆還有資料的碟進去,那些資料等同放棄。動手前請先把資料複製到別的地方,並確認電源穩定(建議接不斷電系統)。系統碟不能拿來做——官方明文:你無法用儲存空間來放 Windows 作業系統本身。


🔍 為什麼你需要這個?

硬碟不會先通知你才壞。SSD 主控燒掉、機械碟磁頭讀不到,通常就是開機後某個磁碟機代號直接消失。如果那顆碟裡放的是這幾年的照片、剪到一半的專案檔、公司的報價單,你當下能做的只剩送資料救援跟開價。

Storage Spaces 是 Windows 內建、不用另外買卡也不用買 NAS 的解法:把兩顆硬碟交給系統管理,系統把同一份資料同時寫進兩顆碟。一顆碟死掉的當下,磁碟機代號還在、檔案照樣打得開,你有時間慢慢去買新碟來換。微軟官方對它的定位是「儲存虛擬化技術」,並說它「概念上類似 RAID」——它把實體儲存硬體抽象成邏輯集區,不需要另外買 RAID 卡,集區元數據則寫在集區內的每一顆碟上。至於「換主機板之後還讀不讀得出來」,官方文件沒有做過任何承諾,這點本文不替它背書。

這篇要解決三件多數教學不講清楚的事:哪一種復原能力該選、換碟的正確順序、以及為什麼鏡像永遠不能取代備份。第三件事其實官方文件講得比誰都直接——當虛擬磁碟掉到 No redundancy 狀態時,官方給的處置只有一句:更換故障磁碟,然後從備份還原你的資料。官方文件的預設前提,就是你另外有一份備份。


🛠️ 實戰步驟

⚠️ 高風險操作警語:本節指令會清除磁碟資料並建立新的磁碟區。執行前務必:①完成資料備份 ②確認你選到的是要當資料碟的那幾顆、不是系統碟 ③若磁碟曾啟用 BitLocker,先確認你手上有復原金鑰。

🖱️ 不想碰指令的 GUI 路線:官方用戶端做法是——在工作列搜尋列輸入「儲存空間」並開啟,於 新增儲存集區 下按 新增,替集區命名、在 新增磁碟 勾選要用的碟後按 建立;接著替儲存空間命名,復原能力選 雙向鏡像(預設值),輸入這個儲存空間可成長到的最大容量後建立,最後填磁碟區標籤、指派磁碟機代號、選檔案系統並格式化。本文接下來走 PowerShell 路線,因為每個參數與狀態名稱都有官方 cmdlet 文件可查,也方便排進排程做定期檢查。

步驟一:確認哪些磁碟可以加入集區

先看系統認得幾顆碟、哪幾顆「可入集區」。以系統管理員開啟 PowerShell,執行:

# 列出所有實體磁碟,並顯示能否入集區與不能入的原因
Get-PhysicalDisk |
  Format-Table FriendlyName, MediaType, Size, CanPool, CannotPoolReason

CanPoolTrue 的才能用。若是 False,看 CannotPoolReason 這一欄對照官方定義:

CannotPoolReason意思怎麼處理
In a pool已屬於另一個儲存集區先從原集區移除,或重設該磁碟
Insufficient capacity通常是碟上還有分割區佔住空間刪除該碟上所有磁碟區(資料會消失)
Removable media被 Windows 判定為卸除式媒體官方不支援,換一顆固定式磁碟
Not healthy磁碟本身狀態不健康官方用語是「可能需要更換」,別拿它做鏡像

Insufficient capacity 是常見成因之一(官方只說明成因、沒有提供發生頻率統計)——很多人拿的是「已經用過、裡面有一個 NTFS 分割區」的舊碟,系統看到分割區佔住空間就判定不能入池。這時要先清掉該碟上的磁碟區,而這個動作會抹掉那顆碟上的一切,請務必再確認一次碟號。

廣告

只想看「乾淨可用」的碟,可以改用官方寫法:

Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $true

步驟二:建立儲存集區與雙向鏡像虛擬磁碟

Storage Spaces 的層次是三層:實體磁碟 → 儲存集區 → 虛擬磁碟(也就是「儲存空間」)→ 磁碟區。集區元數據會寫進集區裡的每一顆碟,所以集區的成員關係跟著硬碟本身走。

先建立集區。指令用參數雜湊表寫,避免一行太長:

$disks = Get-StoragePool -IsPrimordial $true |
         Get-PhysicalDisk -CanPool $true

$pool = @{
  FriendlyName                 = 'Pool1'
  StorageSubsystemFriendlyName = 'Windows Storage*'
  PhysicalDisks                = $disks
}
New-StoragePool @pool

💡 為什麼要這樣做? 官方範例是把所有 CanPool 的碟一次丟進集區。如果你機器上還有其他空白碟不想加入,請把 $disks 換成明確指定的磁碟清單,不要照抄「全選」。

接著從集區切出雙向鏡像的虛擬磁碟:

$vd = @{
  StoragePoolFriendlyName = 'Pool1'
  FriendlyName            = 'Mirror1'
  ResiliencySettingName   = 'Mirror'
  NumberOfDataCopies      = 2
  ProvisioningType        = 'Fixed'
  UseMaximumSize          = $true
}
New-VirtualDisk @vd

兩個關鍵參數:

  • NumberOfDataCopies = 2 就是雙向鏡像,資料存兩份。官方對三向鏡像的範例用的是 3,而三向鏡像集區內至少要五顆實體磁碟(熱備援碟不算在內),兩顆碟的機器做不到。
  • ProvisioningTypeFixed(固定佈建,建立當下就把容量從集區配走)與 Thin(精簡佈建,用多少配多少)。家用兩碟環境建議 Fixed:精簡佈建可以超額配置,官方也提醒你必須自己盯著剩餘空間,家用機沒人在盯,寫爆的時候才發現就來不及了。

步驟三:建立磁碟區並驗證結果

虛擬磁碟建好之後對 Windows 來說就是一顆「普通的磁碟」,還要初始化、分割、格式化:

廣告
Get-VirtualDisk -FriendlyName Mirror1 | Get-Disk |
  Initialize-Disk -PassThru |
  New-Partition -AssignDriveLetter -UseMaximumSize |
  Format-Volume -FileSystem NTFS -NewFileSystemLabel 'MirrorData'

檔案系統可選 NTFS 或 ReFS。家用資料碟建議 NTFS,相容性與工具支援最完整;不過官方也提到,鏡像空間若以 ReFS 格式化,Windows 會自動維護資料完整性,讓檔案更耐得住磁碟故障——重視完整性更甚於相容性的人可以考慮 ReFS。

驗證健康狀態:

Get-VirtualDisk |
  Select-Object FriendlyName, HealthStatus, OperationalStatus

Get-StoragePool -IsPrimordial $false |
  Select-Object FriendlyName, HealthStatus, OperationalStatus

兩者都要是 Healthy / OK 才算成功。 若虛擬磁碟顯示 Suboptimal(資料沒有平均寫在各碟上),官方處置是跑 Optimize-StoragePool 最佳化配置,這不算故障。


📊 四種配置怎麼選:官方磁碟數與代價對照

這是決定成敗的一步,選錯之後要改就得砍掉重練。以下數字全部取自微軟官方文件:

配置最少磁碟數容量代價適合情境
Simple(簡單)1 顆(用戶端說明:2 顆)幾乎無損耗暫存、可重建的資料;壞一顆就全毀
雙向鏡像2 顆約 50%一般家用資料碟、檔案分享
三向鏡像5 顆約 66%可容忍兩顆同時故障的重要資料
Parity(同位)3 顆(雙同位 7 顆)較鏡像省封存、備份倉儲、串流媒體等循序讀取用途

三點重點:

  1. 雙向鏡像要「至少兩顆」防單碟故障,三向鏡像要「至少五顆」防兩顆同時故障——不是很多人以為的三顆。這是官方明列的磁碟需求。
  2. 鏡像的寫入是每寫一次就複製一次,所以容量砍半是設計本身,不是浪費。相對地,鏡像的資料吞吐與存取延遲都優於同位配置。
  3. Simple 不要拿來放不可取代的資料。官方列的用途有兩類:「暫時或容易重建的資料」,以及「復原能力已由應用程式本身提供的高效能工作負載」。另外注意兩份官方文件門檻不同——Windows Server 部署文件寫「至少一顆」,用戶端說明則寫「簡單空間至少要兩顆才有意義」,家用情境請照後者。

🔧 硬碟壞了怎麼換:順序錯了會出事

這一節是本文的重點,也是家用情境最容易做錯的地方。

廣告

先看官方怎麼定義「這顆碟壞了」

用 PowerShell 查實體磁碟狀態:

Get-PhysicalDisk |
  Select-Object FriendlyName, HealthStatus, OperationalStatus

對照官方狀態表,以下幾種等於「請更換這顆磁碟」:

  • Predictive failure:磁碟自己回報快掛了 → 官方處置就一句話,更換磁碟
  • Failed media:磁碟已故障,Storage Spaces 不會再使用它 → 更換
  • Device hardware failure:硬體故障 → 更換
  • Lost communication:磁碟不見了 → 先確認線材與供電,重新連接;若無效則更換

另外兩個常被誤判成「壞掉」的暫時狀態要分清楚:IO errorTransient error 是暫時性錯誤,官方建議先讓它自己回到 OK,不行才用 Reset-PhysicalDisk 重設(這會抹掉該碟資料),再跑 Repair-VirtualDisk 還原復原能力,反覆發生才換碟。

正確的換碟順序

最重要的一點:獨立主機不會自動修復。 官方文件寫得很明確——Storage Spaces Direct(叢集版本)會在重新連接或更換磁碟後自動開始修復,而如果你不是用 Storage Spaces Direct,就必須自己執行 Repair-VirtualDisk。家用單機一律屬於後者。很多人換完碟看到磁碟區還能用就以為沒事,實際上虛擬磁碟還停在 Degraded,等於在沒有備援的狀態下裸奔。

建議順序如下(理想情況是舊碟還沒完全死、能先讀出資料時):

  1. 先確認備份存在。 換碟過程中若另一顆也出事,救不回來。
  2. 把新碟接上並確認可入集區(CanPoolTrue),然後加入集區:
$new = Get-PhysicalDisk -FriendlyName 'PhysicalDisk3'
Add-PhysicalDisk -StoragePoolFriendlyName Pool1 -PhysicalDisks $new
  1. 把要退役的舊碟標記為 Retired,讓系統不再往它身上配置新資料:
Set-PhysicalDisk -FriendlyName 'PhysicalDisk2' -Usage Retired

-Usage 在官方文件的 Accepted values 欄位列出 AutoSelectManualSelectHotSpareRetiredJournal 五項(同一頁的說明文字另含 Unknown),其中 Retired 就是退役用途——要注意官方 cmdlet 文件只列出可接受值、沒有逐一定義每個值的行為,這句是本文依實務給的解讀。

  1. 執行修復,把資料重建到新碟上:
Repair-VirtualDisk -FriendlyName Mirror1

大容量的修復會跑很久,可以加 -AsJob 丟到背景。修復期間請不要關機。

  1. 修復完成、虛擬磁碟回到 Healthy 之後,才把舊碟移出集區:
Remove-PhysicalDisk -StoragePoolFriendlyName Pool1 -PhysicalDisks $old

官方對 Remove-PhysicalDisk 的說明是:它會告訴 Storage Spaces 把該碟上的資料搬到集區內其他磁碟。所以順序千萬不要顛倒——先移除再修復,等於在備援已經缺一角的狀態下再抽走一顆。

🖱️ GUI 對應做法:按 Windows 鍵搜尋「儲存空間」並開啟 管理儲存空間,點 實體磁碟機,找到要移除的那顆選 準備移除。準備期間請讓電腦保持插電、也別讓它睡著,該碟上的檔案會被複製到集區內其他磁碟,依資料量可能要跑好幾個小時;狀態變成 可移除 之後再按 移除,才能把碟拔下來。官方另有提醒:若集區可用空間不足以容納那顆碟上的資料,準備移除會失敗——這時要先加一顆不小於它的新碟再試一次。

💡 想省事的做法:集區建立時就可以指定一顆熱備援碟(Add-PhysicalDisk -Usage HotSpare),讓它平常閒置、故障時頂上。代價是那顆碟平常不貢獻任何容量。

如果碟已經完全死掉了

那就跳過第 3 步:接上新碟 → 加入集區 → 直接 Repair-VirtualDisk → 最後把已失聯的舊碟移除。虛擬磁碟的健康狀態若是 Warning、操作狀態顯示 DegradedIncomplete,代表還讀得到至少一份資料,照上面修就會回來。注意 Incomplete 這個字在官方文件出現在兩個地方:Warning 狀態下的 Incomplete 是「復原能力降低但資料讀得到」;若它是以 Detached 的原因出現,意思則相反——磁碟數量已經不足以讀取該虛擬磁碟。

但如果狀態是 No redundancy,官方定義是「故障磁碟數量太多,虛擬磁碟已經遺失資料」,處置只有一條:換掉故障磁碟,然後從備份還原。同理,Detached + Majority Disks Unhealthy 的情境下,官方也明講:若故障磁碟數超過你的資料副本數、而且中間沒有修復過,虛擬磁碟上的所有資料就是永久遺失,只能刪掉重建再從備份還原。

這就是為什麼鏡像不等於備份。 鏡像防的是「其中一顆硬碟壞掉」這一種故障;它不防誤刪(兩份一起刪)、不防勒索軟體加密(兩份一起加密)、不防檔案改壞(兩份一起壞)。真正的資料保護請照 3-2-1 備份原則做,並搭配 Windows 內建的 檔案歷程記錄保留版本。至於硬碟本身出現前兆時怎麼判讀,可以參考 stornvme Event 129 的排查方式


🔬 底層機制:鏡像掉電為什麼不會壞掉整個陣列

鏡像空間會使用髒區追蹤(Dirty Region Tracking,DRT)記錄集區內磁碟被修改的區域。系統從非計畫性關機(跳電、當機)恢復、儲存空間重新上線時,DRT 會讓集區內各磁碟彼此回到一致狀態,不必像傳統陣列那樣整盤重新校驗。

同位配置走的是另一條路:它用日誌(journaling)提升復原能力,目的一樣是在非計畫性關機發生時避免資料毀損。另外一件事要分開講——官方載明同位的寫入效能較低,原因是計算並寫入同位資訊的額外負擔,跟 journaling 不是同一回事。

順帶一提,集區狀態若變成 Read-only + Incomplete,代表集區失去仲裁(多數磁碟故障或離線),Storage Spaces 會自動把集區設成唯讀保護資料。重新接回磁碟後,官方在這個情境給的復原指令帶有 -IsPrimordial $False(別漏了,不帶那個參數的版本是給「管理員自己把集區設成唯讀」那種情境用的):

Get-StoragePool <PoolName> -IsPrimordial $False |
  Set-StoragePool -IsReadOnly $false

🔙 萬一翻車:回退步驟

情境一:磁碟區建好了,但容量比預期少一半

這不是故障,是雙向鏡像的設計——約 50% 的容量開銷是官方載明的代價。若你要的是容量而非備援,得刪掉虛擬磁碟改建 Simple 或 Parity 配置,刪除虛擬磁碟等於刪除上面的資料,請先把資料搬走。

情境二:虛擬磁碟顯示 Detached、開機後磁碟機代號不見

先確認不是被設成手動連接。官方處置:

Get-VirtualDisk |
  Where-Object { $_.OperationalStatus -eq 'Detached' } |
  Connect-VirtualDisk

要讓所有非叢集虛擬磁碟在 Windows 重啟後自動附加:

Get-VirtualDisk | Set-VirtualDisk -IsManualAttach $false

情境三:想整組拆掉、把硬碟還原成一般磁碟

順序是:先把資料完整複製到別的地方 → 刪除磁碟區 → 刪除虛擬磁碟 → 刪除儲存集區。集區與虛擬磁碟一旦刪除,上面的資料不可能救回來,這一步沒有回頭路,請務必確認備份可讀取之後再動手。

停止條件清單(符合任一,請勿繼續)

  • 手上沒有可讀取的備份
  • 不確定哪一顆是系統碟、哪一顆是要加入集區的資料碟
  • 磁碟曾啟用 BitLocker 而你沒有復原金鑰
  • 這台是公司或學校控管的設備,而你沒有 IT 授權
  • 指令輸出與本文描述不符(例如 CanPool 全是 False),卻打算「先做做看」

💡 總結:兩顆碟的人該怎麼做

站長我的建議很直接:兩顆碟的家用機,做雙向鏡像+固定佈建+NTFS,就是最省事又不會出錯的組合。 你付出的代價是官方載明的約 50% 容量開銷,換到的是「一顆碟死掉當下,檔案照樣打得開」。

但請把這件事記牢:鏡像買到的是時間,不是保險。 官方文件在資料遺失情境下給的處置全部指向同一句話——從備份還原。所以正確的家用配置應該是「鏡像扛硬體故障 + 另一份離線備份扛誤刪與勒索軟體」,兩者缺一不可。

最後兩個實務提醒。第一,外接 USB 碟不見得能用:官方支援的介面雖然含 USB,但支援頁也直說,很多 USB 外接盒與集線器會多一層抽象,讓 Windows 把磁碟認成卸除式、或把好幾顆碟藏在同一個裝置識別後面,而這類磁碟 Storage Spaces 設計上就會排除——官方強調這是預期行為、不是 Windows 的 bug;而且官方把話講得很精確——當限制來自硬體(外接盒、集線器)本身時,重灌、更新驅動或改電源設定都不會改變磁碟的可用性。想事先確認,就到裝置管理員或磁碟管理裡點「磁碟本身」(不是磁碟區),看 Windows 報的是固定式還是卸除式;直接連接的 SATA 磁碟通常沒問題。第二,定期查健康狀態,別等到開不了機才發現。把下面這行排進工作排程器每週跑一次,有異常就會看得到:

Get-PhysicalDisk |
  Where-Object { $_.HealthStatus -ne 'Healthy' }

最後說明本文的來源口徑:磁碟數量、容量代價與 cmdlet 規格,同時對照了 Microsoft Learn 的 Windows Server 儲存空間文件與 Microsoft 支援中心的用戶端「Storage Spaces in Windows」頁面。兩者門檻不一致之處(例如 Simple 的最少磁碟數),本文以用戶端說明為準,並已在該處標註差異。


❓ 常見問題

Q:兩顆不同容量、不同廠牌的硬碟可以做鏡像嗎?

可以混,官方沒有要求同型號,支援的磁碟類型也涵蓋內接與外接、HDD 與 SSD。不過一級官方文件並未載明混用不同容量磁碟時的可用容量計算方式,本文不做斷言;保險起見,兩顆碟的情境建議買同容量,免得大碟多出來的空間能不能用還得靠猜。

Q:做了鏡像還需要備份嗎?

需要,而且這不是可選項。鏡像只防硬碟故障;誤刪、病毒加密、檔案改壞這三種情況,兩份資料會同時遭殃。官方文件在資料遺失情境的處置寫的就是「從備份還原」。

Q:換碟之後為什麼容量或狀態沒有恢復?

因為獨立主機不會自動修復。官方明訂只有 Storage Spaces Direct 會在更換磁碟後自動開始修復,一般 Windows 單機必須手動執行 Repair-VirtualDisk。跑完並確認 HealthStatus 回到 Healthy 才算真的修好。

Q:可以把 Windows 裝在儲存空間上嗎?

不行。官方明文說明:你無法使用儲存空間來裝載 Windows 作業系統。系統碟請另外準備一顆。

Q:新碟接上去卻顯示不能加入集區怎麼辦?

CannotPoolReason。常見成因之一是 Insufficient capacity,通常代表碟上還有分割區佔住空間,要先刪掉該碟上的所有磁碟區(該碟資料會全部消失);另一種是 Removable media,代表 Windows 把它判定為卸除式媒體——USB 外接盒最容易踩到這個,官方明講那是設計上的排除、不是 bug。


📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準。本文為官方文件交叉查證之整理,非第一手硬體實測。

🔗 延伸閱讀

📅 本文查證戳記:2026-07-28 依據 Microsoft Learn 官方文件撰寫。

若你在後續版本遇到步驟失效,歡迎在留言區回報,站長會更新文章。


廣告