简介
远程启动系统(Remote boot system)是通过使用服务器硬盘上的软件来代替工作站硬盘引导一台网络上的工作站。工作站的网卡上必须装有远程启动ROM芯片。每一种ROM芯片都是为一类特定的网卡而制作的,它们之间不能互换。网卡的远程启动ROM芯片以不同的形式向服务器发出启动请求信号的广播,服务器接收到启动请求信号后自动建立一个连接来响应它,根据不同的机制,向工作站发送启动数据,工作站下载完启动数据后,系统控制权由Boot ROM转到内存中的某些特定区域,加载启动文件并引导预先上传或安装在服务器中的共享操作系统到工作站内存中运行,完成无盘工作站的远程启动。
远程启动的分类常用的远程启动方式可分为IPX、RPL、PXE、BOOTP和网络虚拟硬盘等。IPX 方式是早期的远程启动方式, 只需在实模式下连接远程服务器, 从远程服务器下载启动映像文件, 由启动映像文件直接引导MS DOS 操作系统, 启动过程简单并且启动速度很快。
PXE 和BOOTP 方式是用于Window s98 的远程启动方式, 并能兼容Window s2000/XP 远程启动, 但启动过程比较复杂, 工作站开始启动初期在实模式中下载操作系统引导程序和操作系统内核文件, 启动过程的关键是在系统内核的控制下由实模式向保护模式的转换。
网络虚拟硬盘远程启动方式适用于Window s2000/ XP的远程启动方式。在远程启动初期可利用PXE 或BOOPT远程启动方式, 在实模式下连接服务器并下载启动映像文件和系统配置文件, 经系统配置文件应用iSCSI 技术将部分内存结合服务器的一块硬盘空间, 为工作站虚拟出本地硬盘, 在网络虚拟硬盘中实现由实模式转换到保护模式。
IPX远程启动IPX远程启动方式采用NovellNe tWare3.12或NovellNet Ware4.xx作服务器的操作系统,工作站与服务器之间使用IPX网络协议进行通信,并从服务器下载启动映像文件进行远程启动.IPX(InternetworkPacketExchange,网间数据包交换)协议是Novell公司为了适应计算机网络的发展而开发的通信协议。
在无盘工作站启动时,将向软驱发出一个读申请,网卡上的BootROM芯片截获这个读申请,并把它发送给网络中的服务器,服务器使用从远程启动映像文件NET$DOS.SYS中得到的信息连接工作站,并将远程启动映像文件NET$DOS.SYS中包含的MSDOS系统文件、IPX.COM、NETX.COM和LOGIN.COM等文件下载到工作站的内存中,完成无盘工作站的远程启动。1
RPL远程启动RPL(RemoteInitialProgramLoad,远程启动程序加载)是Microsoft产品,使用DLC和NetBEUI协议.DLC(DataLinkControl,数据连接控制)协议是微软在WindowsNT4.0Server中为无盘工作站专门开发的协议,该协议与NetBEUI协议一起完成对无盘工作站的远程引导控制,并在无盘工作站与服务器之间建立连接后协助其他协议(如TCP/IP、IPX/SPX等)进行工作。RPL远程启动服务内置于WindowsNT4.0Server系统.
当一台无盘工作站打开电源时,首先进行系统自检,接着网卡中的RPLROM广播一个包含工作站网卡ID(MAC地址)号的FIND帧(即引导请求),与已经运行DLC协议的远程启动服务器进行通讯.远程启动服务器接收到FIND帧并检查远程启动数据库来查看是否已经存在一个使用此网卡ID号的工作站记录.如果远程启动服务器已经保存这个网卡ID号的工作站记录,匹配成功则进行远程启动,引导预先安装在服务器中的Windows网络版.
如果匹配不成功,则不能进行远程启动,远程启动服务器记录下这个网卡ID号而不引导工作站,系统管理员可以使用远程启动管理器来将这个网卡ID号记录转换为一台工作站记录。
RPL采用NETBEUI通信协议,若传送过程中有错误帧,RPL会要求整个数据包重发.在工作站较多的情况下,出错的概率较高,因此在这种情况下启动速度稍慢。1
PXE远程启动PXE(PrebootExecutionEnvironment,远程预启动执行环境)是RPL的升级,Intel公司开发,工作站具有一个带有IntelPXEBootRom的网卡或集成到主板BIOS中的IntelPXE代码.RPL与PXE的不同之处为:一个是静态路由,一个动态路由.PXE则是根据服务器端收到的工作站MAC地址(就是网卡ID号),使用DHCP服务给这个MAC地址指定一个IP地址,每次重新启动可能同一台工作站与上次启动具有不同的IP,即动态分配地址.
PXE技术是根据SERVER端收到的MAC地址请求分配一个IP地址,然后使用MTFTP(MulticastTrivialFileTransferProtocol,多点文件传输协议)协议从服务器下载一个启动软件包到本机内存中并执行,由这个启动软件包完成基本软件设置,从而引导预先上传到服务器中的操作系统。
PXE采用基于TCP/IP的MTFTP协议,若在传送过程中有错误帧,PXE并不是将整个数据包重发,只是将某一出错线程的数据重发,这样使整个网络的启动的速度加快.MTFTP协议可以看成一个简化了的FTP,主要的区别是没有用户权限管理的功能,也就是说MTFTP不需要认证客户端的权限,这样远程启动的客户机在启动一个完整的操作系统之前就可以通过MTFTP下载启动映象文件。
PXE兼容性好,因为PXE不仅支持Windows98远程启动,各种应用软件都能得到非常好的应用,增强了多媒体功能,并能兼容和支持WINDOWS2000/XP远程启动。1
BOOTP远程启动BOOTP远程启动是一种产生于早期Unix的远程启动方式,在Unix、Linux的网络中是较常用的远程启动方式之一,BOOTP全称是BOOTSTRAPPROTOCOL,我们经常用到的DHCP服务就是从BOOTP服务扩展而来的.工作站开机后,网卡BOOTROM芯片中的BOOTP启动代码用广播形式以IP地址0.0.0.0向网络中发出IP地址查询的请求(此时客户机还没有IP地址),这个请求帧中包含了工作站的网卡MAC地址。
网络中运行BOOTP服务的服务器接收到这个请求帧,根据这帧中的MAC地址在BOOTPTAB启动数据库中查找这个MAC地址记录,如果没有此MAC地址记录则不响应这个请求,如果有就将FOUND帧发送回工作站.FOUND帧中包含的主要信息有工作站的IP地址、服务器的IP地址、硬件类型、网关IP地址、工作站MAC地址和启动映象文件名。
工作站根据FOUND帧中的信息通过TFTP(TrivialFileTransferProtocol,简单文件传输协议)协议从服务器下载启动映象文件,完成工作站的远程启动.随着Windows2000不支持RPL远程启动,并且以TCP/IP作为默认安装网络协议,逐步表明今后的Windows也将以TCP/IP协议作为主要的发展方向,纯TCP/IP的网络将是今后发展的方向。
在WIN95和WIN98无盘工作站网络中,因操作系统内核规模较小,远程启动时系统内核可以由实模式(即DOS)直接引导加载操作系统内核.工作站启动时从远程启动服务器中下载启动映像文件,然后由后者加载操作系统引导程序,引导程序依次加载操作系统内核文件,将系统内核下载到工作站内存中,并将控制权切换给系统内核,由实模式转换进入保护模式,由系统内核继续加载操作系统的其他文件,完成操作系统加载过程。1
网络虚拟硬盘远程启动在WIN2000/XP无盘工作站网络中,因Windows2000/XP操作系统内核文件规模较大,工作站启动时由实模式远程加载操作系统内核时,不能从服务器下载所需的全部系统内核文件到工作站内存中,无法完成由实模式到保护模式的转换,从而导致启动过程失败。
目前只有基于网络虚拟硬盘的无盘网络能够实现多种操作系统(Windows98、Windows2000/XP和Linux)的无盘启动。网络虚拟硬盘的实现与真实硬盘的实现都是基于存储设备驱动程序,对于工作站来说,通过网络虚拟出的硬盘与真实硬盘是相同的,可以安装任何真实硬盘上可以安装的软件,因此具有最佳的兼容性。
实现网络虚拟硬盘需要存储设备驱动程序和网络通讯与传输协议的支持,2003年2月经IETF(互联网工程任务组)通过的iSCSI(互联网小型计算机系统接口)标准,是一种在IP网络(以太网)上进行数据块传输的技术标准。
iSCSI标准将SCSI命令、状态和数据包封装在TCP/IP包中在以太网上进行传输,iSCSI可以在局域网(LANs)、广域网(WANs)或Internet上传输数据,而且可以实现远程存储管理.
iSCSI标准定义了在TCP/IP网络中发送、接收数据块级的存储数据的规则和方法.当客户端发出一个数据、文件或应用程序的请求后,操作系统会根据客户端请求的内容生成一个SCSI命令和数据请求,并将SCSI命令和数据请求封装到TCP/IP包中通过网络传输到接收端,接收(服务)端收到TCP/IP包之后,将其解包还原为SCSI命令和数据请求,并执行SCSI命令从存储设备中读取数据,完成之后将返回的SCSI命令和数据再封装到TCP/IP包中传回发送端,以响应客户端的iSCSI请求.而整个过程在用户看来,使用远程的存储设备就象访问本地的SCSI设备一样。1
操作系统远程启动目前,计算机上可以运行的操作系统种类繁多,根据其内核大小和加载过程的不同,我们将操作系统份为两类:小内核操作系统和大内核操作系统。小内核操作系统是指操作系统内核规模较小,只包括一个文件(如Linux)或者内核可以压缩为小于一张软盘大小的镜像文件(如DOS),此外,可以由DOS直接引导加载的操作系统(如Win x系列)也可以被划分为此类;大内核操作系统是指内核文件数量超过一个,且文件总尺寸较大的操作系统(如Win2000/XP等)。
操作系统启动过程操作系统的通常启动过程如图所示。
当计算机加电启动后,首先执行POST过程,在POST过程的最后一步,计算机将找出存储在CMOS中的IPL(initialprogramload)设备。并执行IPL设备提供的加载代码。IPL初始化完毕,将控制权交还给BIOS,然后BIOS访问计算机的存储系统的系统保留扇区(MBR、Boot Sector等),然后由后者加载操作系统引导程序,引导程序依次加载操作系统内核文件,并进入保护模式。计算机进入保护模式后,操作系统的磁盘访问驱动程序取代BIOS的磁盘访问中断功能,操作系统继续加载OS的其他文件。直到加载过程结束。
由于小内核操作系统只有一个内核文件,远程启动时,可以通过文件下载的方式,由客户机一次性地下载到内存中,并将控制权切换给操作系统内核,由内核完成操作系统加载过程。但是,当通过文件下载机制远程启动大内核操作系统时,由于在第一个内核文件加载完毕后,不会主动从服务器下载操作系统需要的其他文件,将导致启动过程失败。因此可以看出,基于文件下载的远程启动机制,不适合大内核操作系统。2
远程启动设计思想为解决基于文件下载的操作系统远程启动机制在加载大内核操作系统时碰到的问题,在MRBP协议的基础上,提出了基于网络存储的远程启动机制,引入了磁盘映射机制和网络存储访问协议(Network Storage Access Protocol,NSAP)。磁盘映射机制是一种提供服务的机制,它通过将正常的本地磁盘操作透明地映射到网络上,从而使操作系统可以连续地加载它所需要的文件而无需感知到MRBP协议的存在。基于网络存储的操作系统远程启动机制流程如图所示。2
关键技术1 磁盘映射机制
现代操作系统对存储设备的管理非常严格,本地硬盘、移动硬盘、逻辑驱动器和网络映射驱动器分别具有不同的功能,操作系统内核必须安装在本地硬盘上,软件安装时也必须安装到本地硬盘上,而客户机因为没有本地硬盘,所以要使操作系统在启动以及正常运行时以为本地有硬盘,则必须通过磁盘映射机制在客户机创建虚拟硬盘。
磁盘映射机制在操作系统内核层实现存储端口驱动,将存储驱动栈和网络驱动栈关联起来,将服务器端硬盘映射到客户机本地,在操作系统中注册几个虚拟“本地硬盘”。
2 文件和目录重定向机制
客户机的操作系统和程序都保存在服务器上,由所有客户端共享。为保持这些共享的文件的一致性,就不允许用户在操作过程中对其进行修改,但在客户端操作系统启动过程中,需要在硬盘上写入一些配置资料。这样就产生了客户机需要写入和共享文件不允许写入之间的矛盾。为了解决这个问题,我们对客户机写入服务器的请求进行了重定向,当客户机有写请求时,服务器端将用户写入的内容按用户写入到隐藏的位置,并在客户机重新访问这些文件时,对隐藏位置进行检查,以获取最新的内容。
3 网络存储访问协议NSAP
透明计算系统中的客户机没有本地存储设备,客户机启动和运行时需要的操作系统、程序和数据保存在服务器上。NSAP协议使客户机发现网络中存在的资源存储服务器,获取服务器硬盘信息及实现客户机对服务器硬盘按扇区读写操作。
NSAP协议是一种基于C/S结构的网络存储访问协议,由两个相对独立的模块组成:NSMCP(Network StorageManagement and Control Protocol 和SFTP(Sector Level FileTransport Protoc01),NSMCP用于为用户管理和存储资源管理提供底层协议支持,同时支持服务器端根据当前负载情况对客户端运行参数进行控制,SFTP用于客户机和服务器间的磁盘操作。2