马建鹏 喻崇仁 王施人 邓威
(北京计算机技术及应用研究所 北京市 100854)
社会信息化程度的不断提升,带来更多的数据存储与处理等需求。越来越多的数据中心、机房等被建设并投入使用,众多计算机或服务器构成的机群越来越普遍,伴随着更复杂的管理和运维工作。为了便于管理与维护,在这些场所引入KVM 模块。
KVM,即Keyboard、Video、Mouse 三个单词首字母缩写[1]。KVM 切换器,即使用一套键盘、鼠标与显示器终端,在多台设备间进行连接切换,完成对多台设备的访问与控制[2]。然而,一套键盘、鼠标与显示器终端同时仅能供一个操作人员完成管理与维护。在很多数据中心、机房等的环境部署中,为了更高的可靠性与性能,一组设备中通常存在多个设备相互关联完成功能的情景。在这种情况下,使用一套键盘、鼠标与显示器终端对该组设备进行访问控制时,需要在多个设备间反复切换,极易产生误操作且效率低下;同时,很多维护场景中,留给操作人员的时间有限,多个人员同时操作可显著提升管理与维护人员操作效率;与此同时,支持多套终端接口的KVM 切换器,在个别键盘、鼠标与显示器接口故障时,不会导致整个KVM 切换器不可用。
相比较仅支持单套键盘、鼠标与显示器终端的传统KVM 切换系统,本文设计了一款可支持多套键盘、鼠标与显示器终端接入的KVM 系统,如图1 所示。本系统可支持一个以上键盘、鼠标与显示器终端接入,以提高设备组管理维护效率,以及系统可靠性;考虑PS/2 接口良好的系统兼容性,按键不冲突的特性,以及较高的连接稳定性,本系统支持PS/2接口键盘、鼠标接入[3],同时通过处理,可支持PS/2 接口键盘、鼠标的在线接入[4]。
图1:系统功能示意图
系统硬件包含一组切换按钮,一组用于显示的数码管,一组用于显示切换的模拟开关,若干放大器,以及一片用于完成逻辑功能的FPGA 芯片。其中,切换按钮组由多个切换按钮矩阵构成,每个切换按钮矩阵的按钮数量与最大支持的主机数量对应,切换按钮矩阵数量与键盘/鼠标/显示器套数对应;数码显示组由多个数码管构成,其数量与键盘/鼠标/显示器套数对应;模拟开关芯片组由多个模拟多路复用器组成,在FPGA 的选通控制下,进行显示切换。系统硬件框图如图2 所示。系统一端外连多个主机,一端外联多套键盘/鼠标/显示器。
图2:系统硬件框图
系统逻辑由多个PS/2 设备端接口控制模块、多个PS/2 主机端接口控制模块与切换控制模块构成。其中,PS2/设备端接口控制模块与PS/2 主机端接口控制模块均包含相应的初始化控制逻辑,即可独立完成对应接口的初始化过程,使得系统支持PS2 键盘/鼠标设备的热插拔。系统逻辑架构如图3 所示。
PS/2 设备端接口控制模块主要负责虚拟PS/2 键盘/鼠标设备,完成与主机键盘和鼠标PS/2 接口的传输控制,以及在主机对键盘/鼠标初始化阶段,完成与主机的交互过程。PS/2 设备端接口控制模块由键盘PS/2 设备端传输控制子模块、鼠标PS/2 设备端传输控制子模块、PS/2 设备端初始化控制子模块、键盘接口输入缓存与鼠标接口输入缓存构成。其中,键盘PS/2 设备端传输控制子模块主要完成接口数据的协议解析与载荷数据的提取,以及接口数据的协议封装;鼠标PS/2 设备端控制子模块完成功能与键盘PS/2 设备端传输控制子模块类同;键盘接口输入缓存与鼠标接口输入用于在主机抑制数据接收时,少量数据的暂存;PS/2 设备端初始化控制子模块主要用于模拟键盘与鼠标设备,在主机初始化键盘/鼠标设备阶段,模拟键盘/鼠标设备,完成主机的初始化过程。
PS/2 主机端接口控制模块主要负责虚拟主机键盘/鼠标PS/2接口,完成与键盘和鼠标设备PS/2 接口的传输控制,以及在键盘/鼠标接入时,模拟主机发起对键盘/鼠标的初始化过程。PS/2 主机端接口控制模块由键盘PS/2 主机端传输控制子模块、鼠标PS/2 主机端传输控制子模块与PS/2 主机端初始化控制子模块构成。其中,键盘PS/2 主机端传输控制子模块主要完成接口数据的协议解析与载荷数据的提取,以及接口数据的协议封装;鼠标PS/2 主机端控制子模块完成功能与键盘PS/2 主机端传输控制子模块类同;PS/2主机端初始化控制子模块主要用于模拟主机键盘/鼠标PS/2 接口,在键盘/鼠标接入时,模拟主机发起对键盘/鼠标的初始化过程。
切换控制模块主要完成切换相关的功能,包括解析来自切换按钮或键盘设备的切换信号,驱动数码管显示对应键盘/鼠标/显示器的对应主机编号,设置显示器与主机的连接关系,以及在PS/2主机端接口控制模块与PS/2设备端接口控制模块间进行数据转发。切换控制模块在状态机的控制下控制切换流程的正常进行,如图4所示。切换控制模块在接收到来自切换按钮或键盘设备的切换信号后,启动切换流程;首先检测待切换的鼠标/键盘设备是否正在完成初始化,若正在进行初始化,则等待其初始化完成或终止;其次,检测P2/S 主机端接口控制模块是否正在传输指令或数据,若正在传输转发过程中,则等待其完成传输转发;然后,拉低待切换键盘/鼠标的时钟信号,抑制其产生新的数据或指令;检测目标主机是否上电并连接,若检测不到目标主机,则释放键盘/鼠标时钟信号,终止本次切换;在检测到目标主机上电并连接后,检测目标主机是否完成初始化过程,若目标主机尚未完成,则等待其完成;检测到目标主机完成初始化指令后,根据目标主机记忆的键盘鼠标状态,开始对键盘/鼠标的设备状态进行初始化;同时,建立目标主机与待切换显示器的连接关系;最后,驱动数码管,更改当前键盘鼠标显示器的连接显示状态,完成本次切换。
本设计针对传统KVM 切换器在需同时管理维护多台设备的某些场景中误操作率高,在管理维护任务紧急时无法进行多人同时操作,以及任意终端接口的损坏即导致系统不可用的情况,基于FPGA 芯片,设计一套可同时支持多套键盘、鼠标与显示器终端在线接入的多对多KVM 切换系统。该系统可提高数据中心、机房内的设备组管理维护效率,以及KVM 切换系统可靠性,拥有良好的可行性,具有广阔的应用前景。