瓜哥圖解存儲操作系統(tǒng)變遷
之前的那期《瓜哥圖解PCIE/NVMe》
大家是不是意猶未盡?
那么今天瓜哥又來了
本期瓜哥圖解知識講堂繼續(xù)開講
從Dell SCOS看存儲操作系統(tǒng)變遷
外置傳統(tǒng)存儲系統(tǒng)的OS及其配置本身很少受到人們關(guān)注。人們往往更加重視存儲系統(tǒng)的架構(gòu)、規(guī)格、特性、場景、價格等。存儲系統(tǒng)的及其配置界面直接關(guān)系著系統(tǒng)的軟件特性對外的展現(xiàn),關(guān)系到易用性和運維成本。
該層屬于暗流洶涌的一層,也是決定了一個存儲系統(tǒng)是否穩(wěn)定可靠的關(guān)鍵一層,也是凝聚了對應(yīng)廠商多年心血的關(guān)鍵一層。哦?看似這一層好像很有技術(shù)含量?其實技術(shù)含量本身不高,就是工作量非常大。
這一層之所以被稱為暗流洶涌,是因為硬盤、HBA、鏈路這三樣哪樣都夠喝一壺的。
機械硬盤雖然存在這么多年了,但是其穩(wěn)定性依然是個問題,各種bug層出不窮。硬盤提供商自己其實是發(fā)現(xiàn)不了多少bug的,因為它們根本沒有大規(guī)模的場景去實踐。不少bug都是存儲廠商發(fā)現(xiàn)的。當然,能用軟件規(guī)避的,都規(guī)避掉了,而且可能并不會將問題反饋給硬盤廠商,因為這是天然的技術(shù)壁壘,否則反饋給了硬盤廠商的話,其他存儲廠商就不用耗費人力去解決該問題了。不同型號,甚至同一型號不同批次的硬盤的行為可能也不一樣,需要牽扯到大量的測試工作。
另外,HBA也是個難啃的骨頭,HBA主控固件是不開放給存儲廠商的,bug只能靠HBA廠商來解決,周期較長,有些必須從軟件上做規(guī)避。HBA主控的驅(qū)動程序一般是由存儲廠商自行開發(fā),往往固件和驅(qū)動都得配合著來改,坑也是不少的。
再就是鏈路問題,閃斷、誤碼等是常事,誰踩過足夠的坑,誰才能將這一層做的足夠穩(wěn)定。這一層需要盡量為上層提供一個穩(wěn)定不變的設(shè)備列表。
這一層雖說沒有太多的暗流,但是也夠得上異常澎湃。得益于底層的工作,這一層將獲得的物理設(shè)備做成邏輯設(shè)備,并需要負責數(shù)據(jù)的冗余,以及IO出錯時候的恢復。IO錯誤是家常便飯了,各種原因可能都會導致IO錯誤,比如壞扇區(qū)/壞道,信號質(zhì)量問題導致的數(shù)據(jù)校驗錯誤,機械問題等等。不管原因如何,這一層都需要將這個錯誤糾正回來,比如利用Raid技術(shù)。該層擁有很多開源實現(xiàn),比如Linux下mdraid模塊等,其更加開放,可控性也更好。
該層需要為上層提供一個穩(wěn)定的邏輯資源視圖。這一層早期主要是Raid功能,后來逐漸演化出Raid2.0、分層等技術(shù)。
該層負責緩存管理。又分為數(shù)據(jù)持久性管理和性能管理。
持久性管理主要是將臟數(shù)據(jù)按照對應(yīng)的策略刷到后端硬盤上***保存。在這一層上,早期的存儲系統(tǒng)基本沒有什么優(yōu)化措施,大家千篇一律,按照LRU等通用算法,甚至直接使用Linux原生的Page Cache策略而不加修改。到后來,隨著互聯(lián)網(wǎng)蓬勃發(fā)展,業(yè)務(wù)層不管是在種類還是數(shù)量上,都有點爆發(fā)式增長,直接對存儲系統(tǒng)產(chǎn)生了影響。不少存儲系統(tǒng)演化出諸如QoS這種精細化性能調(diào)節(jié)能力。比如其中典型的Dell的(Compellent)SC系列存儲系統(tǒng)中就針對QoS做了精細化實現(xiàn)。其可以實現(xiàn)針對單個邏輯卷或者一組邏輯卷,設(shè)置其總IOPS、MB/s和時延。其實現(xiàn)原理是在緩存層的隊列處理時增加了對應(yīng)的調(diào)節(jié)策略,包括入隊比例、重排等。
其中Relative Priority指的是當發(fā)生隊列較滿時,該卷的IO是要被提前、不動,還是排***得到執(zhí)行。用戶可以不指定具體的指標,而用相對性能來配置某個卷或者卷組的QoS,這就一定程度上簡化了配置,對于那些生手來講比較合適。
具體做法則是在Dell的SCOS存儲操作系統(tǒng)配置界面中先創(chuàng)建一個QoS Profile,在其中定義對應(yīng)的指標,然后將該Profile黏著在邏輯卷作為其一個屬性即可。