【BMC】Redfish简述
Redfish是什么
Redfish是一個(gè)規(guī)范,由DMTF(Distributed Management Task Force)這個(gè)組織維護(hù)。
Redfish是一種基于HTTPs服務(wù)的管理標(biāo)準(zhǔn),利用RESTful接口實(shí)現(xiàn)設(shè)備管理。
Redfish使用了很多互聯(lián)網(wǎng)的概念,上面提到的RESTful就是其中使用的一個(gè)概念。RESTful是一個(gè)形容詞,表示的是符合REST(Representational State Transfer)這一原則的程序或者設(shè)計(jì)。RESTful程序或者設(shè)計(jì)使用一種簡(jiǎn)單的形式來(lái)完成數(shù)據(jù)傳輸,具體操作只有下面的幾種:
| POST(Create) | 創(chuàng)建新資源或執(zhí)行指定資源的方法。 |
| GET(Read) | 返回所請(qǐng)求的資源描述。 |
| PATCH(Update) | 修改當(dāng)前資源屬性。 |
| DELETE(Delete) | 刪除指定資源。 |
每個(gè)Redfish操作傳輸?shù)臄?shù)據(jù)格式也是標(biāo)準(zhǔn)的,有幾種類(lèi)型,比較常用的如JSON格式。
Redfish使用的另一個(gè)互聯(lián)網(wǎng)概念就是Service-Client,如下圖所示:
Redfish最早是使用在服務(wù)器設(shè)備上的,此時(shí)服務(wù)器(通常是服務(wù)器上的BMC)就是Redfish Server,而Redfish Client可以是你的電腦,或者更確切得說(shuō)是電腦中的Redfish程序,通過(guò)該程序,你可以訪(fǎng)問(wèn)、修改、更新、刪除服務(wù)器上的資源。
Redfish的規(guī)范可以在REDFISH | DMTF下載到,到寫(xiě)本文時(shí)的最新版本是1.16。
Redfish用來(lái)做什么
通常一臺(tái)服務(wù)器包含若干強(qiáng)勁的CPU、若干GPU卡、硬盤(pán)、網(wǎng)卡等等,你可以用這臺(tái)強(qiáng)大的服務(wù)器完成各種工作,比如數(shù)據(jù)運(yùn)算,動(dòng)畫(huà)渲染,等等。一般情況下,服務(wù)器能夠正常工作,可是還是存在各種異常的情況,比如服務(wù)器風(fēng)扇壞了一個(gè),導(dǎo)致設(shè)備過(guò)熱產(chǎn)生異常。
當(dāng)服務(wù)器異常之后,就需要去排查和解決問(wèn)題。通常服務(wù)器會(huì)放在一個(gè)獨(dú)立的房間,因此你需要到這個(gè)房間去做問(wèn)題的定位。由于散熱的問(wèn)題,房間里面通常不是過(guò)熱就是過(guò)冷,更可怕的是,為了散熱,服務(wù)器通常安裝有強(qiáng)勁的風(fēng)扇,它們產(chǎn)生的噪音會(huì)讓你定位的過(guò)程充滿(mǎn)身體的不適。如果只是一臺(tái)服務(wù)器還能夠忍受,而當(dāng)你有一個(gè)房間的服務(wù)器時(shí),情況會(huì)變得更難以忍受。
此時(shí)你會(huì)想到,是否可以遠(yuǎn)程來(lái)定位呢,這樣就不需要在冷氣和噪音都過(guò)大的房間里面呆著。通常情況下,在服務(wù)器上安裝的操作系統(tǒng)都存在遠(yuǎn)程工具(比如SSH),所以遠(yuǎn)程操作還是可以實(shí)現(xiàn)的,所以我們可以在服務(wù)器操作系統(tǒng)中增加各種功能,用于監(jiān)控溫度、風(fēng)扇,等等。但是這樣還是存在一些問(wèn)題:如果服務(wù)器的問(wèn)題實(shí)在太大導(dǎo)致操作系統(tǒng)都掛掉了怎么辦?還有如果讓服務(wù)器操作系統(tǒng)做這些監(jiān)控的工作,是否浪費(fèi)了大量的算力了呢,尤其是這些工作對(duì)于CPU來(lái)說(shuō)實(shí)在是大材小用了(監(jiān)控的都是慢速設(shè)備,對(duì)于高速的CPU來(lái)說(shuō),效率上存在的浪費(fèi))。
為了解決這個(gè)問(wèn)題,一個(gè)辦法就是引入額外的組件來(lái)做監(jiān)控操作。有了個(gè)想法之后,各大服務(wù)器廠(chǎng)商就聯(lián)合起來(lái),引入了一個(gè)平臺(tái)管理(Platform Management)的概念。它通過(guò)一個(gè)額外的基板管理芯片(Baseboard Manager Controller,簡(jiǎn)稱(chēng)BMC)來(lái)完成所有的監(jiān)控工作,當(dāng)然除了監(jiān)控工作,我們還希望它能完成其它的基本操作,比如服務(wù)器開(kāi)關(guān)機(jī)、日志記錄、監(jiān)控異常后告警,等等,這樣對(duì)于問(wèn)題的發(fā)現(xiàn)、定位和解決會(huì)有更多的幫助。
到這里硬件上已經(jīng)有了,還需要有軟件上的實(shí)現(xiàn)。這里廠(chǎng)商又推出了一個(gè)規(guī)范,稱(chēng)為IPMI(Intelligent Platform Management Interface)。IPMI規(guī)范定義了外部設(shè)備(主要是服務(wù)器中的各種組件)與BMC交互的接口,這也是能夠理解的,因?yàn)锽MC需要監(jiān)控服務(wù)器的其它設(shè)備的話(huà),肯定需要一個(gè)通信的方式。通信的硬件接口,可以是普通的I2C、UART、PCIe、USB、網(wǎng)卡等,也可以是特定的KCS、IPMB等BMC特定的硬件接口,而其上傳輸?shù)臄?shù)據(jù)就需要滿(mǎn)足IPMI規(guī)范定義的格式。這些數(shù)據(jù)格式定義的操作能夠滿(mǎn)足基本的服務(wù)器操作,比如服務(wù)器開(kāi)關(guān)機(jī)、傳感器數(shù)據(jù)獲取、日志獲取,等等。
到這里,雖然還有很多的功能和細(xì)節(jié)沒(méi)有提及,但是服務(wù)器的平臺(tái)管理功能基本上就完善了。不過(guò),說(shuō)了一大堆,本文的主角Redfish卻還沒(méi)有提及。Redfish的出現(xiàn)實(shí)際上是為了代替IPMI。在使用了一段時(shí)間的IPMI之后(IPMI在1998年推出,Redfish在2014年推出),服務(wù)器廠(chǎng)商發(fā)現(xiàn)了一些問(wèn)題,首先是IPMI規(guī)范雖然定義了很多的操作,但是最初的版本中并沒(méi)有定義足夠多的操作,導(dǎo)致在發(fā)展的過(guò)程中,各個(gè)服務(wù)器各自使用了很多的自定義操作,由于IPMI的操作是按照(NetFn/Cmd)的格式定義的,導(dǎo)致對(duì)于同一個(gè)(NetFn/Cmd),不同的廠(chǎng)商提供的服務(wù)器可能對(duì)應(yīng)不同的操作。然后是IPMI設(shè)計(jì)之初對(duì)于安全方面的考慮就不夠,導(dǎo)致當(dāng)前存在不少的安全漏洞,修復(fù)代價(jià)巨大。所以到2013年退出2.0版本的IPMI規(guī)范之后就不再更新了,而是轉(zhuǎn)到了Redfish。
Redfish基于HTTPs,所以安全上有保證。且Redfish使用的RESTfull接口和JSON數(shù)據(jù)格式簡(jiǎn)單易用又易讀,還便于擴(kuò)展。所以成為了IPMI的替代者。目前的服務(wù)器基本都實(shí)現(xiàn)了Redfish接口。
到這里,所以Redfish在本文中的出場(chǎng)機(jī)會(huì)不多,但是通過(guò)前面的說(shuō)明,應(yīng)該也已經(jīng)能夠明白R(shí)edfish的作用了吧。
如果要說(shuō)到實(shí)際的體驗(yàn),你可以通過(guò)瀏覽器登錄到BMC上,比如下面這樣(示例來(lái)自虛擬的OpenBMC,并非真的服務(wù)器):
通過(guò)瀏覽器進(jìn)行的操作,背后就可能包含Redfish實(shí)現(xiàn)。這是一個(gè)間接的示例,你可能還看不到Redfish的身影,另一個(gè)例子就是使用postman工具,其中可以看到Redfish傳輸?shù)腏SON數(shù)據(jù)數(shù)據(jù),下面就是一個(gè)例子:
總結(jié)
以上是生活随笔為你收集整理的【BMC】Redfish简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LDA算法推导
- 下一篇: HTTP详解(1)-工作原理