Windows Server 2016 分层式存储

今年夏天我换了一个新的笔记本,原来的 Thinkpad W530 基本处于闲置状态。为了不浪费投资,并且考虑到最近 Windows Server 2016 正式发布,我打算将原来的老笔记本安装 Hyper-V,作为跑虚拟机做实验的专用机器。并通过 Server 2016 的存储池创建分层存储,同时获得 SSD 的高性能和传统 HDD 的大容量。

这个笔记本安装了两块硬盘,一块 500GB 的 SSD 硬盘,其中划分了一块分区安装操作系统,其余空间闲置。此外通过拆掉光驱安装了第二块硬盘,这是一块混合硬盘,机械硬盘部分容量 1TB,5400rpm,并自带 32GB 的 NAND 缓存。

操作步骤

首先装好操作系统,并确保 SSD 和 HDD 上的所有空间都处于「未分配」状态。

注意:这一点很重要,只有未分配的空间可以创建存储池,进而创建所需类型的存储。如果硬盘上已经有分区,会无法将其加入存储池中。因此首先需要将要使用的硬盘空间上现有的分区删除。

准备好包含「未分配」空间的硬盘

上图中左侧的服务器管理器界面右下角列出了两块可用的物理磁盘,右侧的磁盘管理控制台中可以看到,这两块硬盘上必须要有未分配空间。

建立存储池

随后点击服务器管理器窗口中右上角的「任务」按钮,从下拉菜单中选择「新建存储池」。

建立存储池

接下来会打开「新建存储池向导」,首先为该存储池设置一个名称:

设置存储池的名称

点击「下一步」后会列出所有可以加入该存储池的物理磁盘,根据需要进行选择。

选择要加入存储池的硬盘

再次点击「下一步」,复查摘要信息,确认无误后点击「创建」。存储池创建完毕。

复查摘要并确认创建

创建完成后将自动打开一个对话框,列出有关该存储池的属性信息。

创建好的存储池

建立虚拟磁盘

随后在服务器管理器窗口中右键点击新建的存储池,选择「新建虚拟磁盘」。

开始新建虚拟磁盘

随后可以选择要建立虚拟磁盘的存储池,由于目前系统中只有一个存储池,选择这一个就行了。

选择用来创建虚拟磁盘的存储池

为虚拟磁盘设置一个名称,或提供描述信息。注意,这里还有一个选项「在此虚拟磁盘上创建存储层」,这个选项必须选中!

设置虚拟磁盘的名称和描述

我的目标是同时使用 SSD 和 HDD 创建混合存储,系统可以根据文件的访问情况,将最频繁访问的内容(热数据)保存在 SSD 层,并将访问不那么频繁的文件(冷数据)放在 HDD 层,因此这个选项是必须的。

随后需要选择数据布局,这个选项类似于 RAID 级别,例如 Simple 布局,就是直接将多个磁盘的容量「连接」在一起,无法提供任何冗余;Mirror 则是类似 RAID 1 那样的镜像。由于我选择的两个硬盘容量不同,只能选择 Simple 布局。不过其实我也不需要 Mirror 布局,因为这上面只用来保存虚拟机磁盘文件,有没有冗余并不重要。

选择虚拟磁盘的磁盘布局

随后需要分别设置每一层可用的容量。这个选项的意思是,我们其实可以分别使用每一层的部分容量来创建虚拟磁盘,这样就可以按照需要利用一个存储池的可用空间创建多个不同容量的磁盘。但本例中不需要这样做,可以选择用所有可用空间创建一个磁盘。但是!(终于遇到「但是」了)这里面有个问题,下文细说。

设置不同存储层可用的容量

复查设置,确认没啥问题,开始创建。

咦,为嘛出错了!!

存储层容量设置有误导致出错

注意一下上上一张截图,为每一层选择容量的那个界面,底部显示有这样的提示:虚拟磁盘可能需要额外空间来创建回写缓存。嗯,重新开始整个过程,并在选择容量的界面下设置「指定大小」。

为了方便起见,我没有详细尝试到底设置多少合适,而是简单粗暴地设定为「更快层」使用 360GB(SSD 可用总容量共 366GB),「标准层」使用 900GB(HDD 可用总容量共 931GB)。这下成功创建了。

15

建立卷

操作到这里,其实等同于给电脑新增加了一块「硬盘」,还要在硬盘上创建分区(卷)才能在里面保存文件。所以接下来需要创建卷。

在服务器管理器中找到刚才新建的虚拟磁盘,右键点击,选择「新建卷」,看到这个界面:

在虚拟磁盘上新建一个卷

首先在上图中「磁盘」选项下选择要使用的磁盘,这里需要选择刚才创建的虚拟磁盘,即图中的「磁盘 2」。

随后的过程就和在物理磁盘上创建分区或卷的操作类似了,选择卷大小,分配驱动器号,选择文件系统并设置卷标等。不细说了。

不过有个问题需要注意,如果使用分层式存储,将只能用整个虚拟磁盘的所有可用容量创建一个卷。如果不使用分层存储,将能和物理硬盘的操作一样,自行创建不同大小的卷(分区)。

设置卷的大小

分配卷标

19

最后完成后的结果是下图这样的:

最终创建好的结果

然后当然就是把创建存储池之前从硬盘上转移走的虚拟机磁盘文件重新移回来了。利用千兆以太网从一个配置为 RAID 5 的 NAS 设备上直接拷贝,速度很快很稳定。

速度很快很稳定

不过考虑到 SSD 层的可用容量本就超过我所有虚拟机磁盘文件的总容量,这个操作完全是写入到 SSD 的操作,和 HDD 没太大关系。所以这种分层式存储在性能方面到底能起到多大效果,只能在以后的实际使用中慢慢体会了。

背景知识

存储空间 (Storage Space) 并不是 Server 2016 的新功能,我印象中早在 2012 时代就有了。这个功能可以将多种不同类型的存储设备(貌似 USB 接口的可移动存储设备也可支持,虽然感觉没啥用)抽象成一个统一的存储资源池,并配合存储方面的其他新功能(例如数据去重、存储复制、集群、横向扩展、SMB 直通、存储空间直通、多路径 IO 等),通过市售的低成本存储硬件组建在性能、成本、可靠性、可用性等各方面比专用存储更出色的存储设备。

为了更直观的了解,可以将这套系统和传统的物理磁盘做如下类比:

传统物理磁盘:机箱—>硬盘—>分区/卷—>数据

存储空间:存储池—>虚拟磁盘—>卷—>数据

本例中通过 SSD 和 HDD 创建的分层式存储,数据的分层和移动对用户来说是完全透明的,系统可以自动根据访问情况将内容在不同层之间移动,这个移动操作针对的不是整个文件,而是组成文件的「块」。而这一点对于 Hyper-V 这种会创建非常大容量单个文件的应用很有用,可以将同一个 VHDX 虚拟机硬盘文件中的「热块」移动到 SSD 层,并将「冷块」保留在 HDD 层。

当然,具体到本例中的应用,因为就两块硬盘,一旦硬盘故障数据肯定会丢失。不过这本身就是我做实验的机器,对整个存储的可靠性并没有太高要求。实际生产环境中,可以添加更多磁盘,利用镜像布局以及各种校验技术保障可靠性。

除了在本地对冷热数据进行分层管理外,在 Azure StorSimple 服务(以及配套硬件设施)的帮助下,还可以利用 Azure 近乎无限的存储空间对本地存储进行扩展,将热数据存储在本地 SSD,温数据存储在本地 HDD,冷数据存储在 Azure 中。这个过程对用户来说也是完全透明的,只要网速不是问题,实际访问体验与本地存储将没有任何差别:https://www.azure.cn/solutions/storsimple/  。

Windows Server 2016 存储服务的改进,可参阅:https://technet.microsoft.com/en-us/windows-server-docs/storage/whats-new-in-storage

分享:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.