本博文中,我们将深入介绍 Windows 8 开发人员预览版中的一项功能。存储空间功能将显著增加您在家中(和工作场所)管理大规模数据存储的能力。
我们尝试过各种存储解决方案,范围从 JBOD 阵列到 RAID Box 或 NAS Box。我们中的许多人曾使用过 Windows Home Server Drive Extender,并希望能够找到一种与 NTFS 体系结构关系更紧密,同时更直接与 Windows 集成的方案。这些正是我们在构建 Windows 8 存储改进时拟定的目标,而存储空间功能便是针对上述目标开发出的解决方案。当然,您正在使用的原有解决方案在 Windows 8 中将仍然有效,但我们相信您会喜欢上这项新功能和灵活的体系结构。我们在下周将重点讨论消费电子产品,想象一下我们所存储的大量照片(尤其是超大的数字底片)和视频,您一定会发现此功能简直是雪中送炭。存储和文件系统团队的小组项目经理 Rajeev Nagar 将在本博文中详细介绍这项新功能。
在之前的博文中,我们多次发现读者曾尝试列举一些极端情况或设计缺陷。在本博文的末尾,我们尝试加入了一个常见问题解答板块,以便更好地与大家展开对话 🙂 常见问题解答中还介绍了将 PowerShell 作为存储空间工具使用的巨大潜力。
–Steven
我不得不承认,自己是个数据收集狂。我所收集的数据一直在不断膨胀,这些数据中包含许多无可取代的宝贵回忆,包括我的孩子们从出生到现在的各种照片和家庭录像。长久以来,我都在探寻一种可靠、可扩展并且易于使用的解决方案,以便充分利用不断增加的 USB 驱动器。此外,我还希望能够在硬盘不时发生故障的情况下,确保数据始终获得保护。
Windows 8 通过一种名为存储空间的新功能实现了上述目标。简而言之,存储空间提供的功能包括:
- 将物理磁盘组织为存储池,您只需添加磁盘便可轻松对存储池进行扩展。这些磁盘可以通过 USB、SATA(串行 ATA)或 SAS(串列 SCSI)进行连接。一个存储池可由多个异构的物理磁盘(即通过不同存储互联方式访问的大小不一的物理磁盘)构成。
- 使用在所有方面都和物理磁盘别无二致的虚拟磁盘(也称为空间)。此外,Windows 8 中还具有许多与空间相关的新功能,例如:精简配置(下文将进行详述),以及预防底层物理介质故障的复原功能。
在开始进一步深入介绍存储空间之前,我希望先为您提供一些简单的背景知识:有些人可能曾经使用过(或仍在使用)已弃用的 Windows Home Server Drive Extender 技术。存储空间无意逐个功能的替代该专业解决方案,但确实实现了其许多核心要求。同时,它也是对始于 NTFS 的 Windows 存储平台的基础强化。存储空间可满足多样化的需求,部署跨度从家中的一台 PC,直到规模极大的企业数据中心。
池和空间
下图展示了存储池的概念。您可以看到,我们挑选了一对 2TB(请注意,我们使用了市场中常见的字节量度)的 USB 磁盘,并将其“编为一个存储池”(逻辑而言)以供后续使用。
我们可以从此存储池中创建一个或多个空间。请注意,一旦将物理磁盘添加到存储池,它们将无法再由 Windows 的其他功能继续使用,系统对这些磁盘进行了虚拟化,即完全将其分配给存储池。虽然我们称其为“虚拟化”,但该功能提供的存储和可靠性是非常真切的。您可以从此池中创建空间,以便利用可用的存储容量。在下图中,我们从“我的家庭存储池”中划分出了一个这样空间。
这个虚拟磁盘可以像常规物理磁盘一样使用,您可以对其进行分区、格式化,并开始向其中复制数据。但是,您将注意到,该空间还具有一些有趣的特性:
- 该空间逻辑容量显示为 10TB,但池中的底层物理磁盘只有 4TB 的总原始容量。因此,您无需预先担心容量问题。
- 复原通过关联镜像属性来植入,即将空间中包含的所有数据在至少两个不同的物理磁盘中保存至少两份副本。由于该空间已经过镜像,即使该池中的一个物理磁盘发生故障,空间也将继续正常工作。
帮助我们从 4TB 的总原始容量中创建 10TB 镜像空间的魔法称为精简配置。精简配置将确保实际容量仅在您决定使用时才会为空间保留,例如,当您向空间的卷中复制某些文件时。当您删除文件或应用程序不再需要此类容量时,系统可以安全地回收之前已分配的物理容量。这些回收的容量之后可供该空间,或从同一池中划分出的其他空间使用。我们通过底层文件系统 (NTFS) 和存储空间之间的体系结构协作实现了上述目标。
借助精简配置,您可以基于按需分配扩大池中的物理容量。随着您不断向池中复制文件并接近可用物理容量的上限,存储空间将弹出一条通知,告知您需要添加更多容量。您只需购买额外的磁盘并将其添加到现有池中,即可实现容量的扩充。
在上图中,您可以看到,我们通过购买并添加四个 3TB 的磁盘,扩充了“我的家庭存储池”的原始容量,当然,您也可以将 SATA 和/或 SAS 连接与 USB 连接的物理磁盘混合使用,并借此扩充池容量。一旦将物理容量添加到池中,您便可以高枕无忧地使用了。我们可以不断向池中的空间复制文件或其他数据,此空间会自动扩充以利用所在池中的全部可用容量,直至达到 10TB 的最大逻辑容量。如果需要,您当然也可以增加空间的最大逻辑容量。
您不需要针对每个所创建的空间专门指定其应使用的 USB 磁盘。在后台中,存储空间会针对从该池划分出的所有空间,以最优的方式管理存储池中每个物理磁盘的容量。
另一个与空间关联的核心(也为可选)属性是预防组成存储池的物理磁盘发生故障的复原功能。例如,我们在上文中展示了一个镜像空间(即关联了镜像复原属性的空间)。此镜像设置可确保我们始终在池中的不同物理磁盘上存储至少两份(最好是三份)数据的完整副本。这样,在磁盘局部或整体发生故障的情况下,您也无需担心丢失数据。事实上,组成该池的物理磁盘甚至对于 Windows 的其他组件或 PC 上运行的应用程序来说根本不可见。换言之,即使池中的某些物理磁盘发生故障,也完全不会对其他 Windows 组件或应用程序产生影响。它们将继续在空间中运行,而事实上是存储空间在后台默默地维持着数据的可用性。此外,当发生磁盘故障时,只要该池中具有足够的可用替代物理磁盘,存储空间就将针对所有受到影响的空间自动生成数据副本。
通过镜像复原
您也许有兴趣进一步了解数据是如何镜像到不同磁盘上的。下图展示了如何通过双磁盘池构建(双副本)镜像空间:
在本例中,存储空间以 256MB 的倍数(我们称其为“底板”)为单位为镜像空间分配物理容量。此外,对于此具体示例,每个底板都会将其一半分别镜像到两个独立的磁盘上。即使其中一个磁盘发生故障,存储空间也可以继续提供数据,因为未发生故障的物理磁盘上仍保存着数据的至少一个副本。当存在多个可用磁盘时,存储空间会将底板分布到多个适用的磁盘上,如下图的六磁盘池所示:
如果池磁盘发生故障,存储空间会针对所有使用故障磁盘的空间识别受到影响的底板,并将它们重新分配给池中任何可用的热备援磁盘或任何其他适用的磁盘(热备援磁盘是池中的保留磁盘,仅用于自动替换故障磁盘)。这种自我修复机制会自动且透明地执行,因此可在最大程度上减少人为干预的需要。我们还优化了速度,以防止多个硬件同时发生故障时产生的数据丢失。
通过奇偶校验复原
我们还提供了另一种名为奇偶校验的复原功能,启用该功能后,除了空间中包含的用户数据以外,存储空间还将保存一些额外的信息,以便在发生物理磁盘故障时自动复原数据。基于奇偶校验的复原在概念上与镜像相似,但对容量的利用效率比镜像空间更高,同时随机的 I/O 负载也更高。奇偶校验空间非常适合存储容量需求高,顺序(追加居多)写入请求多,并且几乎不对现有内容进行更新的数据,例如:较大的家庭录像。
类似镜像空间,奇偶校验空间的底板也分布于多个可用磁盘中(包括用于奇偶校验信息的容量),下图展示了六磁盘池中包含的一个奇偶校验空间:
当磁盘发生故障时,奇偶校验空间将自动且透明地完成恢复,这一点和镜像空间完全相同。对于奇偶校验空间,存储空间会利用奇偶校验信息针对所有受到影响的空间重新构建受到影响的底板,然后自动重新分配底板,以便利用该池中的任何可用热备援磁盘或任何其他适用的磁盘(与镜像空间相同)
下图展示了从同一个池中划分出的两个空间,其中一个使用了镜像复原,另一个使用了奇偶校验复原:
很显然,两个空间都启用了精简配置,并共享了相同的后台池(物理磁盘)。两个空间的底板交织在一起,并以最优的方式分布在所有可用的物理磁盘中,但每个空间会使用各自的机制来复原故障的物理磁盘。
只要组成该池的物理磁盘超过半数工作正常并连接到您的 PC,您就可以访问池中包含的空间,这一概念称为仲裁。例如,组成我的家庭存储池的六个磁盘中至少要有四个正常工作并连接到 PC,您才能访问文档或多媒体空间。当然,如上所述,空间所关联的复原属性决定了发生磁盘故障时的数据可用性,例如,如果文档空间已经过三重镜像并允许使用池中的所有磁盘,则在任意两个磁盘发生故障的情况下,您都可以继续访问其中的数据。
我将通过一个常见的使用场景向您介绍存储空间的虚拟化功能。请想象一下,您刚刚购买了一台 Windows 8 PC,并希望使用这台计算机作为家庭或小型企业中大部分数据的中央存储器。合理的设置方式为创建两个复原空间,其中一个为用于存储重要文档等内容(此类数据通常频繁进行修改)的镜像空间,另一个为存储家庭录像和照片等较大多媒体内容(此类数据经常查看但较少更新)的奇偶校验空间。通过采用适当的复原方案,您将可以同时获得最佳的容量利用率和性能。
在逻辑上,您的存储配置应与上图非常相似,即从单个池中划分出两个具有不同复原属性的空间。这一切实现起来非常简单:
- 通过 USB 将您的物理磁盘连接到 PC
- 创建您的池和两个空间
您可以调用 Powershell 来创建池和空间,并完成其他更高级的任务。在本例中,我们购买了六个磁盘,并将其连接到 PC。以下是用于设置池和两个空间的简单 PowerShell 命令:
(a) 要创建存储池:
>$pd = Get-PhysicalDisk
>New-StoragePool -PhysicalDisks $pd –StorageSubSystemFriendlyName *Spaces* -FriendlyName “My Home Storage”
(b) 要创建两个空间:
>New-VirtualDisk –StoragePoolFriendlyName “My Home Storage” –ResiliencySettingName Mirror –Size 10TB –Provisioningtype Thin –FriendlyName “Documents”
>New-VirtualDisk –StoragePoolFriendlyName “My Home Storage” –ResiliencySettingName Parity –Size 50TB –Provisioningtype Thin –FriendlyName “Multimedia”
请注意,以上命令仅在即将发布的 Windows 8 Beta 及后续版本中有效。Windows 8 开发人员预览版中提供了存储空间的最初版本,但上述 PowerShell 命令在该版本中无效。如果您有兴趣尝试开发人员预览版中的存储空间,请改用以下命令:
(a) 要创建存储池:
>$pd = Get-PhysicalDisk
>New-StoragePool -PhysicalDisks $pd –FriendlyName “My Home Storage” –StorageSubSystemFriendlyName *Spaces*
(b) 要创建两个空间:
>New-VirtualDisk –StoragePoolFriendlyName “My Home Storage” –StorageAttributesName Mirror –Size 2TB –ProvisioningScheme Sparse –FriendlyName “Documents”
>New-VirtualDisk –StoragePoolFriendlyName “My Home Storage” –StorageAttributesName Parity –Size 1TB –ProvisioningScheme Sparse –FriendlyName “Multimedia”
另请注意,在开发人员预览版中,空间大小的上限为 2TB。该限制将在 Beta 版中取消。在推出 Windows 开发人员预览版之后,我们又向存储空间中添加了许多新功能。
接下来,我将向您简单介绍如何通过另一种简单的替代工具来配置池和空间。从即将推出的 Windows 8 Beta 开始,您只需访问控制面板并执行下列操作:
(a) 要创建池和镜像空间,请访问控制面板,单击 [System and Security](系统和安全),然后单击 [Storage Spaces](存储空间)。
单击 [Create a new pool and storage space](创建新的池和存储空间)。
选择您希望加入新池的驱动器。
选择您的复原机制和其他选项。
请注意,您可以在创建空间时分配驱动器号并格式化合成的容量。
(b) 要向现有池中添加多个磁盘,请选择您希望添加的驱动器。
(c) 要创建额外的奇偶校验空间,请单击 [Create a storage space](创建存储空间),然后从布局选项中选择 [Parity](奇偶校验)。
(d) 如果您已经接近容量上限,系统将弹出以下通知:
单击该通知以查看有关该问题和如何修复该问题的信息。
您只需执行以上操作就可以开始使用存储空间了。空间创建后,您可以像使用任何其他“磁盘”那样使用它们。例如,您可以按照下图中的方法,为您所创建的空间启用 BitLocker。
有关存储空间的更多功能以及其他 Windows 技术如何运用这些功能还有很多话题值得讨论,我们将在后续的博文中继续向您介绍这方面的内容。
我希望您能够喜欢上这一新功能,并亲自体验一下它所带来的乐趣。存储空间将作为 Windows 8 Beta 版的一部分向您提供,并且会在开发人员预览版已提供功能的基础上添加更多功能。
– Rajeev
存储空间常见问题解答
我们了解到有些读者仍然对存储空间抱有疑问,因此我们提供了以下常见问题解答,希望能够涵盖其中的大部分问题。随着从您的评论中发现更多问题,我们将尝试不断完善本常见问题解答。
问:我正在使用 Windows Home Server with Drive Extender。是否有工具能帮助我将 Drive Extender 格式中的数据迁移到存储空间?
对不起,没有此类工具。您必须使用一组新的磁盘在 Windows 8 PC 上创建存储池。然后,您只需从基于 Drive Extender 的卷中将数据复制到池中的空间。存储空间提供的功能更加灵活,并且能够更好地与 NTFS 集成,因此该功能通常更为可靠和实用。
问:存储空间是某种 RAID 吗?如果是,你们实施的是什么 RAID 版本?
从本质上说,存储空间是将存储虚拟化,以便通过经济高效且易于使用的方式提供多种功能。存储空间可以维护多份数据副本,以便在物理磁盘发生故障(及其他相似情况下)提供复原。为了尽可能提高性能,存储空间始终会将数据拆分到多个物理磁盘中。虽然存储空间中使用了镜像和条带等 RAID 概念,但其具体实施针对尽量减少用户复杂性进行了优化,为物理磁盘的利用和分配提供了最大的灵活性,并可在磁盘发生故障的情况下快速恢复。由于目标和实施上的这些显著差异,不能将存储空间和死板的传统 RAID 简单画上等号。
问:存储空间的读取性能与 RAID 0 或 RAID 10 相比究竟如何?
无论是镜像空间还是条带空间,读取性能与最优化的 RAID 0 或 RAID 10 实施相比都非常具有竞争力。
问:我是否可以在存储空间的外层嵌套 RAID,以便进一步提高可靠性和/或性能?这样做明智吗?
我们不推荐这样做。存储空间设计用于现成的商用磁盘。此功能可在磁盘发生故障时提供简单易用的复原,并优化了对池中所有可用磁盘的并行使用。在存储空间外层嵌套 RAID 将增加复杂性并降低性能,并且事实上不会提供任何改善。
问:我可以从空间中启动吗?
在 Windows 8 中,您不能从空间中启动。作为替代方案,您可以继续使用动态卷来启动。在发布时,我们将提供如何将已适当分区的系统/(带有动态卷的)启动磁盘添加到存储池的有关指南。
问:我最少可以用几个磁盘来创建存储池?最多呢?
您可以仅使用一个磁盘来创建存储池。但是,此类存储池中将不包含任何复原空间(即镜像或奇偶校验空间)。该池中只能包含一个无法提供故障复原的简单空间。我们曾测试过由数百个磁盘组成的存储池,类似您在数据中心看到的规模。在体系结构上,对于组成存储池的磁盘数量并未设置上限。
问:我如何能知道空间位于哪个物理磁盘上?
通过 PowerShell,您可以查询具体空间底层的物理磁盘。由于所有数据将划分到空间底层的所有物理磁盘中,因此这些物理磁盘就是空间所在的位置。
问:我如何能够获知物理磁盘发生了故障?如何替换故障磁盘?
如果该物理磁盘位于支持 SCSI 箱体服务协议的箱体中,我们将激活故障物理磁盘旁边的一个红色 LED(如果有)。桌面上将弹出一条标准通知。您也可以在控制面板的存储空间应用程序中查看故障的相关信息:以下是相应的画面:
您也可以通过 PowerShell 查询磁盘的健康情况,以便确定磁盘是否发生故障。
一旦检测到故障磁盘,您随时可以断开其物理连接。替换故障的物理磁盘非常容易,卸下故障磁盘后,您只需将替换的磁盘连接到 PC,然后通过 PowerShell 或控制面板将该磁盘添加到池。
问:我如何能够将工作驱动器更换为一个更大的驱动器(或仅仅是回收驱动器)?是否需要“重构”?
只要创建了镜像或奇偶校验空间,您就可以随时轻松地从池中移除物理磁盘,并添加另一个(可能更大的)磁盘。在很短的一段时间额内,受到影响的空间将自动再同步(存储空间在设计时优化了此操作,速度将超过传统的 RAID 重构)。您可以通过控制面板或 PowerShell 命令来确定是否所有空间都工作正常(即数据已完成再同步,可维持指定的副本数量)。
问:我是否可以自行触发再同步?
可以。如果不希望等待自动再同步启动,您可以通过 PowerShell 选择 Repair 命令,如果存在适用的替换磁盘和/或空余容量,该命令将启动再同步过程。
问:存储空间可以使用哪类磁盘?是否有任何特殊要求?是否可以使用定制箱体来保存这些磁盘?
存储空间可使用通过 USB、SATA 或 SAS 连接,并且适用于 Windows 的任何物理磁盘。如果物理磁盘通过某些定制箱体(例如,JBOD 配置)连接,存储空间将利用 SES 协议(如果该箱体支持)来识别磁盘所在的物理插槽。如果需要,存储空间将通过 SES 点亮与物理磁盘相关联的故障 LED(如果箱体具有此类 LED)。如果希望存储空间使用箱体的功能,箱体必须满足 Windows 徽标要求。箱体供应商已获知这些要求,我们有理由相信,满足这些要求的箱体将不断增加。
如果您的磁盘保存在箱体中,并且存储空间未提供与物理磁盘相关的插槽信息或未点亮箱体上的 LED,您可以认为该箱体不满足 Windows 徽标要求。
问:是否存在针对存储池的磁盘碎片整理或磁盘检查工具?
没有。存储空间会以最优的方式利用所有物理磁盘。如果物理磁盘上的存储空间元数据损坏(这很容易发现,因为系统会提示该物理磁盘出现健康问题),您可以按照处理任何其他故障磁盘的方式来处理该磁盘,只需将其从池中移除。如果该物理磁盘工作正常,您可以在稍后将其重新添加到该池。
问:我如何能知道特定文件具有多少镜像?
如果您的文件驻留于双重镜像的 NTFS 卷中,则系统将维持文件数据的两份副本。如果您配置了三重镜像空间,则将存在三个副本。
问:我是否可以指定镜像使用的驱动器?例如,如果我知道某个磁盘更快/更好/更新?
可以。在典型部署中,存储空间将自动从池中为空间选择底层物理磁盘。但是,如果您确实希望,也可以手动从池中为具体空间指定一组特定的底层物理磁盘。您可以在创建空间时通过 PowerShell 来执行此操作。
问:我是可以否更改空间的容量上限?将每个空间都指定为 50TB 有哪些利与弊?
您可以通过控制面板或 PowerShell 来增加空间的逻辑容量。在启用精简配置的情况下,不支持减少逻辑容量(也不需要)。实际上,将初始逻辑容量指定为较小的数字(如 1TB)并按需增加,或从一开始就将其设置为很大的数字(如 50TB)在本质上并无区别。但后一种方法将在之后的使用中为您节省时间和精力。
问:我是否可以将底板大小更改为 256MB 的倍数以外的数字?
不能。底板大小由存储空间根据一系列因素自动确定,以提供最佳的性能和可用性体验。
问:预定义的底板大小是否会导致无法实现最佳的容量利用?例如,如果我的大部分文件都很小会怎样?如果它们都是很大的视频文件又会怎样?
底板大小是容量的内部单位,我们使用该单位为同一存储池中的多个空间提供容量。无论文件大小,该值都与文件的最优存储无关。
问:我是否可以在创建存储池后,将其从一台 PC 转移到另一台?例如,如果我有一串 6 个可移除驱动器?
可以。只需将组成该池的物理磁盘连接到新 PC。
问:如果我有 3 个外部箱体,并且每次移除一个。然后以相反的顺序插入另一台 Windows 8 PC。新 PC 是否会认为我的存储池已损坏,或是否最终会导致问题?如果我不再插入其中一个箱体又会怎样?
您可以按照任何顺序将箱体插回。一旦存储空间检测到满足仲裁条件的足够磁盘数量,系统将激活该池及其包含的空间。您可以在稍后插入更多箱体。如果任何磁盘中的数据失去了同步,存储空间将自动同步这些数据。即使您不再插入某些箱体,只要存储空间检测到所需的最少磁盘数量,您便可以继续使用这些数据。存储空间将同时通过 PowerShell 和控制面板通知您缺少某些磁盘,并建议您将其插回。
问:你们曾提到过需要过半数已连接且正常工作的物理磁盘才能满足仲裁条件。这是否意味着我需要在存储池中始终保持奇数个物理磁盘?或者我是否需要偶数个物理磁盘?对于双磁盘池又如何?
您不需要保持奇数或偶数个物理磁盘。存储空间会正确处理双磁盘池并继续为此类池中的双重镜像空间提供故障复原,即使其中一个物理磁盘发生故障或断开连接时也是如此。
问:如果我将组成存储池的物理磁盘插入 Windows 7 计算机会发生什么情况?
Windows 7 不支持存储空间,因此会将该物理磁盘作为具有无法识别分区方案的磁盘来处理。
来源URL:http://blogs.msdn.com/b/b8_cn/archive/2012/01/13/10256573.aspx