Windows Server 軟件定義存儲—存儲空間的IO分發(fā)

      網(wǎng)友投稿 992 2025-04-01

      Windows Server 軟件定義存儲—存儲空間的IO分發(fā)

      黃利軍

      2017-02-24 12:34:58

      554?030

      SDS不僅是一個軟件和硬件解耦的過程,更是一個存儲數(shù)據(jù)平面和控制平面解耦的過程。同樣,Windows Server SDS也是一個數(shù)據(jù)平面和控制平面解耦的過程,結(jié)構(gòu)后分為3個部分:存儲池、存儲空間和服務(wù)層。本文我們主要講述WindowsServer 存儲空間I/O的分發(fā),看看WindowsServer SDS控制平面SDS如何對數(shù)據(jù)進行處理。我們將話題一分為二來看看不同層次的I/O分發(fā):

      (1)存儲空間I/O在群集節(jié)點間的分發(fā)

      (2)存儲空間I/O在節(jié)點硬盤間的分發(fā)

      本文我們就這兩種I/O分發(fā)進行討論,在進入正題前,我們先來了解在Windows Server 存儲空間中經(jīng)常用到的幾個技術(shù),這幾個技術(shù)對我們認識Windows Server 存儲空間的數(shù)據(jù)讀寫有很大的幫助。所以在講Windows Server 存儲空間的I/O分發(fā)之前,我們先逐個認識下這3個技術(shù):

      存儲空間列數(shù)(# of Column)

      CSV組件和I/O分類

      存儲分層和數(shù)據(jù)熱度收集

      存儲空間列數(shù)

      存儲空間的列用來組織I/O分發(fā)到硬盤,列類似于一個虛擬的通道,和RAID的分條寬度相似。但是存儲空間分條數(shù)據(jù)寫入列和RAID分條后往硬盤寫入不同,存儲空間分條的數(shù)據(jù)先找到列這個通道,再寫到列里的硬盤,寫入列數(shù)體現(xiàn)了數(shù)據(jù)寫入通道數(shù)。每個列通道里包含一塊到三塊不等的硬盤,列和硬盤數(shù)之比稱之為列/硬盤數(shù)比,如圖1所示。

      圖1

      列/硬盤數(shù)比以及最大和最小列數(shù)因存儲空間布局不同而不同,通常,簡單布局的存儲空間有一塊硬盤,所以列:硬盤為1:1, 雙重鏡像的存儲空間有2塊硬盤,列:硬盤比為1:2,三重鏡像的列:硬盤比為1:3。列數(shù)并非一成不變的,在構(gòu)建存儲池以后,存儲池根據(jù)實際情況將列數(shù)調(diào)整為自動或者固定值,可以使用這個PowerShell命令查看存儲空間列數(shù)。

      條帶交錯大小(Interleave,和RAID strip size類似)和列數(shù)決定著分條尺寸。列數(shù)并非一成不變的,在構(gòu)建存儲池以后,存儲池根據(jù)實際情況將列數(shù)調(diào)整為自動或者固定值,可以使用如下示例PowerShell命令查看存儲空間列數(shù)。

      PS C:\>?Get-StoragePool -FriendlyName?<存儲池名稱>| Get-ResiliencySetting -Name Mirror?|ft Name, NumberofColumnsDefault

      如果在創(chuàng)建存儲空間的時候沒有特別指明列數(shù),這個列數(shù)就會是自動(auto),如果是auto的話,存儲空間會按照環(huán)境自行調(diào)整,column也有個推薦的計算公式。因此我們可以自己修改列數(shù):

      PS C:\>?Get-StoragePool -FriendlyName <存儲池名稱> |Get-ResiliencySetting -Name Mirror | Set-ResiliencySetting-NumberofColumnsDefault <你要設(shè)置的列數(shù)>

      CSV結(jié)構(gòu)

      接下來我們看一下CSV的結(jié)構(gòu)和組件,首先看下CSV的節(jié)點分類:

      硬盤所掛載的節(jié)點稱之為協(xié)調(diào)者節(jié)點,沒有CSV硬盤掛載的節(jié)點稱之為數(shù)據(jù)服務(wù)器,協(xié)調(diào)者節(jié)點同時也可以是數(shù)據(jù)服務(wù)器。節(jié)點又分為SMB服務(wù)器和SMB客戶端,SMB客戶端通常指的是沒有物理連接到存儲的節(jié)點。在分布式存儲中,SMB客戶端通常不提供和協(xié)調(diào)資源,更多的是使用資源。聽起來,SMB Client節(jié)點就像小朋友去野炊的時候,那個不帶米、不帶菜也不帶調(diào)料,只帶碗筷來吃飯的小朋友。圖2所示的這張圖中的節(jié)點1和節(jié)點2都是協(xié)調(diào)者節(jié)點,節(jié)點3是數(shù)據(jù)服務(wù)器,節(jié)點1和節(jié)點2也可能是數(shù)據(jù)服務(wù)器,因為會發(fā)生物理連接的故障;節(jié)點1和節(jié)點2通常是SMB候選服務(wù)器,而節(jié)點3是SMB客戶端,三個節(jié)點共同完成應(yīng)用數(shù)據(jù)的讀寫。

      圖2

      早期的Windows Server,比如2008的群集磁盤是通過SCSI SPC-3協(xié)議為磁盤所有者節(jié)點保留控制權(quán)的,而CSV可以保證多個節(jié)點同時讀寫CSV, 它怎么做到的呢?因為WindowsServer 2008 R2及后續(xù)版本的CSV增加了編排層,包括以下幾個編排工具來完成I/O的分發(fā):

      (1)CSVFS文件系統(tǒng)

      (2)CsvNsFlt過濾器

      (3)CsvFlt過濾器

      這些個過濾器和文件系統(tǒng)給我們帶來訪問本地卷相近的體驗,大家用過CSV的都應(yīng)該能感受得到,就是C:\ClusterStorage\Volume,并且讓NTFS/ReFS卷可以被多臺服務(wù)器同時訪問,每個協(xié)調(diào)者節(jié)點都具有CSVFS文件系統(tǒng)和CsvNsFlt/CsvFlt 編排過濾器。在圖2中我們可以看到CSV具備多個I/O分發(fā)“管道”,應(yīng)用訪問CSV卷時,數(shù)據(jù)通過這些管道進行傳輸,這幾個I/O分發(fā)“管道”包括:

      (1)直接I/O

      (2)文件系統(tǒng)重定向I/O

      Windows Server 軟件定義存儲—存儲空間的IO分發(fā)

      (3)塊級別重定向I/O

      同時,無論是協(xié)調(diào)者節(jié)點還是數(shù)據(jù)服務(wù)器節(jié)點, 其所包含的過濾器以及CSVFS/NTFS/卷/硬盤都可以用高度(Altitude)來標識,我們可以使用fltmc instances這個命令來查看Windows Server過濾器和其他組件的高度,如圖3所示。

      圖3

      在寫入數(shù)據(jù)時候順序通常是從上往下發(fā),就好像水流從高處往地處流一樣。當然,水可以借助水泵從低處往高處走,同樣CSV的I/O可以借助SMB協(xié)議從低處往高處傳輸。CSV組件里的過濾器以及CSVFS/NTFS/卷/硬盤用高度(Altitude)來標識,大家再看看圖2,是不是組件和過濾器分布得有上有下。通常各個實例的高度按照從高到低排列為:CSVFS>NTFS>卷>硬盤,I/O在節(jié)點間可以從低層過濾器實例發(fā)往高層過濾器實例,也即I/O重定向。總而言之,在CSV里,I/O的路徑包括:

      I/O從水平較高的層往水平低的層下發(fā)

      I/O在節(jié)點間可以從低層過濾器實例發(fā)往高層過濾器實例,也即I/O重定向

      各個實例的高度按照從高到低排列為:CSVFS>NTFS>卷>硬盤。

      CSV這些個文件系統(tǒng)和過濾器處理不同的I/O: CsvFlt 作用于文件級I/O定向、CsvNsFlt 作用于塊級別I/O定向、CSV文件系統(tǒng)(CSVFS)作用于直接I/O。接下來我們看看CSV的幾種I/O的特點,首先看看直接I/O,直接I/O指的是不會通過網(wǎng)絡(luò)傳輸?shù)淖x寫I/O,而是從CsvFs通過CsvVbus直接到硬盤堆棧。圖4所示的節(jié)點1和節(jié)點2物理連接到共享磁盤,它們可以完全不使用網(wǎng)絡(luò)而是直接發(fā)送讀寫到磁盤,節(jié)點3因為沒有連接到存儲因而無法看到共享磁盤,所以不能使用直接I/O,但是節(jié)點3屬于群集 ,所以節(jié)點3使用重定向I/O進行讀寫。

      圖4

      再看看文件級重定向I/O,文件系統(tǒng)重定向I/O發(fā)生在節(jié)點文件系統(tǒng)之間,節(jié)點間通過SMB協(xié)議傳輸數(shù)據(jù),如圖5所示,協(xié)調(diào)者節(jié)點2的CsvFS將數(shù)據(jù)發(fā)送到CsvFlt再到NTFS,而數(shù)據(jù)服務(wù)器節(jié)點1和節(jié)點3通過SMB協(xié)議將元數(shù)據(jù)發(fā)送給協(xié)調(diào)者節(jié)點2。需要強調(diào)一點的是,文件級的I/O重定向的路徑和CSV元數(shù)據(jù)更新的路徑是一致的(我們這里所描述的元數(shù)據(jù)指的是除了讀寫以外的所有操作,比如創(chuàng)建、關(guān)閉、重命名、刪除文件,修改文件屬性、修改文件大小等)。

      圖5

      最后看看塊級重定向I/O,塊級重定向I/O從CSV卷管理器發(fā)起I/O傳輸,節(jié)點間通過SMB協(xié)議傳輸數(shù)據(jù)。塊級重定向I/O完全繞過CSV NTFS這一層直接訪問NTFS下面的硬盤(就像直接I/O繞過卷這一層直接訪問硬盤一樣)。協(xié)調(diào)節(jié)點不使用CsvFs來傳輸數(shù)據(jù),而是直接通過CsvNsFlt把數(shù)據(jù)傳輸給硬盤,如圖6所示。以下3種情況會發(fā)生塊級別重定向I/O:

      (1)圖中節(jié)點3沒有物理連接到硬盤,所以可能會使用塊級別的重定向I/O

      (2)節(jié)點1雖然物理連接到硬盤,但是也有可能發(fā)生重定向I/O,比如硬盤控制卡、鏈路故障等原因?qū)е翴/O失敗的時候。這種情況下,CsvVbus首先會嘗試發(fā)送I/O給硬盤,如果發(fā)送不成功,那么就會通過塊級別重定向I/O發(fā)送給協(xié)調(diào)者節(jié)點。

      (3)WindowsServer 存儲空間。

      圖6

      存儲分層和數(shù)據(jù)熱度收集

      講完了CSV組件和I/O分發(fā)的管道,以及3種典型的I/O類型,接下來我們講第三個概念:存儲分層和數(shù)據(jù)熱度收集。

      WindowsServer 內(nèi)置的存儲分層管理服務(wù)(Storage Tiers Management Service)進行分層,默認,每天晚上1點啟動冷熱數(shù)據(jù)移動,在計劃任務(wù)程序里自動執(zhí)行,當然也可以手動執(zhí)行;使用和碎片整理相同的defrage命令完成;存儲分層服務(wù)按照1MB的單位分析數(shù)據(jù)熱度并移動數(shù)據(jù)到預(yù)期的層。那么大家會問了,熱度怎么計算和追蹤呢?

      存儲空間如果設(shè)置了分層,默認會啟用Heatmap(數(shù)據(jù)熱度收集)。Heat map是數(shù)據(jù)訪問的總結(jié)視圖,它將跟蹤到的數(shù)據(jù)增加、更新、刪除、查詢、掃描等所有信息歸總到塊級別。其實,Oracle也在使用ILM Heat map對其數(shù)據(jù)庫進行表級別的跟蹤,這些跟蹤也最終匯總到塊級別。熱度收集由一個參數(shù)控制,它就是TrNH,啟用該標識會將分層的卷設(shè)置為“禁用數(shù)據(jù)熱度收集”,通過以下命令,就可以給存儲空間“貼上”TrNH標識,也就禁用掉了Heatmap。

      fsutil tiering setflags <卷> /TrNH

      通過fsutil tiering clearflags <卷> /TrNH 可以清除TrNH標識,也即啟用Heatmap。

      大家可以打開你的電腦,在命令提示符里輸入:fsutil tiering clearflags <卷>

      可以看看是否有TrNH標識,不過你在電腦里看到這個結(jié)果沒有實際意義,因為TrNH針對的分層的存儲空間卷才有效。

      節(jié)點之間I/O分發(fā)是怎樣的呢

      3個主要概念講完了,接下來就要講存儲空間在節(jié)點級I/O分發(fā)了。我們在環(huán)境中創(chuàng)建了4個存儲空間,并配置為CSV, 分別分配給兩個不同的群集節(jié)點,2個分層CSV分別使用簡單和鏡像布局;另外2個不分層的CSV分別使用簡單和鏡像的布局。如圖7所示。

      圖7

      然后,我們使用Get‐ClusterSharedVolumeState查詢CSV狀態(tài),篩選出發(fā)生文件級別重定向的I/O,在結(jié)果中可以看到,這里的兩個CSV基于分層存儲空間,對于所有節(jié)點來說都是文件級別的I/O重定向,與存儲空間布局無關(guān),如圖8所示。

      圖8

      同樣,我們使用Get‐ClusterSharedVolumeState查詢CSV狀態(tài),篩選出發(fā)生塊級別重定向的I/O,在結(jié)果中可以看到,這里的兩個CSV,對于所有者節(jié)點來說是直接I/O,但是對于非所有者節(jié)點來說,是塊級別的重定向I/O,而且發(fā)生塊級別的重定向I/O的原因與存儲空間布局有關(guān),如圖9所示,如果CSV是鏡像布局的存儲空間,那么原因是StorageSpaceNotAttached,如果CSV是簡單布局的存儲空間,那么原因是NoDiskConnectivity。

      圖9

      關(guān)于Windows Server存儲空間I/O的分發(fā)方式,我們可以小結(jié)成下表:

      FIL03

      FIL04

      Tier-Simple

      文件系統(tǒng)重定向I/O

      文件系統(tǒng)重定向I/O

      Tier-Mirror

      文件系統(tǒng)重定向I/O

      文件系統(tǒng)重定向I/O

      Non-Tier-Simple

      塊級別重定向I/O

      直接I/O

      Non-Tier-Mirror

      塊級別重定向I/O

      直接I/O

      而進一步來看,除了Windows Server 存儲空間會發(fā)生文件級I/O重定向之外,發(fā)生文件級I/O重定向的可能原因還包括:

      (1)人為誤操作重定向模式(CSV重定向狀態(tài)在群集控制臺可見)

      (2)不兼容的文件系統(tǒng)過濾器附加到NTFS/ReFS文件系統(tǒng)棧

      (3)不兼容的卷過濾器附加在NTFS/ReFS文件系統(tǒng)下

      (4)存儲空間設(shè)置了分層,啟用了Heatmap,之前已經(jīng)討論過Heatmap

      發(fā)生塊級I/O重定向的可能原因還包括:

      (1)節(jié)點沒有物理連接到硬盤(NoDiskConnectivity)

      (2)存儲空間沒有附加給節(jié)點(StorageSpaceNotAttached),通常是因為:

      存儲空間的布局設(shè)置為鏡像和奇偶校驗

      啟用了回寫緩存的簡單布局(禁用回寫緩存,則使用直接I/O)

      I/O如何分發(fā)到硬盤呢

      講完節(jié)點間的I/O分發(fā),我們再看硬盤級I/O分發(fā),要結(jié)合之前的概念來理解。我們先看看簡單布局的存儲空間,列數(shù)為2的配置下,數(shù)據(jù)如何分發(fā)。因為每個列代表著一個I/O虛擬通道,每個虛擬通道包含一塊硬盤,數(shù)據(jù)被條帶化后,由兩個列寫入到各自的一塊硬盤,同時我們計算出分條尺寸=2*256=512KB,如圖10所示。

      圖10

      鏡像布局的存儲空間,列數(shù)為2的配置下,數(shù)據(jù)又如何分發(fā)呢?鏡像布局和簡單、奇偶校驗布局不同的一點是在條帶層底下添加了I/O鏡像層,也即數(shù)據(jù)復(fù)制層,所以雙重鏡像布局要求每個列必須包含兩塊硬盤。條帶后的數(shù)據(jù)寫入列之前在復(fù)制層將一份數(shù)據(jù)復(fù)制成兩份,然后將兩份數(shù)據(jù)分別寫入列的兩塊硬盤。如圖11所示。同時,數(shù)據(jù)被分條后,盡管寫入硬盤的分條尺寸為1024KB,但是寫到兩個列的數(shù)據(jù)都是256KB,分條尺寸=2*256=512KB。

      圖11

      當然,可以類推出2列和三重鏡像,N列和其他布局的存儲空間I/O的下發(fā)。我們就不再一一展開了。

      人工智能 軟件開發(fā)云 云計算

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何將PPT粘貼到桌面(如何把ppt復(fù)制到桌面)
      下一篇:更改過保存好的表格怎么還原到初始接受的表格(已經(jīng)保存的表格可以還原嗎)
      相關(guān)文章
      亚洲av综合av一区| 亚洲国产中文在线视频| 久久久亚洲AV波多野结衣 | 亚洲无码黄色网址| 久久久久久久久无码精品亚洲日韩| 亚洲三级中文字幕| 亚洲精品成人网站在线播放| 77777_亚洲午夜久久多人| 亚洲另类激情综合偷自拍| 亚洲AV本道一区二区三区四区| 亚洲国产AV无码专区亚洲AV | 久久精品国产亚洲77777| 亚洲AV无码乱码在线观看富二代 | 在线精品亚洲一区二区小说 | 亚洲娇小性xxxx| 亚洲最大福利视频| 亚洲中文精品久久久久久不卡| 亚洲熟妇无码一区二区三区导航| 亚洲私人无码综合久久网| 亚洲中文字幕无码久久| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲成人黄色在线观看| 亚洲人成人77777网站不卡| 亚洲av专区无码观看精品天堂| 亚洲免费福利在线视频| 亚洲精品无码你懂的| 精品久久久久亚洲| 亚洲人成色77777在线观看大| 中文字幕在亚洲第一在线| 久久久久久a亚洲欧洲aⅴ| 亚洲午夜久久久精品影院| 亚洲性色高清完整版在线观看| 亚洲mv国产精品mv日本mv| 亚洲精品无码久久久久YW| 老牛精品亚洲成av人片| 久久国产成人亚洲精品影院| 亚洲国产精品无码久久一线| 中文字幕亚洲精品资源网| 亚洲AV无码专区在线亚| 亚洲AV无码一区二区三区性色| 亚洲欧洲久久久精品|