本发明涉及存储bmc mac地址的,具体涉及一种独立保存bmc mac地址的系统及其实现方法。
背景技术:
1、众所周知,服务器中的mac地址和bmc(baseboard management controller,主板管理控制器)在服务器系统中扮演着重要的角色,它们各自具有独特的功能,并在服务器的运行和管理中相互关联。
2、其中,mac地址是服务器网卡的物理地址,全称为媒体访问控制地址(mediaaccess control address),用于唯一标识网络设备。它由12个十六进制数组成,通常以冒号或破折号分隔mac地址在网络通信中起着关键作用,它用于确定数据包在局域网中的传递路径,以及进行数据包的目的地和源地址的匹配。服务器通过mac地址与局域网中的其他设备进行通信。管理员可以通过验证mac地址来限制网络访问,只允许具有特定mac地址的设备与服务器通信,从而提高网络的安全性。
3、bmc是服务器的核心固件,主要是监控整个服务器。这种固件里面运行了小型的linux系统,既然是linux系统,所以有自己的mac地址。通过bmc的mac地址所分配或者设定的ip,客户就可以远程访问bmc的所有功能。bmc在某些情况下,可能会存在丢失mac地址的情况。常见的有:当服务器的ac电源意外中断时,bmc的mac地址有时可能会丢失。这种情况在特定的服务器型号(如think server rs160)及其固件版本中更为常见。例如,bmc v1.00及更早版本可能会受到此问题的影响;如果服务器的bios或固件未能正确备份或恢复bmc的mac地址,也可能导致地址丢失。
4、为了解决以上的问题现有技术中是通过重写bmc mac地址以后,系统需要更新bmc的整个网络,无形中增加了工作量,不仅如此当重写bmc的mac存在人工写错的风险。因此,需对现有技术加以改进来克服bmc mac地址丢失的麻烦。
技术实现思路
1、为克服现有技术所存在的缺陷,本申请提供一种独立保存bmc mac地址的系统及其实现方法,利用bmc周边的eeprom存储bmc mac地址,以替代在bmc自身的flash中存储的bmc mac的方案,能避免bmc mac地址在更新bmc固件时丢失的问题。
2、为实现上述目的,本发明提供了一种独立保存bmc mac地址的系统,包括:服务器以及服务器内设有的bmc单元,服务器的核心构架包括:bmc单元、bios单元、os单元,bmc单元独立通过连接单元进入业务程序单元进行访问;
3、bmc单元内包括bmc flash模块、eeprom模块,bmc flash模块内设有bmc mac固件地址模块,eeprom模块内设有eeprom储存单元、fru储存单元、bmc mac地址储存单元;
4、bmc mac固件地址模块与bmc mac地址储存单元之间交互联通。
5、进一步地,所述eeprom模块的储存量大小为64kb;
6、所述eeprom储存单元占用32kb、fru储存单元占用8kb、bmc mac地址储存单元占用24kb。
7、本发明还提供了一种独立保存bmc mac地址的实现方法,服务器主板上设有所述bmc单元,所述bmc单元通过spi启动bmcflash模块,bmc flash模块通过i2c访问eeprom模块,其具体的写入与读取流程如下:
8、s1:服务器接通后,bmc单元启动至kernel后,启动完成,主进程下面所有的线程均已工作起来;
9、s2:用户使用在cpu操作系统上通过ipmi命令对bmc mac固件地址模块进行设定mac地址的;
10、s3:在bmc flash模块的主进程main函数中增加一个线程函数pthread_setmac来处理写mac地址的事件;
11、s4:pthread_setmac中调用标准的i2c_master_write函数,将收到的bmcmac固件地址模块中的mac地址,写入到对应i2c链路的eeprom模块的bmc mac地址储存单元中;
12、s5:读取bmc flash模块中的mac地址时,当bmc mac固件地址模块启动后,在进入kernel的时,通过调用系统libnetwork库中的i2c_master_read的函数从既定的i2c链路中eeprom模块的所述bmc mac地址储存单元读取所有的mac地址;
13、s6:然后调用libnetwork库中ioctcl对应的系统驱动将读到的mac地址写入到bmc的网络文件系统里面;
14、s7:进入linuxos,bmc启动完成。
15、进一步地,所述mac地址的长度为6kb,所述bmc mac地址储存单元可存储4个mac地址;所述mac地址只存于eeprom模块的最后24个字节中。
16、进一步地,bmc单元通常有2个mac地址,一个mac地址长度是6个字节。
17、进一步地,在步骤s2中,用户可在cpu操作系统上安装开源ipmitool或者远程使用ipmitool写bmc mac固件地址模块的mac地址。
18、进一步地,写bmc mac固件地址模块的mac地址的过程是用ipmi命令ipmitool lanset index macaddr bmc_mac进行设定mac地址。
19、进一步地,在步骤s3中,pthread_setmac线程通过监听的方式实时响应ipmi的消息。
20、本发明由于使用以上技术方案,使其具有的有益效果是:
21、本发明利用现成的硬件架构,只需要在bmc单元启动到kernel的时候,通过调用系统network管理库中的i2c_master_read的函数从既定的i2c链路中eeprom模块的特定的位置读取bmcmac地址,fru的eeprom模块是独立于bmc的一颗flash,bmc升级的时候只会刷新自己的flash,不会涉及到bmc以外的flash,因此bmc mac地址不会被破坏,就能避免bmcmac地址在更新bmc固件时丢失的问题,不需要重新设计硬件,从而有效降低硬件成本,避免软件的风险。
1.一种独立保存bmc mac地址的系统,包括:服务器以及服务器内设有的bmc单元,其特征在于,服务器的核心构架包括:bmc单元、bios单元、os单元,bmc单元独立通过连接单元进入业务程序单元进行访问;
2.根据权利要求1所述独立保存bmc mac地址的系统,其特征在于:所述eeprom模块的储存量大小为64kb;
3.根据权利要求1所述的独立保存bmc mac地址的实现方法,其特征在于:服务器主板上设有所述bmc单元,所述bmc单元通过spi启动bmc flash模块,bmc flash模块通过i2c访问eeprom模块,其具体的写入与读取流程如下:
4.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:mac地址的长度为6kb,所述bmc mac地址储存单元可存储4个mac地址;
5.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:bmc单元通常有2个mac地址,一个mac地址长度是6个字节。
6.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:在步骤s2中,用户可在cpu操作系统上安装开源ipmitool或者远程使用ipmitool写bmc mac固件地址模块的mac地址。
7.根据权利要求6所述的独立保存bmc mac地址的实现方法,其特征在于:写bmc mac固件地址模块的mac地址的过程是用ipmi命令ipmitool lan set index macaddr bmc_mac进行设定mac地址。
8.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:在步骤s3中,pthread_setmac线程通过监听的方式实时响应ipmi的消息。