亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        負(fù)載自適應(yīng)的存儲(chǔ)池?cái)?shù)據(jù)重構(gòu)策略*

        2021-03-01 03:33:34魏登萍陳浩穩(wěn)謝徐超高文強(qiáng)
        關(guān)鍵詞:池中大塊線程

        魏登萍,陳浩穩(wěn),謝徐超,袁 遠(yuǎn),高文強(qiáng)

        (1.國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;2.北京憶恒創(chuàng)源科技有限公司,北京 100192)

        1 引言

        隨著大數(shù)據(jù)時(shí)代的到來,各領(lǐng)域產(chǎn)生的數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng)。以海量數(shù)據(jù)分析處理為基礎(chǔ)的數(shù)據(jù)密集型應(yīng)用對(duì)帶寬、吞吐率等存儲(chǔ)性能和數(shù)據(jù)可靠性提出了更高的要求,存儲(chǔ)系統(tǒng)已經(jīng)成為制約計(jì)算機(jī)系統(tǒng)性能提升的主要因素之一。

        近年來,閃存(Flash)[1]、相變存儲(chǔ)器PCM(Phase Change Memory)[2]、鐵電隨機(jī)存儲(chǔ)器FRAM(Ferroelectric Random Access Memory)[3]、磁阻隨機(jī)存儲(chǔ)器MRAM(Magnetoresistive Random Access Memory)[4]、憶阻器RRAM(Resistive Random Access Memory)[5]等各種新型存儲(chǔ)介質(zhì)相繼出現(xiàn),為提升存儲(chǔ)系統(tǒng)的性能提供了良好的機(jī)遇?;陂W存的固態(tài)盤SSD(Solid State Driver)因閃存存儲(chǔ)介質(zhì)具有較優(yōu)的訪問性能、更低的功耗和更好的工藝成熟度,已率先在大規(guī)模存儲(chǔ)系統(tǒng)中廣泛應(yīng)用。針對(duì)應(yīng)用對(duì)存儲(chǔ)容量和性能不斷增長(zhǎng)的需求,研究者將獨(dú)立磁盤冗余陣列RAID(Redundant Array of Independent Disks)[6]與固態(tài)盤結(jié)合,提出了全閃存陣列RAIS(Redundant Array of Independent SSDs)技術(shù)[7],將大量固態(tài)盤組織起來為上層應(yīng)用提供穩(wěn)定可靠的大容量、更高性能的數(shù)據(jù)存儲(chǔ)訪問能力,并提供系統(tǒng)級(jí)的數(shù)據(jù)保護(hù)能力。NetApp[8]、EMC[9]和PureStorage[10]等各大公司相繼推出了全閃存存儲(chǔ)產(chǎn)品,以滿足各領(lǐng)域?qū)Ω咝阅艽鎯?chǔ)產(chǎn)品的需求。

        基于RAID的存儲(chǔ)系統(tǒng),當(dāng)一塊磁盤出現(xiàn)故障時(shí),需要通過數(shù)據(jù)重構(gòu)操作恢復(fù)該故障盤的所有數(shù)據(jù),并使陣列恢復(fù)正常工作狀態(tài),重構(gòu)時(shí)間會(huì)隨著故障硬盤容量的增大線性增加。在數(shù)據(jù)重構(gòu)時(shí),用戶I/O和數(shù)據(jù)重構(gòu)I/O混合在一起,競(jìng)爭(zhēng)使用系統(tǒng)資源,導(dǎo)致上層應(yīng)用性能急劇下降,重構(gòu)時(shí)間變得更長(zhǎng),并加大了數(shù)據(jù)丟失風(fēng)險(xiǎn)。在重構(gòu)過程中,恢復(fù)數(shù)據(jù)會(huì)寫入熱備盤中,而熱備盤也會(huì)成為系統(tǒng)的性能瓶頸,使得重構(gòu)性能無法隨著硬盤數(shù)量的增加而提高。處于“攻擊窗口”的重構(gòu)期間[11],數(shù)據(jù)丟失風(fēng)險(xiǎn)加大,應(yīng)用I/O訪問的性能下降,重構(gòu)效率對(duì)于系統(tǒng)的可靠性和性能都產(chǎn)生了重大影響,因此,如何在數(shù)據(jù)重構(gòu)時(shí)盡可能地減少用戶I/O請(qǐng)求的影響,成為基于RAIS的存儲(chǔ)系統(tǒng)研究的重點(diǎn)之一。

        針對(duì)上述RAIS存儲(chǔ)系統(tǒng)中的數(shù)據(jù)重構(gòu)問題,研究工作主要圍繞數(shù)據(jù)布局和重構(gòu)調(diào)度策略展開。一方面,設(shè)計(jì)更優(yōu)的數(shù)據(jù)布局方案,減少數(shù)據(jù)重構(gòu)時(shí)間。Wan等人[12]提出一種新的RAID結(jié)構(gòu),將RAID中的硬盤分為多個(gè)分區(qū),利用其它分區(qū)創(chuàng)建子RAID,使得重構(gòu)過程可以并發(fā)執(zhí)行,加快重構(gòu)速度。Google[13]則結(jié)合RAIS和虛擬化技術(shù),在多個(gè)SSD之上建立虛擬存儲(chǔ)池,在存儲(chǔ)池上建立RAIS,通過動(dòng)態(tài)地址映射建立RAIS到底層SSD的地址映射,將讀寫壓力更均勻地分散在各個(gè)成員磁盤上,以加速I/O請(qǐng)求和重構(gòu)操作。文獻(xiàn)[14]對(duì)Declustered RAID系統(tǒng)中的數(shù)據(jù)布局方式進(jìn)行了評(píng)價(jià),結(jié)果顯示Declustered RAID能夠有效減少數(shù)據(jù)恢復(fù)時(shí)間。Zhang等人[15,16]提出一種叫作RAID+的RAID構(gòu)建機(jī)制,該機(jī)制采用latin square結(jié)構(gòu)來組織數(shù)據(jù),讓更多的硬盤參與數(shù)據(jù)服務(wù)和數(shù)據(jù)重構(gòu)操作,以同步提高用戶I/O和重構(gòu)I/O的性能。另一方面,設(shè)計(jì)重構(gòu)請(qǐng)求調(diào)度策略,在一定程度上均衡用戶I/O和重構(gòu)I/O的請(qǐng)求處理,提高系統(tǒng)性能。Tian等人[17]提出根據(jù)數(shù)據(jù)的訪問頻率確定重構(gòu)請(qǐng)求順序,經(jīng)常訪問的數(shù)據(jù)優(yōu)先重構(gòu),提高了重構(gòu)效率并減輕了重構(gòu)對(duì)用戶I/O請(qǐng)求的影響。Wu等人[18]提出了WordOut策略,在重構(gòu)時(shí)將寫請(qǐng)求和經(jīng)常訪問的讀請(qǐng)求交給代理 RAID處理,以縮短重構(gòu)時(shí)間。文獻(xiàn)[19]針對(duì)固態(tài)盤垃圾回收操作對(duì)RAIS系統(tǒng)性能的影響,提出了垃圾回收操作引導(dǎo)的RAID實(shí)現(xiàn)系統(tǒng)GC-Steering,以提高RAIS系統(tǒng)的性能和可靠性。

        本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)采用底層存儲(chǔ)虛擬化的SSD存儲(chǔ)池,叫作NV-BSP(NVMe Burst Storage Pool),將多塊SSD盤的存儲(chǔ)空間劃分為更細(xì)粒度的大塊,并利用RAIS技術(shù)在大量來自不同固態(tài)盤的大塊上構(gòu)建虛擬盤以供用戶使用;由于虛擬盤的訪問最終落在多塊固態(tài)盤的并發(fā)訪問上,對(duì)計(jì)算資源提出了更高的需求,設(shè)計(jì)了多核并發(fā)I/O處理架構(gòu),以提升I/O性能;提出了負(fù)載感知的I/O調(diào)度策略,在保證用戶I/O服務(wù)質(zhì)量的同時(shí),盡量縮短重構(gòu)時(shí)間,在系統(tǒng)出現(xiàn)故障后能快速恢復(fù)到正常狀態(tài)。

        2 支持多線程并發(fā)處理的存儲(chǔ)池設(shè)計(jì)

        2.1 存儲(chǔ)池架構(gòu)

        Figure 1 Architecture of NV-BSP

        基于存儲(chǔ)虛擬化技術(shù),本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于固態(tài)盤的存儲(chǔ)池(簡(jiǎn)稱NV-BSP),其架構(gòu)如圖1所示。所有SSD盤的存儲(chǔ)空間被劃分為固定大小的大塊,并被池化到一個(gè)存儲(chǔ)池中。存儲(chǔ)池中維護(hù)了系統(tǒng)中所有的空閑大塊,這些空閑大塊通過資源分配器分配到RAID組中,并通過RAID技術(shù)構(gòu)建一個(gè)具有數(shù)據(jù)保護(hù)能力的存儲(chǔ)資源容器。資源分配算法采用隨機(jī)的分配算法,根據(jù)各硬盤的裕量情況和磨損情況隨機(jī)地從存儲(chǔ)池中選取條帶長(zhǎng)度數(shù)量的硬盤,并從各個(gè)硬盤中選取一個(gè)大塊,組成RAID組,使得每個(gè)存儲(chǔ)盤上的資源均勻利用,且一個(gè)RAID組中的大塊資源之間不存在相關(guān)性。根據(jù)容量需求,多個(gè)RAID組構(gòu)成一個(gè)虛擬盤,通過塊設(shè)備接口的方式對(duì)外提供服務(wù)。同一個(gè)虛擬盤中,每個(gè)RAID組的數(shù)據(jù)保護(hù)級(jí)別和容量相同;不同虛擬盤中的RAID組可以具有不同的數(shù)據(jù)保護(hù)級(jí)別和大塊構(gòu)成方式。

        為避免一塊SSD損壞時(shí)導(dǎo)致數(shù)據(jù)無法恢復(fù),資源分配器在分配大塊時(shí),最多只為一個(gè)RAID組分配一個(gè)來自某個(gè)SSD的一個(gè)大塊,保證一個(gè)RAID組內(nèi)不存在2個(gè)來自同一個(gè)SSD的空閑大塊。同時(shí),為了保證用戶I/O請(qǐng)求性能和數(shù)據(jù)重構(gòu)性能能夠隨著硬盤數(shù)量擴(kuò)展,在資源分配時(shí)需考慮大塊的離散性,盡量均勻利用每個(gè)SSD盤上的大塊存儲(chǔ)資源。

        假設(shè)要在4塊容量為1 TB的SSD上創(chuàng)建存儲(chǔ)池,大塊容量設(shè)置為8 MB,并創(chuàng)建一個(gè)容量為24 GB的虛擬盤,數(shù)據(jù)保護(hù)級(jí)別設(shè)置為RAID5,且每個(gè)條帶中具有3個(gè)數(shù)據(jù)單元。NV-BSP會(huì)根據(jù)要求的數(shù)據(jù)保護(hù)級(jí)別和條帶中的數(shù)據(jù)單元數(shù)量,為每個(gè)RAID組分配4個(gè)容量為8 MB的大塊,并構(gòu)建RAID5,每個(gè)RAID組的數(shù)據(jù)容量為24 MB,則24 GB的虛擬盤需要構(gòu)建1 024個(gè)RAID組。虛擬盤根據(jù)RAID組的組成順序地從0開始編址,則每個(gè)邏輯地址LBA與虛擬盤中RAID組的編號(hào)RAID_index的映射關(guān)系定義為:

        RAID_index(LBA)=LBA/Capactiy_R

        (1)

        其中,Capacity_R為虛擬盤中RAID組的容量。

        2.2 多線程并發(fā)I/O處理

        存儲(chǔ)池I/O訪問請(qǐng)求主要指對(duì)RAID組數(shù)據(jù)條帶進(jìn)行讀寫的I/O請(qǐng)求,主要分為用戶I/O和內(nèi)部I/O 2大類。用戶I/O請(qǐng)求主要指上層應(yīng)用對(duì)RAID組數(shù)據(jù)條帶的訪問請(qǐng)求;內(nèi)部I/O請(qǐng)求主要指存儲(chǔ)池內(nèi)部觸發(fā)的I/O請(qǐng)求,主要包括數(shù)據(jù)重構(gòu)和數(shù)據(jù)遷移2大類。由上述存儲(chǔ)池的架構(gòu)可以看出,存儲(chǔ)池的I/O請(qǐng)求對(duì)虛擬盤的訪問最終轉(zhuǎn)為對(duì)存儲(chǔ)池中所有SSD的并發(fā)訪問,再加上SSD的訪問速度比傳統(tǒng)磁盤更快,這就對(duì)存儲(chǔ)池中的計(jì)算資源提出了更高的需求。為了使存儲(chǔ)池的并發(fā)I/O處理能力能夠充分發(fā)揮,NV-BSP將最大限度地利用CPU資源,為每個(gè)存儲(chǔ)池分配多個(gè)CPU核心,以創(chuàng)建多個(gè)獨(dú)有的I/O線程處理器,以并發(fā)處理用戶I/O請(qǐng)求和內(nèi)部I/O請(qǐng)求。

        NV-BSP為每個(gè)虛擬盤中的每個(gè)RAID組分配一個(gè)I/O線程處理器,負(fù)責(zé)處理該RAID組所有的I/O請(qǐng)求和內(nèi)部I/O請(qǐng)求。當(dāng)虛擬盤中的RAID組個(gè)數(shù)大于I/O線程處理器個(gè)數(shù)時(shí),可以將多個(gè)RAID組按照編址順序均勻分配給一組I/O線程處理器。每個(gè)I/O線程處理器負(fù)責(zé)虛擬盤中一系列RAID組的訪問處理。

        假設(shè)存儲(chǔ)池所分配的I/O線程處理器個(gè)數(shù)為IO_N,組成虛擬盤的RAID組個(gè)數(shù)為RAID_N。為了使I/O線程處理器的負(fù)載盡可能均衡,某個(gè)編號(hào)為RAID_index的RAID組與分配到的I/O線程處理器編號(hào)的映射關(guān)系定義為:

        Thread(RAID_index)=RAID_index%IO_N

        (2)

        則0≤Thread(RAID_index)≤IO_N-1。

        3 負(fù)載自適應(yīng)的I/O調(diào)度策略

        3.1 基于存儲(chǔ)池的數(shù)據(jù)重構(gòu)

        當(dāng)存儲(chǔ)池中的一塊磁盤出現(xiàn)故障或者掉電時(shí),包含該故障盤中某個(gè)大塊的RAID組的數(shù)據(jù)保護(hù)能力降級(jí),需要進(jìn)行數(shù)據(jù)重構(gòu)以恢復(fù)正常工作狀態(tài)。根據(jù)2.2節(jié)介紹,按照RAID組的編號(hào),將RAID組按照其I/O線程處理器進(jìn)行分組。如圖2所示,每個(gè)I/O線程處理器負(fù)責(zé)處理m個(gè)RAID組,包含故障盤大塊的RAID組用灰色表示,將會(huì)進(jìn)行數(shù)據(jù)重構(gòu)操作。用戶I/O請(qǐng)求隊(duì)列中有p個(gè)用戶請(qǐng)求,重構(gòu)I/O請(qǐng)求隊(duì)列中有q個(gè)重構(gòu)I/O請(qǐng)求,每個(gè)I/O線程處理器負(fù)責(zé)的RAID組集合中,每個(gè)RAID組都有若干個(gè)用戶I/O請(qǐng)求和重構(gòu)I/O請(qǐng)求。

        Figure 2 Diagram of I/O thread processor request

        當(dāng)存儲(chǔ)池觸發(fā)數(shù)據(jù)重構(gòu)操作時(shí),會(huì)產(chǎn)生大量的對(duì)RAID組中條帶的I/O讀寫操作。通常,存儲(chǔ)池重構(gòu)操作采用固定策略,如用戶I/O模式策略、重構(gòu)I/O模式策略和固定調(diào)度比例模式等。在用戶I/O模式下,若有用戶I/O請(qǐng)求,則延遲重構(gòu)操作的執(zhí)行,直到用戶I/O執(zhí)行完畢,這樣將會(huì)加大再次發(fā)生大塊失效時(shí)數(shù)據(jù)丟失的風(fēng)險(xiǎn);在重構(gòu)I/O模式下,出現(xiàn)故障盤時(shí),立即執(zhí)行數(shù)據(jù)重構(gòu)操作。數(shù)據(jù)重構(gòu)操作會(huì)占用大量的I/O帶寬,耗時(shí)也較長(zhǎng),用戶I/O需要等待重構(gòu)操作完成后才能進(jìn)行處理,這勢(shì)必會(huì)影響用戶I/O的服務(wù)質(zhì)量;在固定調(diào)度比例策略模式下,根據(jù)調(diào)度比例,分別從用戶I/O和重構(gòu)I/O隊(duì)列中調(diào)度對(duì)應(yīng)數(shù)量的I/O請(qǐng)求進(jìn)行處理,用戶I/O和重構(gòu)I/O可能造成各RAID組的負(fù)載不均衡,并競(jìng)爭(zhēng)訪問存儲(chǔ)池中的SSD,影響用戶I/O的服務(wù)質(zhì)量和重構(gòu)效率。

        3.2 基于QoS的請(qǐng)求調(diào)度策略

        基于存儲(chǔ)池的動(dòng)態(tài)冗余管理機(jī)制與傳統(tǒng)RAIS相比,由于整個(gè)存儲(chǔ)池中的固態(tài)盤都同時(shí)參與數(shù)據(jù)重構(gòu),因此相同數(shù)據(jù)容量的數(shù)據(jù)重構(gòu)時(shí)間比傳統(tǒng)RAIS的重構(gòu)時(shí)間要少得多。由于存儲(chǔ)池在向上層應(yīng)用提供服務(wù)時(shí),其用戶I/O負(fù)載是動(dòng)態(tài)變化的,假若以固定比例來調(diào)度用戶I/O請(qǐng)求與重構(gòu)I/O請(qǐng)求,則會(huì)影響用戶I/O的服務(wù)質(zhì)量和內(nèi)部數(shù)據(jù)重構(gòu)的進(jìn)度。

        針對(duì)上述問題,本文提出基于QoS的請(qǐng)求調(diào)度策略,根據(jù)用戶I/O負(fù)載情況高效調(diào)度數(shù)據(jù)重構(gòu)I/O請(qǐng)求與用戶I/O請(qǐng)求,在盡量保證I/O服務(wù)質(zhì)量的同時(shí),保證數(shù)據(jù)重構(gòu)操作能夠盡快完成,不影響數(shù)據(jù)保護(hù)能力。

        由于用戶I/O負(fù)載是動(dòng)態(tài)變化的,該調(diào)度策略根據(jù)用戶I/O負(fù)載的情況,每隔一個(gè)單位時(shí)間段動(dòng)態(tài)調(diào)整不同的調(diào)度比例,且調(diào)度比例隨著時(shí)間的推移而動(dòng)態(tài)變化。該策略將用戶I/O請(qǐng)求與內(nèi)部I/O請(qǐng)求的調(diào)度比例設(shè)置為多種不同的級(jí)別,以10%為步長(zhǎng),從10%增加到90%。調(diào)度比例為10%,表明在該時(shí)間段內(nèi),調(diào)度的用戶I/O請(qǐng)求數(shù)量與內(nèi)部I/O請(qǐng)求數(shù)量的比例為1∶9。如圖3所示,在時(shí)間段1內(nèi),調(diào)度比例為30%;到了時(shí)間段2,用戶I/O請(qǐng)求負(fù)載加重,則相應(yīng)調(diào)高一級(jí)調(diào)度比例,為40%,依次類推。當(dāng)然,在當(dāng)前時(shí)間段里,若發(fā)現(xiàn)用戶I/O請(qǐng)求負(fù)載比起前一個(gè)時(shí)間段的壓力減小,則相應(yīng)調(diào)低一級(jí)調(diào)度比例。

        Figure 3 I/O scheduling strategy based on QoS

        根據(jù)用戶I/O負(fù)載的動(dòng)態(tài)變化情況,確定當(dāng)前時(shí)間段內(nèi)用戶I/O請(qǐng)求和重構(gòu)I/O請(qǐng)求的調(diào)度比例,并根據(jù)調(diào)度比例分別從用戶I/O隊(duì)列和內(nèi)部I/O請(qǐng)求隊(duì)列中選取合適數(shù)量的請(qǐng)求進(jìn)行調(diào)度處理。

        3.3 負(fù)載感知的重構(gòu)I/O調(diào)度策略

        當(dāng)存儲(chǔ)池中出現(xiàn)故障盤時(shí),會(huì)引起若干包含該故障盤大塊的RAID組的數(shù)據(jù)重構(gòu)操作。RAID組之間的數(shù)據(jù)重構(gòu)操作執(zhí)行的先后順序?qū)?shù)據(jù)一致性無影響,且數(shù)據(jù)重構(gòu)操作對(duì)延遲不敏感。為了使得重構(gòu)I/O請(qǐng)求與用戶I/O請(qǐng)求盡量減少訪問沖突,使得調(diào)度的數(shù)據(jù)重構(gòu)I/O請(qǐng)求與用戶I/O請(qǐng)求盡量均衡地訪問不同的硬盤,需要根據(jù)存儲(chǔ)池中各個(gè)SSD的負(fù)載特征,確定重構(gòu)I/O請(qǐng)求的調(diào)度優(yōu)先級(jí)。

        在一個(gè)時(shí)間段內(nèi),根據(jù)存儲(chǔ)池中每個(gè)SSD硬盤的負(fù)載情況選擇合適的重構(gòu)請(qǐng)求,使重構(gòu)請(qǐng)求盡量不與用戶I/O請(qǐng)求競(jìng)爭(zhēng)存儲(chǔ)池中SSD的帶寬,在不增加用戶I/O請(qǐng)求延遲的情況下提高重構(gòu)I/O帶寬。由于用戶I/O負(fù)載是動(dòng)態(tài)變化的,因此需要在每個(gè)時(shí)間窗口內(nèi)更新存儲(chǔ)池中SSD的I/O負(fù)載情況,并由此確定重構(gòu)I/O請(qǐng)求的調(diào)度優(yōu)先級(jí)。

        設(shè)存儲(chǔ)池中包含的SSD集合為SSDs={D1,D2,D3,…,DM}(M為存儲(chǔ)池包含的SSD個(gè)數(shù)),每個(gè)盤Dj(Dj∈SSDs,1≤j≤M)可劃分為固定大小的多個(gè)大塊,用BS(Dj)表示,即BS(Dj)={B1,B2,B3,…,BN}(N為Dj中包含的大塊數(shù)量)。每個(gè)虛擬盤由多個(gè)RAID組的集合構(gòu)成,即RAID={RAID1,RAID2,RAID3,…,RAIDK}(K為虛擬盤中包含的RAID組個(gè)數(shù),由虛擬盤的容量和RAID組的容量確定)。每個(gè)RAID組包含P個(gè)大塊,P由創(chuàng)建虛擬盤設(shè)定的數(shù)據(jù)條帶單元和RAID級(jí)別確定,例如虛擬盤的數(shù)據(jù)條帶單元數(shù)為4,RAID級(jí)別設(shè)置為RAID5,則虛擬盤中每個(gè)RAID組中的大塊數(shù)量P為5。編號(hào)為index的RAID組包含P個(gè)大塊,其集合表示成:

        B(index)={B1,B2,…,BP}

        (Bi∈BS(Dj),1≤i≤P,1≤j≤M)

        (3)

        RAID組中某大塊Bi與底層SSD集合的映射由存儲(chǔ)池中的資源分配器確定,定義為:

        BD:Bi→Dj,1≤i≤P,1≤j≤M

        (4)

        編號(hào)為index的RAID組中大塊來源的SSD集合定義為:

        DS(index)={BD(B1),BD(B2),…,

        BD(BP)},Bi∈B(index)

        (5)

        在當(dāng)前時(shí)間窗口內(nèi),假定整個(gè)存儲(chǔ)池中所有用戶I/O請(qǐng)求集合為R={r1,r2,r3,…,rQ},每個(gè)用戶I/O請(qǐng)求ri(1≤i≤Q)最終會(huì)以條帶的方式訪問存儲(chǔ)池中的P個(gè)SSD。

        由式(1),根據(jù)每個(gè)用戶I/O請(qǐng)求ri(1≤i≤Q)訪問的邏輯地址LBA(表示為ri.LBA)確定所訪問的RAID組的編號(hào)為:

        RAID_index(ri.LBA)=ri.LBA/Capacity_R

        (6)

        則該請(qǐng)求ri最終訪問的SSD集合定義為:

        D(rj)=DS(RAID_index(ri.LBA))

        (7)

        存儲(chǔ)池中每個(gè)SSD與用戶I/O請(qǐng)求ri之間的關(guān)系定義為:

        Dj∈SSDs,1≤j≤M

        (8)

        存儲(chǔ)池中每個(gè)SSD的負(fù)載定義為:

        Dj∈SSDs,1≤j≤M

        (9)

        在一個(gè)時(shí)間段內(nèi),每個(gè)I/O線程處理器根據(jù)存儲(chǔ)池中的每個(gè)SSD的負(fù)載確定重構(gòu)I/O請(qǐng)求BR={b1,b2,b3,…,bL}中每個(gè)bi(1≤i≤L)的重構(gòu)優(yōu)先級(jí)。bi的重構(gòu)優(yōu)先級(jí)Pro(bi)定義為:

        (10)

        4 性能評(píng)價(jià)與分析

        4.1 實(shí)驗(yàn)環(huán)境

        實(shí)驗(yàn)硬件環(huán)境采用超微NVMe存儲(chǔ)服務(wù)器,配置如下:2個(gè)Intel Xeon Gold 6128 3.4 GHz 6核CPU(支持超線程),196 GB內(nèi)存,最大支持10個(gè)NVMe硬盤,配置8塊Intel DC P4510系列2.0 TB NVMe硬盤。實(shí)驗(yàn)軟件環(huán)境為:操作系統(tǒng)為CentOS 7.7,內(nèi)核版本為4.19.46;NVMe存儲(chǔ)池管理軟件為NV-BSP。

        4.2 實(shí)驗(yàn)結(jié)果

        4.2.1 數(shù)據(jù)重構(gòu)時(shí)間

        為了評(píng)測(cè)基于存儲(chǔ)池的多線程并發(fā)I/O處理的效果,創(chuàng)建了3類虛擬盤:(1)RAID(3+1,5 020 GB):由4塊SSD組成的存儲(chǔ)池,RAID組配置為3塊數(shù)據(jù)盤和1塊校驗(yàn)盤組成的RAID5,虛擬盤容量為存儲(chǔ)池中所有可用空間容量5 020 GB;(2)RAID(7+1,11 714 GB):由8塊盤組成的存儲(chǔ)池,RAID組配置為7塊數(shù)據(jù)盤和1塊校驗(yàn)盤組成的RAID5,虛擬盤容量為整個(gè)存儲(chǔ)池的可用空間容量11 714 GB;(3)RAID(7+1,5 020 GB):由8塊盤組成的存儲(chǔ)池,RAID組配置為7塊數(shù)據(jù)盤和1塊校驗(yàn)盤組成的RAID5,虛擬盤容量為5 020 GB。存儲(chǔ)池設(shè)置了從1~24的不同I/O線程處理器數(shù)量。

        Figure 4 Time of data reconstruction

        圖4列出了在一塊物理盤掉電或出現(xiàn)故障時(shí),在沒有用戶I/O情況下不同配置的虛擬盤數(shù)據(jù)重構(gòu)時(shí)間。整體來看,不同配置的虛擬盤的數(shù)據(jù)重構(gòu)時(shí)間都隨著I/O線程處理器數(shù)量的增加而降低,說明增加存儲(chǔ)池中的I/O線程處理器數(shù)量能夠增加虛擬盤中各個(gè)RAID組進(jìn)行數(shù)據(jù)重構(gòu)的并發(fā)性,從而降低數(shù)據(jù)重構(gòu)時(shí)間。在4塊盤組成的存儲(chǔ)池中,當(dāng)I/O線程處理器數(shù)量大于4時(shí),虛擬盤RAID(3+1,5 020 GB)的重構(gòu)時(shí)間基本趨于平穩(wěn),也就是說在沒有用戶I/O的情況下,4個(gè)I/O線程處理器能夠較好地處理虛擬盤RAID(3+1,5 020 GB)的數(shù)據(jù)重構(gòu),再增加I/O線程處理器數(shù)量,數(shù)據(jù)重構(gòu)時(shí)間不會(huì)顯著降低。在虛擬盤RAID(3+1,5 020 GB)中,每個(gè)RAID組都來自存儲(chǔ)池中的4塊硬盤,每個(gè)I/O線程處理器負(fù)責(zé)的數(shù)據(jù)重構(gòu)操作會(huì)競(jìng)爭(zhēng)訪問存儲(chǔ)池中的4塊硬盤。當(dāng)I/O線程處理器數(shù)不斷增加時(shí),整個(gè)虛擬盤的重構(gòu)效率會(huì)受限于硬盤的訪問性能,這時(shí)增加I/O線程處理器已不能顯著縮短數(shù)據(jù)重構(gòu)時(shí)間,還會(huì)增加計(jì)算資源的開銷。同理,在8塊盤組成的存儲(chǔ)池中,不論虛擬盤容量的大小,在沒有用戶I/O請(qǐng)求的情況下,當(dāng)I/O線程處理器數(shù)量達(dá)到8時(shí),重構(gòu)時(shí)間基本趨于平穩(wěn),此時(shí)增加I/O線程處理器數(shù)量已不能顯著提高重構(gòu)性能。

        4.2.2 負(fù)載自適應(yīng)的I/O調(diào)度策略

        為了驗(yàn)證負(fù)載自適應(yīng)的請(qǐng)求調(diào)度策略,在NV-BSP中創(chuàng)建了一個(gè)由4塊SSD組成的存儲(chǔ)池,RAID組配置為2塊數(shù)據(jù)盤和1塊校驗(yàn)盤組成的RAID5,虛擬盤容量為1 000 GB。通過運(yùn)行FIO測(cè)試程序(job數(shù)量為1)模擬用戶I/O負(fù)載,在FIO運(yùn)行過程中,每隔1 min調(diào)整用戶I/O和數(shù)據(jù)重構(gòu)I/O的調(diào)用比例,記錄用戶I/O帶寬和重構(gòu)I/O帶寬。調(diào)整步驟如下所示:

        (1)在FIO程序運(yùn)行1 min后,將某塊存儲(chǔ)池中的硬盤掉電,存儲(chǔ)池啟動(dòng)重構(gòu)操作,這時(shí)用戶I/O和重構(gòu)I/O的比例為9∶1,即用戶I/O占90%;

        (2)在FIO程序運(yùn)行2 min后,調(diào)整用戶I/O和重構(gòu)I/O比例為1∶4,即用戶I/O占20%;

        (3)在FIO程序運(yùn)行3 min后,調(diào)整用戶I/O和重構(gòu)I/O比例為9∶1,即用戶I/O占90%;

        (4)在FIO程序運(yùn)行4 min后,終止FIO程序運(yùn)行,調(diào)低用戶I/O和重構(gòu)I/O比例直到數(shù)據(jù)重構(gòu)完成。

        圖5展示了用戶I/O帶寬和重構(gòu)I/O帶寬隨著用戶I/O和重構(gòu)I/O數(shù)量比例的調(diào)整而變化的情況。從圖5可以看出,當(dāng)存儲(chǔ)池觸發(fā)重構(gòu)操作后,由于用戶I/O和重構(gòu)I/O的調(diào)度比例為9∶1,用戶I/O的性能基本沒受影響,約為2.0 GB/s。當(dāng)用戶I/O和重構(gòu)I/O的調(diào)度比例調(diào)整為1∶4以后,在當(dāng)前時(shí)間段按照該比例調(diào)度一定數(shù)量的用戶I/O請(qǐng)求和重構(gòu)I/O請(qǐng)求進(jìn)入待執(zhí)行隊(duì)列,由于待執(zhí)行隊(duì)列中的用戶I/O請(qǐng)求數(shù)量急劇變少,而重構(gòu)I/O請(qǐng)求數(shù)量增加,因此用戶I/O的帶寬從2.0 GB/s左右急劇下降到620 MB/s左右,重構(gòu)I/O的性能從200 MB/s左右快速上升到1.2 GB/s左右。當(dāng)用戶I/O和重構(gòu)I/O的調(diào)度比例重新調(diào)整為9∶1時(shí),待執(zhí)行隊(duì)列中的用戶I/O數(shù)量急劇增多,因此用戶I/O請(qǐng)求的帶寬又快速上升。當(dāng)用戶I/O請(qǐng)求處理完畢時(shí),調(diào)低用戶I/O和重構(gòu)I/O比例,重構(gòu)性能又隨之上升。整個(gè)過程展示了NV-BSP支持隨著用戶負(fù)載的變化而調(diào)節(jié)用戶I/O和重構(gòu)I/O的調(diào)度比例。

        Figure 5 Bandwidth of I/O requests

        5 結(jié)束語

        針對(duì)傳統(tǒng)RAIS系統(tǒng)數(shù)據(jù)重構(gòu)時(shí)間長(zhǎng),且重構(gòu)時(shí)影響用戶I/O性能的問題,本文設(shè)計(jì)實(shí)現(xiàn)了一種多線程并發(fā)處理的存儲(chǔ)池,能夠并發(fā)處理用戶I/O和重構(gòu)I/O,提高存儲(chǔ)池的訪問性能?;谠摯鎯?chǔ)池提出一種負(fù)載自適應(yīng)的I/O調(diào)度策略,根據(jù)用戶負(fù)載的變化動(dòng)態(tài)調(diào)整用戶I/O請(qǐng)求和重構(gòu)I/O請(qǐng)求的調(diào)度比例,保證用戶I/O服務(wù)質(zhì)量的同時(shí),提升數(shù)據(jù)重構(gòu)效率。實(shí)驗(yàn)結(jié)果表明,基于存儲(chǔ)池的多線程并發(fā)I/O處理架構(gòu)能夠有效減少數(shù)據(jù)重構(gòu)時(shí)間,負(fù)載自適應(yīng)的I/O調(diào)度策略能夠支持用戶I/O和重構(gòu)I/O調(diào)度比例的動(dòng)態(tài)變化,在保證用戶I/O請(qǐng)求服務(wù)質(zhì)量的同時(shí),盡量保證重構(gòu)I/O請(qǐng)求與用戶I/O請(qǐng)求的并行執(zhí)行,提高重構(gòu)效率。下一步工作將圍繞存儲(chǔ)池的全局磨損均衡、負(fù)載特征的自適應(yīng)優(yōu)化等方面展開,以完善和優(yōu)化NV-BSP的功能和性能。

        猜你喜歡
        池中大塊線程
        選煤廠事故池中污染物在地下水中的遷移規(guī)律研究
        池中景象
        小讀者(2019年20期)2020-01-04 02:13:56
        淺談linux多線程協(xié)作
        V先生的幻想世界
        用大塊肉做丸子
        山東青年(2016年3期)2016-02-28 14:25:56
        詩劇
        Zr基大塊非晶合金低速切削性能試驗(yàn)研究
        可控?cái)D入復(fù)合膏漿防滲灌漿技術(shù)在大塊徑漂卵石層防滲處理工程中的應(yīng)用
        Linux線程實(shí)現(xiàn)技術(shù)研究
        么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        97中文乱码字幕在线| 精品国精品国产自在久国产应用| 永久无码在线观看| 日本在线中文字幕一区| 午夜国产精品视频在线观看| 国产激情无码一区二区三区| 亚洲免费观看在线视频| 久久99久久99精品免视看国产成人| 男女啪啪动态视频在线观看| 国产精品成熟老女人| 丰满的少妇xxxxx青青青| 中文精品久久久久中文| 激情五月开心五月av| 男人的天堂中文字幕熟女人妻| 大香伊蕉国产av| 禁止免费无码网站| 毛片在线视频成人亚洲| 成人亚洲一区二区三区在线| 永久免费观看的毛片手机视频| 欧洲AV秘 无码一区二区三| 91偷自国产一区二区三区| 东北少妇不带套对白| 精品欧美乱子伦一区二区三区| 热热久久超碰精品中文字幕 | 亚洲av五月天一区二区| 亚洲看片lutube在线观看| 国产成人拍精品免费视频| 手机在线中文字幕av| 中文字幕日韩精品有码视频| 欧美v亚洲v日韩v最新在线| 国产精品国产三级国产AvkTV| 日本一区二区在线免费看| 亚洲精品午夜无码专区| 亚州无线国产2021| 91人妻一区二区三区蜜臀| 丰满少妇被粗大猛烈进人高清| 亚洲国产一区二区三区亚瑟| 一本久久综合亚洲鲁鲁五月夫| 国产在线播放一区二区不卡| 无码综合天天久久综合网| www.av在线.com|