最近在做无盘系统开发的一些预研工作,主要研究了一些技术标准和开源项目
无盘系统简单点说就是不通过本地磁盘启动操作系统,而是通过网络服务来实现操作系统的引导。
这里面要解决几个问题:
1、无盘情况下最初的引导文件如何获取?
其实这个已有标准,就是PXE。
PXE是网卡提供的一项服务,可以在操作系统引导之前通过网络获得引导文件。这个大概分为两个步骤:通过dhcp协议获得一个本机的Ip地址和tftp服务器的ip地址,通过tftp协议下载引导文件。
目前可以参考的PXE启动主要有pxelinux,gpxe,ipxe
pxelinux其实就是让网卡的pxe服务下载linux的内核和文件系统到本地内存,再将本地系统的引导权交给linux内核。
2、无盘情况下操作系统引导所需的各项文件如何获取,无盘情况下操作系统启动后如何实现文件访问
大致是这样:
将操作系统对磁盘的访问重新定向为网络访问
a通过iscsi协议或者aoe协议实现
由于iscsi协议和aoe协议是业界标准,所以通用性、可扩展性比较好,可维护性也比较好
b通过自行封装磁盘访问到自定义网络协议实现
自定义的协议提供了更多的灵活性,并且可以加入特有的一些功能,但是开发初期稳定性会比较差
无盘系统关键概念:
dhcp,tftp
目前国内无盘系统主要是通过iscsi接口实现,也有一些厂商自己将磁盘访问二次封装为udp协议,在服务端通过virtualdisk + ndis驱动实现
相关的开源项目有
gpxe http://etherboot.org
ipxe http://ipxe.org
sanbootconf
winaoe http://winaoe.org/
linuxiscsi
openiscsi
iscsitarget
微软的iscsi initiator
微软的winiscsitarget
国内的无盘软件:
遥志 ccboot ccdisk
深度
网维大师
国外的无盘软件:
starwind starport
目前国内厂商开发的无盘系统多数都依靠微软提供的iscsi initiator和开源软件提供的pxe,没有自己做标准协议的,因此依赖性比较强,一些厂商自己封装磁盘访问为网络协议,这种原创精神值得肯定,但是由于实力有限,产品稳定性、易用性都比较差。自己做不了标准协议,就只能跟着人家屁股后面跑,技术的发展也受到制约。。。