分享

通过 Microsoft Services for UNIX 将 UNIX 应用程序迁移到Windows

 老庄走狗 2007-01-19

因为 Microsoft Windows 拥有健壮的体系结构,能够利用商用 Intel 服务器,并且拥有一套迁移与互操作工具,所以,对于那些打算将 UNIX 应用程序迁移到更新、成本效益更高的平台的企业来说,它无疑是一个诱人的选择。本文解释了将 UNIX 应用程序迁移到 Microsoft Windows 的业务原因,并论述了用来协助迁移的一些具体功能和技术。Microsoft Services for UNIX (SFU) 的互操作功能使得整个迁移变得更加容易;Microsoft Windows Server 2003 和 SFU 一起提供了一个卓越的迁移目标平台。

本页内容
简介 简介
Services for UNIX Services for UNIX
迁移问题 迁移问题
Windows Server 2003 with SFU 挑战 Linux Windows Server 2003 with SFU 挑战 Linux
与 Windows 和 UNIX 的互操作性 与 Windows 和 UNIX 的互操作性
移植问题 移植问题
摘要 摘要

简介

在过去,UNIX 可能曾经是许多企业的默认应用程序平台。然而,已经有两种因素迫使企业考虑备用方案 — 基于 Intel 的服务器日益强大的功能,以及它们同基于专有精简指令集计算 (RISC) 的 UNIX 服务器相比明显较低的成本。

独特的 Intel 结构的 CPU 能力不断增长,其速度达到甚至超过了摩尔定律推定的速度。随着超线程处理器的增加和对称多处理器 (SMP) 服务器的推出以及利用这类服务器的操作系统的出现,很容易看出基于 Intel 的服务器有能力运行重要的应用程序。

过去,基于 Intel 的服务器曾经比 UNIX (RISC) 服务器便宜许多。这种情况仍然属实;而且,对企业来说,由于新的 Intel 处理器具有更高的能力,与低容量的、UNIX 供应商的专有 RISC 产品相比,高容量的、基于 Intel 的服务器是一个极具吸引力的选择。

乍看起来,Intel 平台的成本节省好像会被从 UNIX 应用程序向基于 Intel 的平台迁移可能产生的费用抵销掉。然而,能够提供运行业务时所需的功能的并不是平台,而是建立在平台上的应用程序。如果采用一种低成本的服务器替代方案的第一步是对所有应用程序进行复杂而高成本的迁移,那么许多企业可能不愿意进行这种类型的更改。  

有些公司认为 Linux 是一种最能降低成本的方法。他们的理由是:Linux 是 UNIX 的一种,因此该迁移过程应该简便、容易。然而,尽管 Linux 和 UNIX 共用许多命令,但 Linux 和 UNIX 毕竟不是一回事。而且,并不是所有的 Linux 分发都是相同的,也并不是所有的 UNIX 产品都是相同的。实际情况是,UNIX 应用程序的迁移需要投入大量工作。  

Microsoft 已经有一个一揽子解决方案,专门用于帮助企业迁移 UNIX 应用程序。这个解决方案包括 Windows Server 2003、Microsoft Services for UNIX (SFU) 和一组工具和服务,将它们联合在一起后,实际上可使向 Windows 迁移比向 Linux 迁移更容易。本文探讨了将 UNIX 应用程序迁移到 Linux 或迁移到 Windows Server 2003 with SFU 时所涉及的一些问题。

Services for UNIX

Windows Server 2003 提供了能够与 UNIX 系统很好地进行互操作的许多服务,包括一个 Telnet 客户端和服务器、允许跨平台打印的 LPR 和 LPD 打印服务、TCP/IP 的基本连接和文件移动资源。然而,为获得完全的互操作性,也为了获得一个健壮且功能丰富的迁移平台,我们又增加了 SFU,它提供了可以简化您的 UNIX LOB 应用程序迁移的所有功能和工具。

SFU 提供了一个综合的软件包来满足上面所描述的互操作需求,它可实现以下功能:

?

使用网络文件系统 (NFS) 在 UNIX 和 Windows 之间共享文件。SFU 提供了:

?

NFS 客户端

?

NFS 服务器

?

NFS 网关

?

Windows 和 UNIX 之间的远程命令行访问。SFU 提供了:

?

Telnet 客户端

?

Telnet 服务器

?

全面的跨平台脚本能力。SFU 为以下各项提供了一致的实施:

?

Korn Shell

?

C Shell

?

350 多个 UNIX 常用命令和实用工具

?

通过使用 Microsoft Windows Server 2003 Active Directory? 服务提供网络信息系统 (NIS) 服务器功能来实现的通用网络管理

?

Windows 和 UNIX 之间的密码同步

?

使用 Microsoft Windows Installer 进行安装

?

使用 Microsoft 管理控制台 (MMC) 实现 Services for UNIX 组件和服务的管理

?

使用 Windows Management Instrumentation (WMI) 管理 SFU 组件

除了这些功能外,SFU 还可以安装在基于 Windows 2000、Windows XP 或 Windows Server 2003 的计算机上,并且可以和各种基于 UNIX 的计算机进行互操作。SFU 3.0 还支持 Microsoft Windows NT 4.0 SP6a 和较早版本 UNIX 的密码同步。SFU 提供了密码同步的 UNIX PAM/SSOD 组件的源代码,这些源代码还被预编译为用于 Solaris 7 或 8、HP-UX 11i、Red Hat Linux 8.0 和 IBM AIX 5L 5.2 的二进制文件。

迁移问题

大多数企业在考虑从 RISC/UNIX 到 Intel 的迁移时最担心的一个问题就是:他们当前承载在 UNIX 服务器上的应用程序可能不能在新的环境中运行,可能需要进行大量的重写或替换。无论在迁移的实际成本方面还是在风险方面,这一过程的代价都是很高的,因为更改核心应用程序会极大地改变整个企业的运作方式。另外,大多数企业在 UNIX 管理脚本和培训方面付出了大量的投资,他们不愿意浪费这些投资。

在考虑这种类型的迁移时,需要注意以下三大方面:

?

应用程序迁移,实际上就是应用程序的移动

?

资源迁移,即迁移支持资源,包括文件、帐户和数据库

?

技能迁移,它可能要求您的全体职员掌握一种新的专业技术来支持新的环境

人们默认为 Linux 很容易满足这三方面的要求,这种设想实际上是没有道理的。应用程序和技能这两种迁移在各种不同的 UNIX 和 Linux 版本之间存在着细微而普遍的差异。具体来说,提供的程序库和实际实现它们的方法方面的差异意味着需要对许多应用程序进行修改,同时,实用工具、工具和 Shell 方面的差异意味着需要对管理人员、开发人员和用户进行重大的调整。虽然,通过使用 NFS 文件系统和许多相同的配置文件,从 UNIX 到 Linux 的资源迁移理应相当容易。但是,Red Hat 和 Linux 的许多其他版本处理或设置它们的组的方式与大多数 UNIX 版本不相同,它们会为各个用户分别创建一个组,组名与用户名相同。那些预期会利用组权限和成员身份的应用程序,将必须修改应用程序本身或修改基础环境。

SFU 提供了一个优秀的迁移解决方案,它解决了所有这三方面的问题。它提供了一个高性能的环境,从而使 UNIX 开发人员或系统管理员能够更简便、更轻松地移植应用程序和脚本。SFU 包括一个丰富的 API 集,有 1,900 多个 UNIX API,这些 API 的运行与它们在 UNIX 中的运行完全一样。它还包括一个完整的 UNIX 环境,带有数百个 UNIX 应用程序以及 Korn 和 C shell,因此,企业只需稍加改动或不作改动就可以轻松地将他们的自定义应用程序和脚本移植到 Windows 环境中。在技能和脚本方面的投资不会白费,因为在 Windows 环境中可以使用同样的技能和脚本。

例如,LBM Systems,LLC 使用 SFU 将它的 UniQue 和 ClusterQue 输出管理应用程序移植到了 Windows。LBM 的总裁 Steven Bardwell 解释说,“移植到 Interix 确实非常容易。肯定不会比移植到任何其他 UNIX 更困难或花费更多时间。”有关 LBM Systems 案例研究的更多详细信息,请访问:http://www.microsoft.com/resources/casestudies/CaseStudy.asp?CaseStudyID=13486

应用程序迁移

使用 SFU,UNIX 应用程序(不管是基于纯字符、基于 curses 还是基于 X Window)的实际迁移通常是整个迁移过程中最容易的、风险最低的部分。该技术作为一个完整的 Windows 子系统运行在内核级别,它包括一些随附的实用工具,这些工具提供了一个从外观上到运行上都与任何其他 UNIX 相同的环境。它提供了一个单根文件系统,并且完全支持区分大小写的文件名、作业控制、编译工具、shell 脚本和 300 多个 UNIX 命令和实用工具。因为这个子系统是 Windows 内核的组成部分,所以它不用模拟或降低性能就能够提供真正的 UNIX 功能。它的单根文件系统从 UNIX 环境中屏蔽了基于 Windows 卷(“C:”、“D:”等等)的文件系统,并且将实用工具和配置文件放在了 UNIX 用户或系统管理员认为它们应该驻留的位置。

资源迁移

如果应用程序从 UNIX 进行了迁移,那么支持应用程序的文件系统、打印和帐户资源也需要迁移。尝试同时迁移应用程序和资源会大大增加迁移风险,并且会使故障排查变得更加困难。

Red Hat 和其他不同的 Linux 版本都提供了一套很好的互操作工具(包括 NFS 客户端和服务器),并且支持用于帐户管理的 NIS。因为 Red Hat 上不同的组的建立方式各不相同,管理员很可能需要修改基础帐户假设以创建更多的普通组,但是这一步在转移到一个新的 Linux 环境时并不重要。

SFU 也提供了一整套互操作工具,包括 NFS 客户端和服务器产品和对 NIS 的完全支持。这些工具极大地简化了迁移,并且使开发人员和系统管理员能够执行分步迁移。开发人员可以迁移实际应用程序,而让它所依赖的文件和数据留在 UNIX 上,也可以先迁移数据和文件而后迁移实际的应用程序。SFU 提供的互操作工具使得开发人员和系统管理员能够控制迁移时间表和迁移过程而不用担心资源的位置。  

技能迁移

在任何迁移计划中,一个经常被忽略但很重要的问题是技能的迁移。对一个企业来说,UNIX 开发人员、用户和系统管理员的知识和技能意味着需要付出大量投资。人们往往认为 Red Hat 和其他 Linux 版本与 UNIX 相似,因而可以流畅地进行技能的迁移,但严格说来,这种认识并不正确。在环境所包含的许多不同的实用工具和工具之间,受支持的命令选项和输出都有着显著的差别。另外,Linux bash shell 虽然提供了许多类似 UNIX Korn shell 的功能,但仍缺少某些 Korn shell 具有的功能,因此,脚本通常需要进行重大的修改才能迁移。通过在 Windows 上提供一个完整的 UNIX 环境,SFU 中的 Interix 技术使得这些技能也能够迁移,既保留了对企业的价值,又大大缩短了新技术的学习曲线。

SFU 使用 UNIX 管理员认为应该使用的配置文件和管理实用工具(包括 inetd.conf resolv.conf),这些文件和工具放置在她/他认为应该放置的位置(在 /etc 目录中)。这种能力既降低了迁移的难度和风险,又最大限度地迁移了技能UNIX 管理员不需要大量的重新培训 — 使用熟悉的工具和熟悉的环境,迁移就好像是从一个 UNIX 转移到了另外一个 UNIX。因为文件放在熟悉的位置,这最大限度地减少了脚本和代码的更改,从而降低了总的迁移风险。这些能力可以使将 UNIX 应用程序移植到 Windows 实际上比将同样的应用程序移植到 Linux 更容易,尽管 Linux 与 UNIX 之间在工具和环境两方面仅有细微(但很重要)的差别。

下面是管理员和开发人员广泛使用的 UNIX 环境的组件。

Shell

Red Hat 和其他不同的 Linux 版本提供了 bash shell 作为主要的 shell,同时还提供了 C shell (tcsh)。bash shell 是一个灵活而且功能强大的 shell,它向后兼容基本的 UNIX Bourne shell (/bin/sh),而且还具备 Korn shell 的许多功能和改进功能。编写的用于利用 Korn (/bin/ksh) shell 功能的脚本可能需要做某些修改,而且 bash 的命令行操作与 ksh 不相同。Red Hat Linux 可以使用 Korn shell (pdksh),但是默认情况下没有使用它。

SFU 包括 pdksh shell、/bin/ksh、一个遵循 POSIX.2 标准的 shell 和实现为 /bin/tcsh 的 C shell(以及实现为符号链接的 /bin/csh)。SFU 没有提供纯 Bourne shell,而是使用了一个到 /bin/ksh 的符号链接来提供预期发现 /bin/sh 的脚本。因为 pdksh 提供了对 Bourne shell 脚本的高度的向后兼容性,所以,任何为 Bourne shell 所编写的脚本即使需要修改,也只需要稍加修改。SFU 用户如果需要获取 bash shell,可从 Interop Systems (http://www./tools) 进行下载。

C shell,虽然不是一个主要的脚本环境,但是很长时间以来一直是交互式用户和管理员的最爱,所以 Red Hat Linux 和 SFU 都为这些用户提供了 /bin/tcsh。

实用工具

大多数 UNIX 应用程序和几乎所有的 UNIX 脚本都预期 UNIX 中有丰富的命令行环境,并且充分利用了丰富的命令行环境。尽管 Red Hat 和其他 Linux 版本提供了许多这类工具,但是,Linux 版本不同,提供的工具组合也稍有不同。许多这类工具支持的命令行选项稍微不同,并且最终输出也可能稍有差别,这将导致那些预期某种特定结果的程序和脚本出现问题。在许多情况下,特定的实用工具的设计目标,更多考虑的是它提供的附加的灵活性和选项,而很少考虑与 UNIX 的向后兼容性。  

相反,SFU 的设计目标是提供与 UNIX 的完全兼容,并提供 300 多种本机 UNIX 实用工具来为用户、管理员和开发人员提供他们预期的工具。这些 UNIX 实用工具是完全的本机 UNIX 应用程序,它们的行为与 UNIX 用户预期的完全一样,包括从 tar 和 cpio 再到 awk、sed 和 tr 的所有实用工具。

应用程序用户、脚本用户和交互式 shell 用户会在他们预期发现这些工具的位置发现这些实用工具。这一标准的 UNIX 环境极大地简化了迁移,因为企业可以利用他们现有的在培训和技能方面的投资,而且无需巨大的移植成本就可重用脚本和自定义程序。

Telnet 和 r 实用工具

当前的 Red Hat 和其他 Linux 版本通常提供一个 Telnet 服务器和客户端,同样还提供一整套 r 实用工具,尽管许多早期的 Red Hat 不包括 Telnet。SFU 包括基于 Win32 和 Interix 的 Telnet 服务器和客户端,在提供全面的兼容性和跨平台维护功能的同时,同样包括了对“r 实用工具”的全面支持。Win32 Telnet 服务器允许完全连接,它只通过所允许的到服务器的授权连接的数目来限制会话数目。Interix telnetd daemon 提供了全面的 UNIX 兼容性并且使用 /bin/ksh 或 /bin/tcsh 作为它的默认 shell,从而为用户带来了一个熟悉而舒适的、支持标准 UNIX 脚本的外观。  

SFU 对 UNIX r 实用工具的支持包括远程复制 (rcp)、用于远程分发的客户端和服务器(rdist 和 rdistd)、远程登录 (rlogin) 和远程 shell (rsh)。尽管出于安全原因,许多企业选择在他们的环境中不使用这些工具或严格限制它们的使用,但是它们能够提供一种简单而有效的跨平台工具。对于这些企业,可以使用 F-Secure 提供的商用 SSH,或者使用 Open Source 版本 OpenSSH。OpenSSH 也可以从 Interop Systems 下载。

其他组件

Linux 和 SFU 都使用了多种第三方和 Open Source 实用工具、shell 和工具,都提供了轻松编译可用的 Open Source 程序的能力。对于 SFU,预编译 Open Source 实用工具的最好来源是 Interop Systems 的 Tool Warehouse (http://www./tools/warehouse.htm)。Interop Systems 提供了一个预编译工具的仓库和一些社区论坛,开发人员可以到这些论坛讨论迁移问题。  

迁移指南

如果您打算将您的 UNIX 应用程序迁移到 Windows,您可以借鉴那些已经执行过该迁移的开发人员的经验。Microsoft 提供了大量的材料(从迁移需求分析到完整的迁移指南)来帮助您将 UNIX 应用程序移植到 Windows 环境,这些材料将向您介绍成功的迁移所需要的具体步骤。  

有关更多详细信息,请访问 http://www.microsoft.com/windows2000/migrate/unix/default.asp。您可以在以下网址找到一个有关 UNIX ANSI C/C++/Fortran 代码迁移模式和实践的详细讨论 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/ucmglp.asp

Windows Server 2003 with SFU 挑战 Linux

Windows Server 2003 with SFU 提供了一个完整的 UNIX 开发和部署环境,包括 Korn 和 C shell、300 多个 UNIX 实用工具、1900 多个 UNIX API 和完整的互操作工具。虽然有 Korn 和 C shell 版本,但是 Red Hat 和其他 Linux 版本主要依赖于 bash shell。另外,虽然各种版本的 Linux 都提供了与 UNIX 相似的 API 和实用工具,但是它们并不是完全匹配,可能需要做重大的移植工作。另外,到 Linux 的移植不是一个单一的目标。尽管一些 Linux 供应商试图达成一个通用的移植目标,但是这一努力没有包括所有的供应商并且这一工作还处在初级阶段,这意味着到任何 Linux 分发的移植都需要做额外的工作以支持其他分发。

不同的 Linux 分发并没有什么异常,因为 UNIX 本身也已发展为受不同的供应商支持的不同的版本。为实现 UNIX 的可移植性承诺,POSIX 标准产生了。不同的 UNIX 版本都支持 POSIX 标准,这意味着它们能够支持依照这一标准编写的应用程序。SFU 就充分符合 POSIX 标准。如果您编写了 LOB 应用程序来利用这一可移植性标准,当您将程序迁移到 Windows 时,您会从您做的这项工作受益,但是如果您迁移到 Linux,您将不能受益,因为它还不符合 POSIX。

这两种平台之间最大的不同可从它们各自提供的附加价值的比较中看出来。在您移植到 Linux 后,您仍然无法访问 Windows 环境的丰富资源。如果移植到 Linux,您只是从一个基础平台转移到了另一个基础平台。但是,迁移到 Windows 环境却会带来大量的附加价值,包括与您的桌面环境的协作、大量的新应用程序以及 .NET framework 的 Web 服务能力。最后,与 Linux 供应商对他们的产品提供的支持相比,Microsoft 对 Windows 提供了更高水准的支持,包括在线社区、供应商电话支持和上面提到的迁移指南。

与 Windows 和 UNIX 的互操作性

即使您决定迁移您的全部或一部分关键应用程序,在一个短暂的双平台迁移时期内,或者在一个较长的双平台时期内,您仍可能需要支持同时运行 Windows 服务器和 UNIX 服务器的一种环境。SFU 提供了互操作工具来减小同时支持这两种环境的负担和风险。如果迁移到 Red Hat 或其他某种 Linux 版本,则会面临许多与迁移到 Windows 相同的挑战,另外您还可能需要在迁移过程中支持三种操作环境,因为 Windows 很可能至少是该环境的一部分。

互操作工具

Red Hat 和其他 Linux 版本主要依赖于 SAMBA 来提供与 Windows 客户端和服务器的互操作。SAMBA 使用原属于 Windows 网络的服务器消息块 (SMB) 协议来提供与 Windows 客户端和服务器的文件系统互操作。然而,SAMBA 在与 Active Directory 和卷影复制的兼容性方面不如 Windows Server 2003,这限制了在那些利用 Windows Server 2003 提供的高级功能的环境中对它的使用。

Windows Server 2003 with SFU 和那些允许 UNIX 和 Windows 和平共处并共享资源的工具一起提供了一个完整的、可扩展的互操作环境。这个环境包括了用于文件系统互操作的工具(例如 NFS 客户端、NFS 服务器和 NFS 网关),这些工具提供了完全的、网络上的文件系统互操作能力。SFU 还提供了用于身份验证和帐户互操作的工具,包括用于 NIS 的服务器、用户名称映射 (UNM) 和双向密码同步。SFU 还包括了用来提供打印兼容性的 UNIX 打印服务(基础 Windows Server 2003 操作系统的组成部分)和一些管理工具和脚本兼容工具,例如 Telnet、Perl、Korn 和 C shell。

网络文件系统

NFS 成为 UNIX 的标准已有多年了,它提供了一种简单而有效的跨网络共享文件系统的方法。SFU 包括用于与 UNIX 的完全互操作的 NFS 客户端和服务器。NFS 网关也是 SFU 的一部分,它提供了对网络上的 NFS 资源的访问 — 不需要在下游 Windows 计算机上添加额外的软件就可对网络上的 NFS 资源和网络上的所有计算机进行访问。

SFU 中的 NFS 客户端模块提供了一个灵活的、兼容的 NFS 客户端,使得 Windows 用户能够轻松而流畅地访问存储在旧式 UNIX 服务器上的资源。NFS 客户端完全集成到了 Windows 资源管理器接口中,它包括完全的命令行支持能力,从而使用户能够透明地访问存储在 UNIX 服务器上的文件。命令行支持为系统管理员提供了从命令行使用 Windows 或 UNIX 语法来轻松地跨平台边界运行脚本的灵活性。

SFU 中的 NFS 服务器模块对 UDP 和 TCP 连接都提供了完全支持,而且还支持 NFS 2 和 NFS 3,从而可以完全兼容各种 UNIX 客户端。UNIX 系统上的用户对 Windows 服务器上的文件系统拥有透明的完全访问能力,极大地方便了应用程序的过渡和迁移。

SFU 中的 NFS 网关模块为下游 Windows 客户端提供了对 UNIX 文件系统资源进行完全访问的机制,从而无需为 Windows 客户端购买或安装其他软件。NFS 资源被映射为网关计算机的驱动器号,然后再通过使用标准 Windows SMB 共享重新共享给 Windows 客户端。虽然高级用户 (power users) 可能更喜欢本地安装的 NFS 客户端,但使用 NFS 网关可以大大简化过渡时期的迁移和互操作问题,因为它只需进行最少量的配置更改就可为所有用户提供持续的访问。

注意:NFS 网关只能安装在服务器级别的产品上,而且不能与 NFS 客户端安装在同一台服务器上,因为二者互相排斥。但是,在装有 NFS 网关的服务器上,NFS 网关包括了对 UNIX NFS 资源的客户端访问服务。

API

Windows 开发者熟悉 Windows 开发环境所包含的 API,而 UNIX 开发者则习惯于 UNIX API,包括那些往往特定于某个 UNIX 版本的 API。SFU 包括 Interix 软件开发工具包 (SDK) 和 gnu SDK,使得开发者能够访问 1,900 多个 UNIX API,这些 API 都属于 Interix SDK 的一部分;同时,SFU 还支持用于 C 语言程序的 Microsoft Visual C++ 编译器以及 gnu 编译器和开发工具(包括 gcc、g++ 和 gdb)。本来就使用 Windows 的开发人员可以使用他们更熟悉的 IDE 和编译器,而 UNIX 开发人员可从一系列 gnu 编译器和工具(包括 gnu 调试器和 gdb)中进行选择。

此外,大量的 Open Source 工具和实用工具,或者已经移植到 SFU 并且可用(通过 Interop Systems),或者可以移植到 SFU,从而为开发者提供了理想的环境和工具。 Microsoft’s partnership with Interop Systems(Microsoft 与 Interop Systems 的合作关系) (http://www.) 也为 SFU 环境提供了新的和已更新的库和 API。

用户管理

SFU 包含双向密码同步。这种机制允许用户从 UNIX 和 Windows 这两种环境中的任一环境更改他们的 UNIX 和 Windows 密码,大大简化了从 UNIX 到 Windows 的迁移过程中的互操作。

SFU 支持用于用户身份验证和它本身的 UNM 服务的 NIS,它还提供了 PCNFS 服务器以支持需要该服务器的其他应用程序。UNM 既可使用它自己的基于 Active Directory 的 NIS,也可使用基于现有的 UNIX 的用于身份验证的 NIS,还可使用 PCNFS 类型的文件。

移植问题

将 UNIX 应用程序移植到 Red Hat 或其他 Linux 版本之一,或移植到 Windows 环境,都会涉及到很多问题。这些问题包括用户帐户的迁移、应用程序本身的迁移和应用程序的支持数据和资源的迁移。

帐户迁移

移动您的应用程序只是整个解决方案的一部分。您还需要为您的应用程序移动用户团体和安全方案。

NIS 能够跨多种 UNIX 平台使用,从而提供了单一的网络身份验证和登录机制。SFU 支持 NIS 作为 NFS 访问的身份验证机制,并提供了一个完整的 NIS 服务器,该服务器允许 UNIX 系统管理员将他们的主 NIS 数据库移动到 Active Directory,以及将他们现有的 UNIX 帐户迁移到 Windows。Red Hat 和其他 Linux 版本支持 OpenLDAP,但不为完全单个登录提供这种功能,并且需要执行其他一些没有与其余的 Red Hat 管理集成在一起的管理操作。此外,由于大多数企业都有 Windows 用户,Red Hat 中缺少 Active Directory 支持会使选择受到限制。

UNIX、Linux 和 Windows 帐户有着本质的不同,它们使用不同的身份验证机制。当用户、开发人员和管理员在迁移过程中需要对 UNIX 和 Windows 服务器上的资源都进行访问时,此区别会导致产生一些重大而往往又很微妙的问题。即使小心创建帐户,使它们拥有相同的登录名,它们也不相同,因为 UNIX 计算机上的用户 jdoe 与 Windows 上的用户 DOMAIN\jdoe 是同一用户。为了便于过渡和迁移,SFU 包括了 UNM 服务,正如在前面的部分中提到的。UNM 提供了一种可用来将 UNIX 帐户映射到 Windows 帐户、将 Windows 帐户映射到 UNIX 帐户的机制,即使在帐户拥有不同标识符的情况下也能够映射。此项功能大大简化了从 UNIX 迁移到 Windows 的过渡时期的帐户维护,允许拥有一组适当的凭据的用户进行完全访问。只需要在域中建立和维护一个单一的 UNM 服务器,从而简化了维护和设置问题。

POSIX

与尚未完全遵从 POSIX 标准的 Red Hat 和其他 Linux 分发不同,SFU 包含一个符合 POSIX.1 标准的子系统,此子系统不仅完全支持 POSIX 规范,还支持其他扩展和功能,包括套接字、Berkeley Software Distribution (BSD) 4.4 接口、System V 进程间通信 (IPC) 机制、伪终端和非 POSIX.1 标准的内存映射文件。

符合纯 POSIX.1 规范的应用程序和那些使用某些条件编译(#ifdef 预处理器命令)或包装功能组合来处理可能的替代规范的应用程序,不需要修改即可移植到 SFU 子系统。将软件移植到 SFU 子系统涉及以下几个方面:

?

使源尽可能地便于移植。如果您编写的是纯 POSIX 应用程序,它应当只需在 Interix 下简单地进行重新编译即可,但很少有应用程序是纯 POSIX 应用程序。了解您的应用程序与 POSIX 不一致的方面,使用提供的迁移指导,将有助于您顺利进行迁移。

?

使用受支持的 POSIX 扩展。SFU 不仅支持 POSIX,还支持来自其他标准的通用扩展和 API,包括来自传统 UNIX 系统(例如 BSD 或 System V 派生系统)的 Single UNIX Specification 和扩展。

?

要解决特定于 SFU 的子系统的问题,请参考 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/ucmglp.asp 站点上的 UNIX Application Migration Guide(UNIX 应用程序迁移指南)。

扩展

除严格的 POSIX.1 标准以外,SFU 还支持许多其他扩展,包括 XPG4.2 规范。要充分利用这些扩展,您需要 在您的代码开头使用 #define _ALL_SOURCE 1 语句,然后 #include 语句才能包含头文件。否则,将使用限制性更高的 _POSIX_SOURCE。

Interix SDK 包括以下扩展:

?

内存映射文件

?

System V IPC 机制,例如,共享内存、消息队列和信号灯

?

Berkeley 样式套接字

?

BSD 字符串和内存函数,例如:属于 Single UNIX Specification 的 bcopy() 和 strncasecmp(),以及 BSD 4.4 的 strsep() 和 strcasestri()

?

来自 ncurses 数据包和 termcap 例程的 Curses 和终端例程

?

伪终端 — 支持 BSD 和 System V 方法

SFU 特定的问题

与传统的 UNIX 相比,某些代码操作可以给 SFU 的子系统带来更多的问题。具体说来,在传统的 UNIX 系统中,撤消对一个未初始化的指针的引用常常被忽视,结果在 SFU 中会造成分段错误。即使忽略此操作引起的是很小的问题,但是因为这个原因,撤消引用也被认为是不良代码编写方法。所以,对您的应用程序来说,这是不可取的。虽然这意味着在最初的移植中需要做一些工作,但这样会使应用程序更健壮。

Windows 中使用的安全系统比传统 UNIX 系统中的安全系统更严格。在 /etc/passwd 和 /etc/group 文件中定义的用户标识符 (UID)/组标识符 (GID) 对的概念,被单一安全标识符 (SID) 取代了,这一标识符包含唯一的域名/登录名对和域名/组名对,此二者都属于单独一个命名空间。因为没有 /etc/passwd 或 /etc/group 文件,所以开发人员需要以不同的方式对待 struct passwd。例如,getpwnam() 和 getgrnam() 调用接受“域名 + 用户名”对,而不是仅接受单独的用户名或组名,并且 pw_gecos 是使用 Windows 用户帐户的“描述”字段中的文字来填充的。

X Windows

Interix SDK 包括 X11 库、头文件和用于构建 X Windows 应用程序的各种工具。但是,SFU 包括 X Windows 服务器,这意味着需要在本地工作站显示的 X Windows 应用程序需要安装 X Windows 服务器。有许多可用的优秀的 X Windows 服务器产品,包括专门为 Interix 编写的版本 — 来自 Interop Systems 的 Interop X Server 8.0 for SFU/Interix。

为 X Windows 编写的大多数代码采用 /usr/X11 目录结构,但 Interix 使用版本特定的目录结构,/usr/X11Rn,其中的 n 会被替换为 X11 的发布级别。处理这一区别的最好方法是,创建一个指向新目录的符号链接,不需要对应用程序的代码做任何更改。SFU 3.0 只包括 X11R5,但在 Services for UNIX 3.5(2004 年 1 月发布)中自带有 X11R6.6;如果应用程序需要的 X11 高于 SFU 3.0 原带的 X11,现在已经可以从 Interop Systems Tool Warehouse(网址是 http://www./tools/warehouse.htm)下载。

Curses

对于使用 curses 的字符模式的应用程序,Interix SDK 包括了 curses 的 ncurses 实现,它是由 Eric S. Raymond 和 Zeyd M. Ben-Halim 编写的。SFU 帮助应用程序中详细论述了这一高兼容性、十分健壮的 curses 实现,还提供了有关 curses 应用程序的编写的全部文档和 ncurses 实现的细节

摘要

基于 Intel 的系统现在已达到商务应用程序要求的性能级别。这一因素和这些系统的低成本,使得公司开始考虑将应用程序迁移到基于 Intel 的平台上。

对于 UNIX 应用程序到基于 Intel 的平台的迁移,虽然 Red Hat 或其他 Linux 版本看起来好像是一个自然的迁移目标,但这种选择也需要成本,也会出现问题:

?

缺乏应用程序和管理的集成,增加了开发和维护 Linux 应用程序的总成本

?

没有用于提供全面支持的单一源

?

虽然有广泛的硬件支持,但是驱动程序的质量不稳定,并且驱动程序没有证书或验证

与迁移到 Linux 相比,Microsoft Windows Server 2003 with SFU 提供的工具和环境只需要做较少的转换工作就可支持本机 UNIX 应用程序。此外,通过移植到 Windows Server 2003,在迁移后您有很多机会来扩展您的应用程序以利用 Windows Server 2003 环境中的功能(包括 .NET Framework 和 Microsoft 应用程序堆栈)。Microsoft Windows Server 2003 with SFU 是用来承载来自旧式 UNIX 环境的应用程序的理想操作系统平台。

Windows Server System 作为迁移目标平台,有很多好处,包括以下几个方面:

?

集成的解决方案,拥有一致的应用程序、服务器、客户端和平台管理

?

通过 MMC 和它的可扩展的管理单元结构以及组策略发布系统来实现的强大的集中管理功能

?

世界上最大的支持服务组织和团体,有大量的测试、开发、验证服务作为后盾,并且为大多数问题提供统一的故障与解决资源

?

健壮的可扩展平台,拥有高级开发工具、大量可用的应用程序和通过 .NET 结构实现 Web 服务的简便途径

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多