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