技術(shù)筆記系列 - SAN存儲(chǔ)的長(zhǎng)鏈條
十幾年前學(xué)習(xí)DOS內(nèi)核的時(shí)候,是可以直接寫(xiě)程序控制磁盤(pán)步進(jìn)電機(jī)的,磁頭放在什么位置,讀寫(xiě)到盤(pán)片的哪兒都可以控制。但看看現(xiàn)在的SAN存儲(chǔ),恍若已是隔世。
我們就以一條簡(jiǎn)單的linux cat 讀文件命令,看看要經(jīng)歷怎樣的千山萬(wàn)水,才能到達(dá)物理磁盤(pán),取到真正的數(shù)據(jù)。
首先,在linux 命令行中輸入cat 命令,系統(tǒng)會(huì)調(diào)用相應(yīng)的system call, 進(jìn)入內(nèi)核態(tài)。在內(nèi)核里最早接受請(qǐng)求的是VFS(virtual file system)層, VFS 是一層抽象的文件接口,當(dāng)它發(fā)現(xiàn)實(shí)際請(qǐng)求是要訪問(wèn)一個(gè)磁盤(pán)文件時(shí),就會(huì)調(diào)用對(duì)應(yīng)的真正的文件系統(tǒng)接口,在linux中通常是Ext3. 在這個(gè)時(shí)候,如果該文件之前已經(jīng)被讀過(guò),還放在buffer 中,那么恭喜你,你可以直接拿到數(shù)據(jù)了。
如果沒(méi)有,對(duì)不起,繼續(xù)往下調(diào)用塊設(shè)備存儲(chǔ)的驅(qū)動(dòng),塊設(shè)備存儲(chǔ)驅(qū)動(dòng)會(huì)把讀取文件的指令轉(zhuǎn)換成讀取某個(gè)塊存儲(chǔ)設(shè)備的某個(gè)數(shù)據(jù)塊,這也是SCSI子系統(tǒng)的最高層接口,系統(tǒng)把存取指令按照SCSI協(xié)議命令打包,發(fā)給SCSI 控制器。如果linux是非虛擬機(jī),這個(gè)時(shí)候工作就交給硬件。
但是,如果linux還是臺(tái)虛擬機(jī)(現(xiàn)在大部分情況都是這樣,假設(shè)這臺(tái)linux是運(yùn)行在Vmware 的 EXSi host 上),讀取指令則會(huì)傳遞給一個(gè)虛擬的SCSI 控制器,這個(gè)虛擬SCSI控制器再傳遞給VMkernel, 對(duì)VMkernel而言,虛擬機(jī)的一個(gè)磁盤(pán)其實(shí)只是一個(gè)文件(datastore), 所以VMkernel還要二次轉(zhuǎn)換,轉(zhuǎn)成物理設(shè)備真正的位置,再把這些指令通過(guò)調(diào)用HBA驅(qū)動(dòng)發(fā)給HBA卡。
HBA卡(host bus adapter)是光傳輸設(shè)備,它與光交換機(jī),SAN存儲(chǔ)一起構(gòu)成光纖傳輸網(wǎng)絡(luò),把讀取指令傳輸?shù)较鄳?yīng)的存儲(chǔ)設(shè)備上。
好,總算到目的地了。且慢,這還是萬(wàn)里長(zhǎng)征第一步,現(xiàn)在的SAN存儲(chǔ)可不僅僅是幾塊磁盤(pán),就拿IBM8870來(lái)說(shuō),它其實(shí)是由兩臺(tái)高端P系列服務(wù)器組成的集群。當(dāng)我們的讀取指令到達(dá)SAN 存儲(chǔ),SAN存儲(chǔ)會(huì)重新解析這些指令,如果該數(shù)據(jù)塊已經(jīng)放在存儲(chǔ)服務(wù)器龐大的內(nèi)存(Cache)中,則這些數(shù)據(jù)就會(huì)經(jīng)光傳輸網(wǎng)絡(luò)返回。否則,就要遍歷在linux端同樣的過(guò)程,一級(jí)一級(jí)調(diào)用底層接口,最后通過(guò)SCSI驅(qū)動(dòng),發(fā)出指令來(lái)操作實(shí)際的物理硬盤(pán)。
在這個(gè)過(guò)程中,存儲(chǔ)服務(wù)器已經(jīng)將數(shù)據(jù)的具體物理位置做了兩層封裝。首先是做RAID,比如IBM8870 中8個(gè)盤(pán)為一組,用RAID5,6,或10,實(shí)現(xiàn)數(shù)據(jù)冗余和高性能。所以看似連續(xù)的數(shù)據(jù)塊實(shí)際可能分布在一組磁盤(pán)上。第二層是extend pool, IBM8870可以將SSD盤(pán),SAS盤(pán),SATA 盤(pán)都放到同一個(gè)extend pool, 再分到同一個(gè)邏輯盤(pán)里。也就是說(shuō)我們操作的邏輯盤(pán)其實(shí)際數(shù)據(jù)可能放在完全不同類(lèi)型的盤(pán)中,而且,由于IBM78870提供了自動(dòng)Easy tier 功能,系統(tǒng)可以根據(jù)數(shù)據(jù)的使用頻率調(diào)整使用不同的盤(pán)。如果某數(shù)據(jù)塊頻繁地被訪問(wèn),則該數(shù)據(jù)塊就會(huì)從 SAS盤(pán)轉(zhuǎn)到SSD盤(pán) 。所有這一切都是自動(dòng)在后臺(tái)進(jìn)行,對(duì)用戶(hù)完全不可見(jiàn)。
現(xiàn)在還有一項(xiàng)流行的技術(shù),就是在服務(wù)器和物理存儲(chǔ)系統(tǒng)間再嵌入一層虛擬層,由它來(lái)管理控制所有存儲(chǔ)并對(duì)服務(wù)器提供存儲(chǔ)服務(wù)。比如IBM SVC (storage volume controller). linux 發(fā)出的數(shù)據(jù)讀取指令會(huì)先到SVC, SVC 實(shí)質(zhì)也是一臺(tái)服務(wù)器,同時(shí)對(duì)各物理存儲(chǔ)系統(tǒng)的盤(pán)有做了一層封裝。所有連SVC 的存儲(chǔ)系統(tǒng)將自己的磁盤(pán)呈現(xiàn)給 SVC組成 MDG (managed disk group),SVC 再將這些盤(pán)映射為自己的 VDISK. 當(dāng)用戶(hù)需要讀取某VDISK 中的數(shù)據(jù)時(shí),SVC再翻譯成對(duì)應(yīng)的實(shí)際物理存儲(chǔ)系統(tǒng)的的位置,然后通知該物理存儲(chǔ)系統(tǒng)讀取相應(yīng)的數(shù)據(jù)。
我們可以看到,現(xiàn)代基于 SAN 的存儲(chǔ)系統(tǒng)其實(shí)已經(jīng)對(duì)物理磁盤(pán)做了多層封裝和虛擬化。在用戶(hù)這一層幾經(jīng)無(wú)法實(shí)際定位某一段數(shù)據(jù)真正放在物理磁盤(pán)上的哪個(gè)位置。
責(zé)任編輯:任我行
-
碳中和戰(zhàn)略|趙英民副部長(zhǎng)致辭全文
2020-10-19碳中和,碳排放,趙英民 -
兩部門(mén):推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國(guó)家發(fā)改委、國(guó)家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè)
-
碳中和戰(zhàn)略|趙英民副部長(zhǎng)致辭全文
2020-10-19碳中和,碳排放,趙英民 -
深度報(bào)告 | 基于分類(lèi)監(jiān)管與當(dāng)量協(xié)同的碳市場(chǎng)框架設(shè)計(jì)方案
2020-07-21碳市場(chǎng),碳排放,碳交易 -
碳市場(chǎng)讓重慶能源轉(zhuǎn)型與經(jīng)濟(jì)發(fā)展并進(jìn)
2020-07-21碳市場(chǎng),碳排放,重慶
-
兩部門(mén):推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國(guó)家發(fā)改委、國(guó)家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
2020年二季度福建省統(tǒng)調(diào)燃煤電廠節(jié)能減排信息披露
2020-07-21火電環(huán)保,燃煤電廠,超低排放
-
四川“專(zhuān)線供電”身陷違法困境
2019-12-16專(zhuān)線供電 -
我國(guó)能源替代規(guī)范法律問(wèn)題研究(上)
2019-10-31能源替代規(guī)范法律 -
區(qū)域鏈結(jié)構(gòu)對(duì)于數(shù)據(jù)中心有什么影響?這個(gè)影響是好是壞呢!