storage spaces是微软基于软件实现的一种类似raid的存储技术,它允许用户将多块硬盘组成一个存储池,并在存储池中划分部分或全部的空间来创建存储空间。存储空间具有raid的特性1,当一块物理硬盘损坏时,windows可利用数据副本或奇偶校验值来恢复数据,从而提高了数据的可靠性和可用性。恢复的过程对用户来说是不可见的,windows在后台就可以帮你搞定一切,你需要做的只是替换一块新硬盘。

实际上,storage spaces自windows server 2012年代就登上历史的舞台,它是微软云战略产品线中重要的一员,计算、网络和存储是虚拟化中必不可少的三驾马车,而storage spaces作为存储的基石,其意义重大。它历经2012 R2,2016两个大版本的迭代已经日趋成熟,在2019下更是熠熠生辉。今天被我拿来当nas用,实在是有辱气节。

NOTE

本文所涉及的storage spaces操作都在windows server 2019中进行,所以本文提到的“OS”、“系统”、“windows”、“windows server”等名词如果没有特别声明,均代指windows server 2019。而windows server 2019指的是基于windows 10 1809版本的windows server,自带desktop experience特性。(注,微软隔三差五还会推出其它版本windows server,譬如1903,1909,这些版本只有server core,没有GUI)

在部署之前需要先普及storage space的一些基本概念

以下是storage spaces的示意图

physicaldisk
物理硬盘,机械盘、SSD、NVMe这些就是物理实体硬盘。
storage pool
存储池,在windows中,多块物理硬盘被组织成一个或多个存储池,它是一个虚拟容器,用户创建的storage space需要从该容器中划走部分或全部的可用空间。
storage space
存储空间,也称为虚拟盘(virtual disk),一个存储池可以创建多个存储空间,每个存储空间可以设置不同的resiliceny type、provision type(详见后文)
storage tier
存储分层,传统的机械硬盘容量大、性能低,价格低廉,而SSD的容量小、性能高、价格高昂。为了充分利用这两种存储介质的优点,微软在2012R2中引入了storage tier这个新特性。storage tier由fast tier和slow tier构成,其中fast tier一般是ssd或nvme。而slow tier则用的是便宜量又足的机械盘。ss每天定时分析用户数据的热度(heat map),对于热数据,ss将存放在fast tier中,冷数据则存放在slow tier上。存储分层技术的应用令用户用最小的投资来提升整个存储的效率。
write back cache
回写缓存,系统日常的磁盘操作大部分是随机写,这对存储性能是一个极大的考验,因为硬盘的iops是一定的,大量的小的随机写占用了宝贵的iops资源。于是传统的物理阵列卡引入了回写缓存机制。系统首先将这些随机写先放在阵列卡的缓存(性能高的内存)中,当缓存积累的一定程度的时候再统一写入硬盘。为了确保断电时缓存中的临时数据不丢失,阵列卡还得加一块电池(BBU)。所以传统的硬盘阵列卡价值不菲。ss则利用ssd作为回写缓存,在提高iops的同时还提供了掉电保护,是一个便宜的解决方案。

NOTE

物理硬盘也有缓存,32M-64M大小不一,不过有研究表明该缓存对磁盘性能的提升并没有什么卵用, 甚至有人在虚拟化环境中测试,关闭缓存有助于提升性能,这就有点玄学了。硬盘厂家难道吃饱了撑的?不论如何,为了降低数据丢失的风险,建议将物理硬盘的缓存关掉。

resiliency type

这是创建虚拟盘时需要设置的选项,也是最重要的配置项。它还有多种叫法,在GUI中叫storage layout,在cmdlet中是ResiliencySettingName,实际上就是raid的类型。目前storage space支持3种类型:simple、mirror和parity。

simple

简单型,相当于raid0,可由一块或多块硬盘组合而成。数据块条带化之后分别写入多块磁盘。simple的优点是空间利用率和iops效率最高,缺点同样明显,那就是不具备数据保护功能,一旦某块物理硬盘损坏,数据就会丢失。此类型的虚拟盘仅适合于临时数据存放,譬如视频编辑。

mirrors

镜像型,类似raid1,single-way的硬盘数最少需2块(允许1块硬盘坏),double-way的硬盘数最少需5块(允许2块硬盘坏)。mirror比parity有更高的iops和更低的时延。缺点是在三种类型之中,其空间利用率最低。它适用于大多数场景。

parity

奇偶校验类型,类似raid5/raid6,数据块和parity bit被写到多块硬盘中,由于多了parity bit,所以parity的写性能要弱于前两者。single parity需要3块硬盘(允许1块硬盘坏),double parity需要5块硬盘(允许2块硬盘坏)。parity适合于大量数据块的顺序写场景,譬如数据备份和归档。

  1. 虚拟盘有simple/mirror/parity三种resilicency type,只有mirror和parity具有数据保护功能。 [return]