久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

RAID技術淺析

 漫步之心情 2022-05-20 發(fā)布于湖南

RAID

前面我們介紹了磁盤的基本原理,,我們知道一塊磁盤的容量和速度是有限的,對于一些應用來說,,可能需要幾個TB的大小的來存放數據,,我們必須要制造更大單盤容量的磁盤嗎?實際上,,可以使用多塊磁盤并行起來解決這個問題,,這就是RAID技術。

RAID:獨立的磁盤組成具有冗余特性的陣列,。Redundant Array of Independent Disks

文章圖片1

七種RAID

RAID 0

實現(xiàn)RAID 0 有兩種方式,,一種是非條帶化的模式,一種是條帶化的模式,。

對于非條帶化的模式:

RAID 0 : 一塊磁盤寫滿了,,就往另一塊上寫, 一次IO只用到一塊磁盤,,對整個系統(tǒng)來說容量增大了,。

因為寫滿一塊物理盤以后再寫另一塊盤。對寫IO沒有任何優(yōu)化,,但是對讀IO能提高一定的并發(fā)IO讀幾率,。

我們希望可以這樣,同時向兩塊磁盤進行寫,。我們可以把要寫的IO塊進行編號,,1、2,、3……100等,,然后在$t_1$時刻,磁盤A和磁盤B同時寫入1,、3兩塊,,然后$t_2$時刻,,同時寫入2、4塊,,依次類推,。

這樣就可以實現(xiàn)并發(fā)寫IO呢。接下來就是如何來進行塊的劃分的問題了,。

其實磁盤已經經過低級格式化了,,也就是劃分為若干的扇區(qū),但是扇區(qū)只有512B大小,,這么小的粒度太消耗性能,。所以我們要重新劃分磁盤,而且又不能拋棄原有的扇區(qū),。

最直接的想法就是若干個扇區(qū)組成一個Data block,,比如由4個扇區(qū)組成一個塊(block)

  • data Block:N倍個扇區(qū)大小的容量,Block只有在一個Segment中是物理連續(xù)的,,邏輯連續(xù)就需要跨物理磁盤,。

下圖是引入了分割思想以后的硬盤,

文章圖片2
  • 不同磁盤的相同偏移處的塊組成成了Stripe,,也就是條帶,,Stripee
  • Segment:一個Stripee所占用的單塊磁盤上的區(qū)域。

那么條帶深度和條帶長度指的就是

  • 每個Segment包含的塊或者扇區(qū)的數量稱為條帶深度
  • 條帶長度:一Stripee橫跨過的扇區(qū)或者塊的個數或者字節(jié)容量,。
文章圖片3

總結

文章圖片4

這就是所謂的條帶化,,它是對磁盤邏輯上的劃分,相當于在磁盤上加了一個中間層而已

這樣對于一個大塊的數據,,可以以條帶為單位進行寫入,,也就是數據被分為了多塊寫入了4塊硬盤。而不是向之前一樣順序的寫入一個硬盤里面

RAID 0要提升性能,,條帶要做得越小越好,。因為若是條帶深度容量大于寫入的數據的長度,這段數據將會落到同一個segment中,,相當于本次IO只能從一塊硬盤中讀取,。

但是條帶太小,并發(fā)IO幾率降低,。因為如果條帶太小,,每次IO一定會占用大部分物理盤,隊列中的IO只能等待IO結束后才使用物理盤,。

總之,參與RAID0 的物理盤會組成一個邏輯上連續(xù),,物理上也連續(xù)的虛擬磁盤,??刂破鲗μ摂M磁盤發(fā)出的指令,被RAID控制器轉換為真實磁盤IO,,再返回主機磁盤控制器,,經過控制器在cache中的組合,再提交給主機控制器,。

RAID 0有非常明顯的缺點,,沒有任何的備份,所以任何一塊硬盤損壞均會造成數據丟失,。

文章圖片5

RAID 1

RAID 0 最大的缺點是沒有備份盤,。RAID 1 進行了改正。他采用了一塊用于正常使用,,另一塊作為影子盤存在,。

也就是寫數據的時候,會寫兩份,。所以寫的時候的速度并不快,,而且可用容量實際上就只有一塊盤,空間浪費很嚴重,。

文章圖片6

RAID 2

RAID 0 速度快,,但是沒有備份,RAID 1 有備份,,但是可用容量太少,。

RAID 2 的改進在于引入了校驗盤的概念。當數據損壞的時候,,可以根據校驗盤的數字,,恢復原來磁盤上的數字。

RAID 2采用“漢明碼”來進行校驗,,這種糾錯技術算法比較復雜,,而且需要加入大量的校驗位,比如4位數據編碼,,會加入3位校驗位,。

同時數據存儲的時候,會把每個IO下的數據以位為單位強行打散在每個磁盤,。

磁盤最小的IO單位是512B,,如何寫入1bit?上層IO可以先經過文件系統(tǒng),,然后通過磁盤控制器驅動向磁盤發(fā)出IO,。最終IO大小都是N倍的扇區(qū)。即使只要幾個字節(jié),,也需要讀出整個扇區(qū)

所以每次必須所有聯(lián)動起來一次進行存儲,,如果各磁盤的主軸沒有同步,,則先讀出數據的硬盤需要等待。所以開銷也比較大,。

正因為此,,目前RAID2已經不怎么使用了。

文章圖片7

RAID 3

RAID 3引入了一種新的校驗算法,,可以將數據盤中的每個位做XOR運算,,然后將結果寫入到校驗盤的對應位置。任何一個扇區(qū)損壞,,可以通過剩余的位和校驗位一起進行XOR運算來獲得丟失的位,。

同時RAID 3 把條帶長度設置為4K字節(jié),因為一般文件系統(tǒng)剛好是4KB一個塊,,所以如果用4塊數據盤,,條帶深度為1KB,也就是2個扇區(qū),。這樣,,可以保證連續(xù)寫的時候,以條帶為單位寫入,,提高并行度,。

所以RAID 2和RAID 3的每次IO都會牽動所有磁盤并行讀寫,每次只能做一個IO,,不適合多IO并發(fā)的情況,。

也說RAID 2和RAID 3適合IO塊大的情況

一般來說,RAID 3 的條帶長度= 文件系統(tǒng)的大小,,就不會產生條帶不對齊的現(xiàn)象,。減少碎片。

關于RAID 3的校驗盤有沒有瓶頸的問題

若一個邏輯塊是4KB,,4 1塊盤,,文件系統(tǒng)下發(fā)一個IO至少是以一個邏輯塊為單位的。所以文件系統(tǒng)下發(fā)一次IO,,不管多大都是跨越了所有數據盤的,。

  1. 連續(xù)
  2. 連續(xù)讀:尋道時間忽略,IOPS受限于傳輸時間,,因為RAID 3 是把一個IO分散到N個數據盤上,,即傳輸時間是單盤的1/N,即持續(xù)讀的性能是單盤的N倍,。
  3. 持續(xù)寫:分擔到N個盤,,也是單盤的1/N。因為每次IO寫,,物理磁盤上的所有分塊都需要更新,,包括校驗塊,,就沒有瓶頸和熱點的區(qū)別。
  4. 隨機
  5. 隨機讀寫:多個盤同時換道,,所以性能相對于單盤沒有提升。而且有的磁盤不是嚴格主軸同步的,,會拖累,。
  6. 并發(fā)IO:一次IO必定會占用所有的盤,其他的盤必須等待,,所以根本不能并發(fā)IO,。

總結起來就是RAID 3適合于連續(xù)大塊的讀和寫,不適合于隨機IO和并發(fā)IO,。

文章圖片8

RAID 4

  • RAID 0屬于激進派,,為了速度,根本不要備份,。
  • RAID 1屬于保守派,,需要浪費一個鏡像的容量。
  • RAID 2和RAID 3 屬于中庸派,。

RAID 2和RAID 3已經解決了校驗盤的問題,,避免了一塊盤損壞數據全丟失的問題。但是對于無法得到并發(fā)IO的問題還沒解決,。

RAID 2和RAID 3的思想是讓所有數據盤都參與起來,。對于隨機小塊讀寫,每秒產生的IO數目很大,,但是每個IO的請求數據長度卻很短,,如果所有磁盤同一時刻都在處理一個IO,得不償失,。不如讓這個IO直接寫入一塊磁盤,,其他的做其他的IO。

方法有:

  • 可以增加條帶深度,,一個IO比條帶深度小,,所以可以完全被一個磁盤所處理。直接寫入了一塊磁盤的Segment中,。
  • 增大數據的隨機分布性,,不要連續(xù)在一塊磁盤分布,要和其他IO所用的磁盤不一樣,。

所以 RAID 4 的改進是增加了條帶深度,,RAID 4相對于RAID 3 性能幾乎沒有提升。但是至少讓它可以進行并發(fā)IO

文章圖片9

RAID 5

RAID 4相對于RAID 3 性能幾乎沒有提升,。而且因為每個IO必定會占用校驗盤,, 所以校驗盤成為了瓶頸,,而且是熱點盤,容易壞,。

這樣看來RAID 4其實有些不倫不類,。

RAID 4的關鍵錯誤在于忽略了校驗盤,每個IO不管怎么樣都會讀寫校驗盤的,。

RAID 5的改進在于將校驗盤把校驗盤分割開,,依附于數據盤。把條帶做得很大,,保證每次IO不會占滿整個條帶,。

2塊盤的RAID 5系統(tǒng),對于寫操作來說不能并發(fā)IO,,因為訪問一塊盤的時候,,校驗信息一定在另一塊盤中。同理,,3塊盤也不能

所以最低可以并發(fā)IO的RAID 5 需要4塊盤,,此時最多可以并發(fā)兩個IO,并發(fā)的幾率是0.0322,。

RAID 5 磁盤數量越多,,并發(fā)的幾率越大。

RAID 5與RAID 0相比

RAID 5 是繼RAID 0 , RAID 1以后又一個可以實現(xiàn)并發(fā)IO的陣式,,但是比RAID 1更劃算,,比RAID 0更安全。

  • 容量方面:隨著磁盤數增加,,RAID5浪費的是N分之一,,而RAID永遠是二分之一。
  • 性能方便:RAID 5和RAID 0都是使用條帶來提升性能,,但是RAID 6又克服了RAID 0的無保護,。

RAID 5與RAID 3相比

RAID 5的連續(xù)讀寫不如RAID 3,因為RAID 3 的條帶深度很小,,每次IO可以牽動所有的磁盤為之服務,。

RAID 5 每次IO一般只使用一塊數據盤,先放滿一個Segment,,再去下一個磁盤的Segment存放,,塊編號是橫向進行。

所以RAID 3在IO SIZE大的時候高性能,,RAID 5在隨機IOPS大時有高性能,。

RAID 5的缺點

RAID 5的缺點是寫懲罰:寫性能差,因為每寫一扇區(qū)就要產生其校驗扇區(qū),一并寫入校驗盤,。

新數據過來,,控制器立即讀待更新扇區(qū)的數據,然后讀此條帶的校驗數據根據公式新數據的校驗數據 = (老數據 EOR 新數據) EOR 老校驗數據 得到新校驗數據,,然后寫到磁盤中,。

所以每次寫入都需要更新校驗盤。浪費3個其他動作,,也就是讀老數據,,讀老校驗數據,然后寫新數據和校驗數據,,浪費了除了“寫新數據”之外的操作。

總結:隨機并發(fā)IO和寫性能二者只能取其一,。

RAID 5EE

RAID 5的缺點是不能壞兩塊盤,,因為如果一塊盤壞了,可以用其他數據校驗出,。

可在陣式中增加熱備盤,,不參與組陣,只有在損壞的時候立刻頂替,,其他盤恢復數據,。如果此時有請求此盤的IO,則其他盤暫代,。

  • RAID 5E :讓陣中其他盤都從各自的領地里面保留出一塊空間,,作為熱備盤。
  • RAID 5EE:熱備盤融合到數據盤中,,如校驗盤一般,。
文章圖片10

RAID 6

同樣RAID 6也是為了解決RAID 5只能壞一塊盤的問題。

如果壞了兩塊盤,,相當于存在兩個未知數,,要求解兩個未知數據,一定需要另外一個不相關的等式來求解,。

所以使用兩套算法各自算出一個等式,,分別放在兩塊校驗盤中。

優(yōu)點是更安全,,缺點是寫懲罰更大,。

文章圖片11

RAID 卡

軟件RAID運行于操作系統(tǒng)底層,將SCSI 或者IDE控制器提交上來的物理磁盤,,虛擬成虛擬磁盤,,再提交給卷管理程序。但是

軟件RAID :

  • 占用內存空間
  • 占用CPU
  • 無法把操作系統(tǒng)盤做成RAID :如果操作系統(tǒng)損壞了,就無法運行,。

既然軟件這么多缺點,,所以人們謀求用硬件來實現(xiàn)RAID的方法。

RAID卡就是利用獨立硬件來實現(xiàn)RAID功能的方法,。

一般在SCSI卡上增加了額外的芯片用于RAID功能,。

文章圖片12

SCSI RAID卡上一定要包含SCSI控制器,因為其后端連接依然是SCSI的物理磁盤,。

操作系統(tǒng)如何看待邏輯磁盤

RAID控制器向OS提交的是虛擬邏輯盤,,而非所有的物理磁盤。每個邏輯盤對OS來說都是一塊單獨的磁盤,。

比如安裝了2塊IDE磁盤和4塊SCSI磁盤,,IDE直接連接到IDE接口,SCSI連接到PCI接口的SCSI卡上,。

若無RAID,,可以看到6塊硬盤。

可以通過RAID程序把兩塊IDE做成RAID 0 ,, 變成了2*80G = 160G的磁盤,。

4塊SCSI磁盤做RAID 5,相當于3塊盤的容量,,即216GB,。

所以磁盤管理器其實可以看到兩塊硬盤,可以格式化為NTFS等文件格式,。

與分區(qū)對比

與分區(qū)不同,,分區(qū)是OS在物理磁盤上做再次劃分。而RAID 卡提供給OS的是任何時候是一塊或者幾塊的邏輯盤,,也就是OS認為的物理磁盤,。

OS在磁盤上還可以進行分區(qū),格式化,。

LUN:條帶化以后,,RAID程序操控SCSI控制器向OS層的驅動程序代碼提交虛擬化之后的虛擬盤

RAID 控制器如何管理邏輯磁盤

RAID 卡可以對邏輯磁盤進行再次的劃分,,既然要劃分,,必須對某塊磁盤的某個區(qū)域劃分給那塊邏輯盤用心里有數,所以有必要在每塊磁盤保留一個區(qū)域,,記錄劃分信息,、RAID類型以及組內的磁盤信息。這種統(tǒng)一的RAID信息格式:DDF ,。

RAID卡可針對總線上某幾塊磁盤做一種RAID類型,,然后針對另幾塊磁盤做另一種RAID類型。

一種RAID類型包含的磁盤共同組成了一個RAID GROUP ,簡稱RG。

邏輯盤就是從RG劃分出來的,,原則上不能跨RG來劃分,,因為RG的RAID類型不一樣,性能就不一樣,。

RAID 卡上的內存

RAID卡上的內存,,有數據緩存和代碼執(zhí)行內存的作用

  • RAID 控制器和磁盤通道控制器之間需要一個緩存來適配。適配不同速率的通信
  • 緩存數據IO:緩存隊列,,執(zhí)行或者優(yōu)化合并,。

RAID卡的緩存

對于上層的寫IO,有兩種手段來處理,;

  • Write Back模式:將上層發(fā)來的數據保存在緩存中之后,,立即通知主機IO完成,執(zhí)行下一個IO,。實際上此時數據還在緩存中,,沒有寫入磁盤。RAID卡在空閑的時候,,一條一條或者批量寫入磁盤,其實是欺騙了主機,。如果意外,,數據丟失,上下數據不一致,。需要使用電池來保護緩存,。
  • Write Through模式:只有在寫入到磁盤之后才會通知主機,但是緩存的提速作用沒有優(yōu)勢,。緩沖作用依舊生效,。

對于讀緩存

  • 有一種算法叫PreFetch:預取,讀緩存,。其實就是認為主機下一次IO,,有很大的幾率是讀取到所在磁盤位置的相鄰數據。所以在主機還沒發(fā)出讀請求的時候,,就先把相鄰的數據讀到緩存中,。對大文件應用很適用。
  • 還有一種緩存算法:假設主機的下一次IO可能還會讀取上一次讀過的數據,。讀了一段數據到緩存之后,,如果數據被主機的寫IO更改了,不會立即寫入磁盤,,而是留在緩存中,。等到主機有一段時間不用了,則寫入磁盤中。

中高端的RAID卡一般有256M的RAM作為緩存,。

文章圖片13

卷管理層

到目前為止,,我們已經可以通過RAID卡對外呈現(xiàn)一個一個的邏輯盤了,但是邏輯盤存在一個非常大的問題就是不夠靈活,。

如果一開始就劃分一個100G的邏輯盤,,如果數據盛不下了,此時把其他磁盤上未使用的空間挪一部分到邏輯盤上,。

但是從RAID卡里面增加邏輯盤容量很費功夫,。即使實現(xiàn)了,上層文件系統(tǒng)也無法立刻感知到,。所以對要求不間斷服務的服務器不適用,。

歸根結底,因為RAID控制器是由硬件來實現(xiàn)RAID的,,所以操作起來不靈活,,如果OS把RAID控制器提交上來的邏輯盤,加以組織和再分配,。就非常靈活,,其實就是加一層靈活的管理層。

卷管理層:Volume Manager,,LDM(邏輯磁盤管理)

LVM開始是Linux系統(tǒng)上的一種實現(xiàn),,后來移植到AIX和HPUX等系統(tǒng)

  • PV:OS識別的物理磁盤(或者RAID提交的),類似一塊面團
  • VG:多個PV放到一個VG里面,,VG(volume group)卷組,。VG會將所有的PV首尾相連,組成邏輯上連續(xù)編址的存儲池,。
  • PP:物理區(qū)塊,,Physical Partition,在邏輯上將一個VG分割為連續(xù)的小塊,。(把一大盆面掰成大小相等的無數塊小面塊),。LVM會記錄PP的大小和序號的偏移。如果PV本身是經過RAID控制器虛擬化而成的LUN,,扇區(qū)可能是位于若干條帶中,,物理上不一定連續(xù)。
  • LP:邏輯區(qū)塊,,可以對應一個PP,,也可以對應多個PP,前者對應前后沒有什么區(qū)別,。后者又分為兩種情況,。
  • 多個PP組成一個大LP,,像RAID 0
  • 一個LP對應幾份PP,這幾份PP每一份內容一樣,,類似RAID1,。然后用一個LP來代表他們,往這個LP寫數據,,也就是寫到了這個LP對應的幾份PP中,。
  • LV:若干LP組成LV (邏輯卷),也就是LVM所提供最終可以用來存儲數據的單位,。生成的邏輯卷,,在主機看來還是普通的磁盤,可以進行分區(qū)和格式化,。

大小可以隨時變更,,也不需要重啟OS。前提是還有備用的PP,。

操作很簡單:創(chuàng)建PV,,加入VG ,創(chuàng)建LV,,格式化,,隨便擴展。

最大的好處:生成的LV可以跨越RAID卡提交給OS的物理或者邏輯盤,。

文章圖片14

卷管理軟件的實現(xiàn)

那么卷管理軟件到底怎么實現(xiàn)的呢,?

LVM會記錄某塊物理盤的名稱、容量,,誰是誰,,從哪里到哪里是屬于這塊盤的,,地址是多少等,。這些信息記錄在磁盤某個區(qū)域,LVM中這個區(qū)域叫VGDA

LVM可以通過讀取每塊物理磁盤上的這個區(qū)域來獲得LVM的配置信息,,比如PP大小,,初始偏移,PV的數量,,排列順序和映射關系等,。

LVM初始化的時候讀取信息,然后在緩存中生成映射公式,,從而完成LV的掛載,。如果此時上層來一個IO,LVM就需要通過緩存中的映射關系判斷地址對應到實際物理磁盤的哪個地址,。然后通過磁盤控制器驅動直接給這個地址發(fā)數據,。這個地址被RAID控制器接收到了,,還需要做一次轉換。

總之:卷管理軟件就是運行在OS磁盤控制器驅動程序之上的軟件,,作用是實現(xiàn)RAID卡硬件管理磁盤空間所實現(xiàn)不了的靈活功能,,比如隨時擴容。

磁盤在VM這一層處理之后,,稱為卷更為恰當,。因為磁盤控制器看待磁盤,就是盤片 磁頭,,而卷管理軟件看待磁盤,,會認為它是一個線性的大倉庫,而不管倉庫用什么方式存儲,。

倉庫的每個房間都有一個地址(LBA),,VM只需要知道一共有多少,讓庫管員(磁盤控制器驅動)從某段地址(LBA地址段)存取貨物(數據),,那么庫管員立即操控機器(磁盤控制器)來各個房間取貨物(數據),,這就是VM的作用。

** 即從底到上依次是:物理磁盤,、磁盤控制器,、IO總線、總線驅動,、磁盤控制器驅動,、卷管理程序**

在底層磁盤擴容之后,磁盤控制器驅動程序會通知VM已經增大了多少容量

擴大,、收縮卷需要其上的文件系統(tǒng)來配合,。

MBR 和VGDA

分區(qū)管理是最簡單的卷管理方式,分區(qū)就是將一個磁盤抽象為一個倉庫,,然后將倉庫劃分為一庫區(qū),、二庫區(qū)等。

分區(qū)管理和卷管理最大的不同在于,,分區(qū)管理只能針對單個磁盤進行劃分,,而不能將磁盤進行合并再劃分。

分區(qū)信息保存在磁盤上,,位于LBA1這個扇區(qū),,又稱為MBR也就是主引導記錄。

BIOS代碼都是固定的,,所以必定要執(zhí)行MBR上的代碼,,新出來的規(guī)范EFI可以靈活定制從那個磁盤的哪個扇區(qū)啟動,

MBR除了包含啟動指令代碼,,還包含了分區(qū)表,。啟動的時候,,程序會跳轉到活動分區(qū)去讀取代碼做OS啟動。所以必須有一個活動分區(qū),。

卷管理軟件在劃分了邏輯卷以后同樣需要記錄卷怎么劃分的,,使用一種叫VGDA的數據結構。

高級VM沒有拋棄MBR,,而是在此基礎上,,增加了類似VGDA的這樣的數據結構來動態(tài)管理磁盤。

文件系統(tǒng)

文件系統(tǒng)相當于理貨員,,與庫管員一起完成管理糧庫的工作,。

應用程序只需要告訴文件系統(tǒng)需要放多少的數據或者讀多少數據,而文件系統(tǒng)不需要關心倉庫到底在那里,,放到那個房間,。

文件系統(tǒng)需要將數據存放在那里記錄下來。

如果存取的數據量大,,每次記錄的數很大,。將8個房間劃分為一個邏輯房間,稱作“簇”

數據如果找連續(xù)的簇進行存放,,則還必須花時間把整理倉庫,,整理出連續(xù)的空間來,所以不如在描述數據存放的方式,,比如數據 10000 簇2,6,18,,這樣就可以解決空間浪費的問題,而且不需要經常整理庫,。

但是這樣又存在一個問題,,數據描述的方式變得長短不一,可以為了簡化處理,,需要給一個定長的描述,。比如數據 100000 首簇1,然后在在首簇做一個標記,,寫明下一個簇是多少號,,然后找到下一個簇,,根據簇的路標,,到下下個簇進行取貨,依此類推,。

如果要尋找空的簇,,只需要找格子上沒有寫字的簇即可。

總結一下,,

描述貨物的三字段:名稱,、數量,、存放的第一個簇。

進一步優(yōu)化:

貨物雖然有可能存放在不連續(xù)的簇中,,但是這些簇往往也是局部連續(xù)的,。所以如果是一段一段的找而不是一簇一簇的找,會節(jié)約時間,。比如簇段1~3,,簇段5~7等等。

所以記錄數據存放信息的本子就是元數據,,也就是用來描述數據怎么組織的數據,。

如果記錄本丟失,縱然貨物無損,,也無法取出,,因為無法判斷貨物的組織結構了。

文件系統(tǒng)的IO方式

IO Manager是OS內核中專門來管理IO的模塊,,可以協(xié)調文件系統(tǒng),、磁盤驅動的運作,流程如下

  • 應用調用文件系統(tǒng)接口
  • IO Manager把請求發(fā)送給文件系統(tǒng)模塊
  • 文件系統(tǒng)映射為卷的LBA
  • 文件系統(tǒng)向IO Manager調用卷管理軟件模塊的接口
  • 卷管理軟件將卷對應的LBA反映為實際的LBA,,并請求調用磁盤控制器驅動程序,。
  • IO Manager向磁盤控制器驅動程序請求將對應的LBA段從內存寫入到物理磁盤。

文件系統(tǒng)IO:

  • 同步IO:進程調用了IO以后,,必須等到下位程序返回信號,,否則一直等待,被掛起,。
  • 如果下位程序沒有得到數據
  • 阻塞IO:下位程序等待自己的下位程序返回數據,。
  • 非阻塞IO:通知上位程序數據沒收到。
  • 異步IO:請求發(fā)出以后,,執(zhí)行本線程的后續(xù)代碼,,直到時間片到或者被掛起。這樣應用程序的響應速度不會受IO瓶頸的影響,,即使這個IO很長時間沒有完成,。

異步IO和非阻塞IO另一個好處:文件系統(tǒng)不需要等待及時返回數據,可以對上次的IO進行優(yōu)化排隊,。

Direct IO:文件系統(tǒng)有自己的緩存機制,,數據庫也有緩存,IO發(fā)出之前已經經過自己的優(yōu)化了,,如果又在文件系統(tǒng)層面再優(yōu)化一次,,多次一舉。使用Direct IO以后IO請求,、數據請求以及回送數據不被文件系統(tǒng)緩存,,直接進入應用程序的緩存中,,可以提升性能。此外,,在系統(tǒng)路徑上任何一處引入了緩存,,若采用write back模式,都存在數據一致性的問題,,因為Direct IO繞過了文件系統(tǒng)的緩存,,降低了數據不一致性。

文章圖片15

附塊存儲,、文件存儲,、對象存儲和分布式存儲的區(qū)別

【塊存儲】

典型設備:磁盤陣列,硬盤

塊存儲主要是將裸磁盤空間整個映射給主機使用的,,就是說例如磁盤陣列里面有5塊硬盤(為方便說明,,假設每個硬盤1G),然后可以通過劃邏輯盤,、做Raid,、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬盤。(假設劃分完的邏輯盤也是5個,,每個也是1G,,但是這5個1G的邏輯盤已經于原來的5個物理硬盤意義完全不同了。例如第一個邏輯硬盤A里面,,可能第一個200M是來自物理硬盤1,,第二個200M是來自物理硬盤2,所以邏輯硬盤A是由多個物理硬盤邏輯虛構出來的硬盤,。)

接著塊存儲會采用映射的方式將這幾個邏輯盤映射給主機,,主機上面的操作系統(tǒng)會識別到有5塊硬盤,但是操作系統(tǒng)是區(qū)分不出到底是邏輯還是物理的,,它一概就認為只是5塊裸的物理硬盤而已,,跟直接拿一塊物理硬盤掛載到操作系統(tǒng)沒有區(qū)別的,至少操作系統(tǒng)感知上沒有區(qū)別,。

此種方式下,,操作系統(tǒng)還需要對掛載的裸硬盤進行分區(qū)、格式化后,,才能使用,,與平常主機內置硬盤的方式完全無異。

優(yōu)點:

1,、 這種方式的好處當然是因為通過了Raid與LVM等手段,,對數據提供了保護,。

2,、 另外也可以將多塊廉價的硬盤組合起來,,成為一個大容量的邏輯盤對外提供服務,提高了容量,。

3,、 寫入數據的時候,由于是多塊磁盤組合出來的邏輯盤,,所以幾塊磁盤可以并行寫入的,,提升了讀寫效率。

4,、 很多時候塊存儲采用SAN架構組網,,傳輸速率以及封裝協(xié)議的原因,使得傳輸速度與讀寫速率得到提升,。

缺點:

1,、采用SAN架構組網時,需要額外為主機購買光纖通道卡,,還要買光纖交換機,,造價成本高。

2,、主機之間的數據無法共享,,在服務器不做集群的情況下,塊存儲裸盤映射給主機,,再格式化使用后,,對于主機來說相當于本地盤,那么主機A的本地盤根本不能給主機B去使用,,無法共享數據,。

3、不利于不同操作系統(tǒng)主機間的數據共享:另外一個原因是因為操作系統(tǒng)使用不同的文件系統(tǒng),,格式化完之后,,不同文件系統(tǒng)間的數據是共享不了的。例如一臺裝了WIN7/XP,,文件系統(tǒng)是FAT32/NTFS,,而Linux是EXT4,EXT4是無法識別NTFS的文件系統(tǒng)的,。就像一只NTFS格式的U盤,,插進Linux的筆記本,根本無法識別出來,。所以不利于文件共享,。

【文件存儲】

典型設備:FTP、NFS服務器

為了克服上述文件無法共享的問題,所以有了文件存儲,。

文件存儲也有軟硬一體化的設備,,但是其實普通拿一臺服務器/筆記本,只要裝上合適的操作系統(tǒng)與軟件,,就可以架設FTP與NFS服務了,,架上該類服務之后的服務器,就是文件存儲的一種了,。

主機A可以直接對文件存儲進行文件的上傳下載,,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,,因為文件管理功能已經由文件存儲自己搞定了,。

優(yōu)點:

1、造價交低:隨便一臺機器就可以了,,另外普通以太網就可以,,根本不需要專用的SAN網絡,所以造價低,。

2,、方便文件共享:例如主機A(WIN7,NTFS文件系統(tǒng)),,主機B(Linux,,EXT4文件系統(tǒng)),想互拷一部電影,,本來不行,。加了個主機C(NFS服務器),然后可以先A拷到C,,再C拷到B就OK了,。(例子比較膚淺,請見諒……)

缺點:

讀寫速率低,,傳輸速率慢:以太網,,上傳下載速度較慢,另外所有讀寫都要1臺服務器里面的硬盤來承擔,,相比起磁盤陣列動不動就幾十上百塊硬盤同時讀寫,,速率慢了許多。

【對象存儲】

典型設備:內置大容量硬盤的分布式服務器

對象存儲最常用的方案,,就是多臺服務器內置大容量硬盤,,再裝上對象存儲軟件,然后再額外搞幾臺服務作為管理節(jié)點,,安裝上對象存儲管理軟件,。管理節(jié)點可以管理其他服務器對外提供讀寫訪問功能,。

之所以出現(xiàn)了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,,發(fā)揚它倆各自的優(yōu)點,。簡單來說塊存儲讀寫快,不利于共享,,文件存儲讀寫慢,,利于共享,。能否弄一個讀寫快,,利 于共享的出來呢。于是就有了對象存儲,。

首先,,一個文件包含了了屬性(術語叫metadata,元數據,,例如該文件的大小,、修改時間、存儲路徑等)以及內容(以下簡稱數據),。

以往像FAT32這種文件系統(tǒng),,是直接將一份文件的數據與metadata一起存儲的,存儲過程先將文件按照文件系統(tǒng)的最小塊大小來打散(如4M的文件,,假設文件系統(tǒng)要求一個塊4K,,那么就將文件打散成為1000個小塊),再寫進硬盤里面,,過程中沒有區(qū)分數據/metadata的,。而每個塊最后會告知你下一個要讀取的塊的地址,然后一直這樣順序地按圖索驥,,最后完成整份文件的所有塊的讀取,。

這種情況下讀寫速率很慢,因為就算你有100個機械手臂在讀寫,,但是由于你只有讀取到第一個塊,,才能知道下一個塊在哪里,其實相當于只能有1個機械手臂在實際工作,。

而對象存儲則將元數據獨立了出來,,控制節(jié)點叫元數據服務器(服務器 對象存儲管理軟件),里面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分布式服務器中的信息),,而其他負責存儲數據的分布式服務器叫做OSD,,主要負責存儲文件的數據部分。當用戶訪問對象,,會先訪問元數據服務器,,元數據服務器只負責反饋對象存儲在哪些OSD,,假設反饋文件A存儲在B、C,、D三臺OSD,,那么用戶就會再次直接訪問3臺OSD服務器去讀取數據。

這時候由于是3臺OSD同時對外傳輸數據,,所以傳輸的速度就加快了,。當OSD服務器數量越多,這種讀寫速度的提升就越大,,通過此種方式,,實現(xiàn)了讀寫快的目的。

另一方面,,對象存儲軟件是有專門的文件系統(tǒng)的,,所以OSD對外又相當于文件服務器,那么就不存在文件共享方面的困難了,,也解決了文件共享方面的問題,。

所以對象存儲的出現(xiàn),很好地結合了塊存儲與文件存儲的優(yōu)點,。

最后為什么對象存儲兼具塊存儲與文件存儲的好處,,還要使用塊存儲或文件存儲呢?

1,、有一類應用是需要存儲直接裸盤映射的,,例如數據庫。因為數據庫需要存儲裸盤映射給自己后,,再根據自己的數據庫文件系統(tǒng)來對裸盤進行格式化的,,所以是不能夠采用其他已經被格式化為某種文件系統(tǒng)的存儲的。此類應用更適合使用塊存儲,。

2,、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟件以及大容量硬盤,。如果對數據量要求不是海量,,只是為了做文件共享的時候,直接用文件存儲的形式好了,,性價比高,。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多