Windows Server 软件定义存储—存储空间IO的分发

 SDS不只是一个软件和硬件解耦的过程,更是一个存储数据平面和控制平面解耦的过程。一样,Windows Server SDS也是一个数据平面和控制平面解耦的过程,结构后分为3个部分:存储池、存储空间和服务层。本文咱们主要讲述Windows Server 存储空间I/O的分发,看看Windows Server SDS控制平面SDS如何对数据进行处理。咱们将话题一分为二来看看不一样层次的I/O分发:数据库

(1)存储空间I/O在群集节点间的分发缓存

(2)存储空间I/O在节点硬盘间的分发bash

本文咱们就这两种I/O分发进行讨论,在进入正题前,咱们先来了解在WindowsServer 存储空间中常常用到的几个技术,这几个技术对咱们认识WindowsServer 存储空间的数据读写有很大的帮助。因此在讲Windows Server 存储空间的I/O分发以前,咱们先逐个认识下这3个技术:服务器

  1. 存储空间列数(# of Column)网络

  2. CSV组件和I/O分类分布式

  3. 存储分层和数据热度收集ide

 

存储空间列数工具

存储空间的列用来组织I/O分发到硬盘,列相似于一个虚拟的通道,和RAID的分条宽度类似。可是存储空间分条数据写入列和RAID分条后往硬盘写入不一样,存储空间分条的数据先找到列这个通道,再写到列里的硬盘,写入列数体现了数据写入通道数。每一个列通道里包含一块到三块不等的硬盘,列和硬盘数之比称之为列/硬盘数比,如图1所示。布局

                             wKiom1ivuJLBOpSUAABaJQojaCA052.jpg-wh_50

图1ui

列/硬盘数比以及最大和最小列数因存储空间布局不一样而不一样,一般,简单布局的存储空间有一块硬盘,因此列:硬盘为1:1, 双重镜像的存储空间有2块硬盘,列:硬盘比为1:2,三重镜像的列:硬盘比为1:3。列数并不是一成不变的,在构建存储池之后,存储池根据实际状况将列数调整为自动或者固定值,可使用这个PowerShell命令查看存储空间列数。

 条带交错大小(Interleave,和RAID strip size相似)和列数决定着分条尺寸。列数并不是一成不变的,在构建存储池之后,存储池根据实际状况将列数调整为自动或者固定值,可使用以下示例PowerShell命令查看存储空间列数。

PS C:\> Get-StoragePool-FriendlyName <your storage pool name> | Get-ResiliencySetting -Name Mirror |ft Name,NumberofColumnsDefault

 若是在建立存储空间的时候没有特别指明列数,这个列数就会是自动(auto),若是是auto的话,存储空间会按照环境自行调整,column也有个推荐的计算公式。所以咱们能够本身修改列数:

PS C:\> Get-StoragePool-FriendlyName <your storage pool name> | Get-ResiliencySetting -Name Mirror |Set-ResiliencySetting -NumberofColumnsDefault <# of column you desired>


 CSV结构

接下来咱们看一下CSV的结构和组件,首先看下CSV的节点分类:

硬盘所挂载的节点称之为协调者节点,没有CSV硬盘挂载的节点称之为数据服务器,协调者节点同时也能够是数据服务器。节点又分为SMB服务器和SMB客户端,SMB客户端一般指的是没有物理链接到存储的节点。在分布式存储中,SMB客户端一般不提供和协调资源,更多的是使用资源。听起来,SMB Client节点就像小朋友去野炊的时候,那个不带米、不带菜也不带调料,只带碗筷来吃饭的小朋友。图2所示的这张图中的节点1和节点2都是协调者节点,节点3是数据服务器,节点1和节点2也多是数据服务器,由于会发生物理链接的故障;节点1和节点2一般是SMB候选服务器,而节点3是SMB客户端,三个节点共同完成应用数据的读写。

wKioL1ivuSuTD4OsAAKNUJtzMi4882.jpg-wh_50

 图2

 早期的Windows Server,好比2008的群集磁盘是经过SCSI SPC-3协议为磁盘全部者节点保留控制权的,而CSV能够保证多个节点同时读写CSV, 它怎么作到的呢?由于Windows Server 2008 R2及后续版本的CSV增长了编排层,包括如下几个编排工具来完成I/O的分发:

(1)CSVFS文件系统

(2)CsvNsFlt过滤器

(3)CsvFlt过滤器

这些个过滤器和文件系统给咱们带来访问本地卷相近的体验,你们用过CSV的都应该能感觉获得,就是C:\ClusterStorage\Volume,而且让NTFS/ReFS卷能够被多台服务器同时访问,每一个协调者节点都具备CSVFS文件系统和CsvNsFlt/CsvFlt编排过滤器。在图2中咱们能够看到CSV具有多个I/O分发“管道”,应用访问CSV卷时,数据经过这些管道进行传输,这几个I/O分发“管道”包括:

(1)直接I/O

(2)文件系统重定向I/O

(3)块级别重定向I/O

同时,不管是协调者节点仍是数据服务器节点,其所包含的过滤器以及CSVFS/NTFS/卷/硬盘均可以用高度(Altitude)来标识,咱们可使用fltmcinstances这个命令来查看Windows Server过滤器和其余组件的高度,如图3所示。

wKioL1ivuVCy3s5ZAAGoGZiLvMs719.jpg-wh_50

图3

在写入数据时候顺序一般是从上往下发,就好像水流从高处往地处流同样。固然,水能够借助水泵从低处往高处走,一样CSV的I/O能够借助SMB协议从低处往高处传输。CSV组件里的过滤器以及CSVFS/NTFS/卷/硬盘用高度(Altitude)来标识,你们再看看图2,是否是组件和过滤器分布得有上有下。一般各个实例的高度按照从高到低排列为:CSVFS>NTFS>卷>硬盘,I/O在节点间能够从低层过滤器实例发往高层过滤器实例,也即I/O重定向。总而言之,在CSV里,I/O的路径包括:

    (1) I/O从水平较高的层往水平低的层下发

    (2) I/O在节点间能够从低层过滤器实例发往高层过滤器实例,也即I/O重定向

    (3) 各个实例的高度按照从高到低排列为:CSVFS>NTFS>卷>硬盘

CSV这些个文件系统和过滤器处理不一样的I/O: CsvFlt 做用于文件级I/O定向、CsvNsFlt 做用于块级别I/O定向、CSV文件系统(CSVFS)做用于直接I/O。接下来咱们看看CSV的几种I/O的特色,首先看看直接I/O,直接I/O指的是不会经过网络传输的读写I/O,而是从CsvFs经过CsvVbus直接到硬盘堆栈。图4所示的节点1和节点2物理链接到共享磁盘,它们能够彻底不使用网络而是直接发送读写到磁盘,节点3由于没有链接到存储于是没法看到共享磁盘,因此不能使用直接I/O,可是节点3属于群集,因此节点3使用重定向I/O进行读写。

wKioL1ivugDhTTcGAAGoGZiLvMs270.jpg-wh_50

图4

 再看看文件级重定向I/O,文件系统重定向I/O发生在节点文件系统之间,节点间经过SMB协议传输数据,如图5所示,协调者节点2的CsvFS将数据发送到CsvFlt再到NTFS,而数据服务器节点1和节点3经过SMB协议将元数据发送给协调者节点2。须要强调一点的是,文件级的I/O重定向的路径和CSV元数据更新的路径是一致的(咱们这里所描述的元数据指的是除了读写之外的全部操做,好比建立、关闭、重命名、删除文件,修改文件属性、修改文件大小等)。

wKiom1ivuiPinasuAAG-3G2lqqE093.jpg-wh_50

图5

 最后看看块级重定向I/O,块级重定向I/O从CSV卷管理器发起I/O传输,节点间经过SMB协议传输数据。块级重定向I/O彻底绕过CSV NTFS这一层直接访问NTFS下面的硬盘(就像直接I/O绕过卷这一层直接访问硬盘同样)。协调节点不使用CsvFs来传输数据,而是直接经过CsvNsFlt把数据传输给硬盘,如图6所示。如下3种状况会发生块级别重定向I/O:

  • 图中节点3没有物理链接到硬盘,因此可能会使用块级别的重定向I/O

  • 节点1虽然物理链接到硬盘,可是也有可能发生重定向I/O,好比硬盘控制卡、链路故障等缘由致使I/O失败的时候。这种状况下,CsvVbus首先会尝试发送I/O给硬盘,若是发送不成功,那么就会经过块级别重定向I/O发送给协调者节点。

  • WindowsServer 存储空间。

wKioL1ivujqyTF7OAAG0Odx20H0671.jpg-wh_50

图6

 

存储分层和数据热度收集

讲完了CSV组件和I/O分发的管道,以及3种典型的I/O类型,接下来咱们讲第三个概念:存储分层和数据热度收集。

Windows Server 内置的存储分层管理服务(Storage Tiers Management Service)进行分层,默认,天天晚上1点启动冷热数据移动,在计划任务程序里自动执行,固然也能够手动执行;使用和碎片整理相同的defrage命令完成;存储分层服务按照1MB的单位分析数据热度并移动数据到预期的层。那么你们会问了,热度怎么计算和追踪呢?

存储空间若是设置了分层,默认会启用Heatmap(数据热度收集)。Heat map是数据访问的总结视图,它将跟踪到的数据增长、更新、删除、查询、扫描等全部信息归总到块级别。其实,Oracle也在使用ILM Heat map对其数据库进行表级别的跟踪,这些跟踪也最终汇总到块级别。

热度收集由一个参数控制,它就是TrNH,启用该标识会将分层的卷设置为“禁用数据热度收集”,经过如下命令,就能够给存储空间“贴上”TrNH标识,也就禁用掉了Heatmap。

fsutil tiering setflags <卷> /TrNH

经过fsutil tiering clearflags <卷> /TrNH 能够清除TrNH标识,也即启用Heatmap

你们能够打开你的电脑,在命令提示符里输入:

fsutil tiering clearflags <卷>

能够看看是否有TrNH标识,不过你在电脑里看到这个结果没有实际意义,由于TrNH针对的分层的存储空间卷才有效。

 

存储分层和数据热度收集

3个主要概念讲完了,接下来就要讲存储空间在节点级I/O分发了。咱们在环境中建立了4个存储空间,并配置为CSV, 分别分配给两个不一样的群集节点,2个分层CSV分别使用简单和镜像布局;另外2个不分层的CSV分别使用简单和镜像的布局。如图7所示。

wKiom1ivuq3hZi36AABhF4XBbSw243.jpg-wh_50

图7

 而后,咱们使用Get‐ClusterSharedVolumeState查询CSV状态,筛选出发生文件级别重定向的I/O,在结果中能够看到,这里的两个CSV基于分层存储空间,对于全部节点来讲都是文件级别的I/O重定向,与存储空间布局无关,如图8所示。

wKioL1ivusCgoxHFAACgJjpQvpA741.jpg-wh_50

图8

一样,咱们使用Get‐ClusterSharedVolumeState查询CSV状态,筛选出发生块级别重定向的I/O,在结果中能够看到,这里的两个CSV,对于全部者节点来讲是直接I/O,可是对于非全部者节点来讲,是块级别的重定向I/O,并且发生块级别的重定向I/O的缘由与存储空间布局有关,如图9所示,若是CSV是镜像布局的存储空间,那么缘由是StorageSpaceNotAttached,若是CSV是简单布局的存储空间,那么缘由是NoDiskConnectivity。

wKiom1ivus6z8EJsAACnu744vog603.jpg-wh_50

图9

 关于Windows Server存储空间I/O的分发方式,咱们能够小结成下表:


FIL03

FIL04

Tier-Simple

文件系统重定向I/O

文件系统重定向I/O

Tier-Mirror

文件系统重定向I/O

文件系统重定向I/O

Non-Tier-Simple

块级别重定向I/O

直接I/O

Non-Tier-Mirror

块级别重定向I/O

直接I/O

 

而进一步来看,除了Windows Server 存储空间会发生文件级I/O重定向以外,发生文件级I/O重定向的可能缘由还包括:

(1)人为误操做重定向模式(CSV重定向状态在群集控制台可见)

(2)不兼容的文件系统过滤器附加到NTFS/ReFS文件系统栈

(3)不兼容的卷过滤器附加在NTFS/ReFS文件系统下

(4)存储空间设置了分层,启用了Heatmap(数据热度收集)

 

发生块级I/O重定向的可能缘由还包括:

(1)节点没有物理链接到硬盘(NoDiskConnectivity)

(2)存储空间没有附加给节点(StorageSpaceNotAttached),一般是由于:

    a. 存储空间的布局设置为镜像和奇偶校验

    b. 启用了回写缓存的简单布局(禁用回写缓存,则使用直接I/O)


讲完节点间的I/O分发,咱们再看硬盘级I/O分发,要结合以前的概念来理解。咱们先看看简单布局的存储空间,列数为2的配置下,数据如何分发。由于每一个列表明着一个I/O虚拟通道,每一个虚拟通道包含一块硬盘,数据被条带化后,由两个列写入到各自的一块硬盘,同时咱们计算出分条尺寸=2*256=512KB,如图10所示。

wKioL1ivu3ryjFbaAAUKbz-h0X0103.jpg-wh_50 

图10

镜像布局的存储空间,列数为2的配置下,数据又如何分发呢?镜像布局和简单、奇偶校验布局不一样的一点是在条带层底下添加了I/O镜像层,也即数据复制层,因此双重镜像布局要求每一个列必须包含两块硬盘。条带后的数据写入列以前在复制层将一份数据复制成两份,而后将两份数据分别写入列的两块硬盘。如图11所示。同时,数据被分条后,尽管写入硬盘的分条尺寸为1024KB,可是写到两个列的数据都是256KB,分条尺寸=2*256=512KB。


wKiom1ivu9HBH9x0AAqR_hLzrEU774.jpg-wh_50

图11

固然,能够类推出2列和三重镜像,N列和其余布局的存储空间I/O的下发。咱们就再也不一一展开了。

相关文章
相关标签/搜索