![]() | 簡介 |
![]() | Services for UNIX |
![]() | 遷移問題 |
![]() | Windows Server 2003 with SFU 挑戰(zhàn) Linux |
![]() | 與 Windows 和 UNIX 的互操作性 |
![]() | 移植問題 |
![]() | 摘要 |
在過去,UNIX 可能曾經(jīng)是許多企業(yè)的默認(rèn)應(yīng)用程序平臺。然而,已經(jīng)有兩種因素迫使企業(yè)考慮備用方案 — 基于 Intel 的服務(wù)器日益強(qiáng)大的功能,以及它們同基于專有精簡指令集計算 (RISC) 的 UNIX 服務(wù)器相比明顯較低的成本。
獨(dú)特的 Intel 結(jié)構(gòu)的 CPU 能力不斷增長,其速度達(dá)到甚至超過了摩爾定律推定的速度。隨著超線程處理器的增加和對稱多處理器 (SMP) 服務(wù)器的推出以及利用這類服務(wù)器的操作系統(tǒng)的出現(xiàn),很容易看出基于 Intel 的服務(wù)器有能力運(yùn)行重要的應(yīng)用程序。
過去,基于 Intel 的服務(wù)器曾經(jīng)比 UNIX (RISC) 服務(wù)器便宜許多。這種情況仍然屬實;而且,對企業(yè)來說,由于新的 Intel 處理器具有更高的能力,與低容量的、UNIX 供應(yīng)商的專有 RISC 產(chǎn)品相比,高容量的、基于 Intel 的服務(wù)器是一個極具吸引力的選擇。
乍看起來,Intel 平臺的成本節(jié)省好像會被從 UNIX 應(yīng)用程序向基于 Intel 的平臺遷移可能產(chǎn)生的費(fèi)用抵銷掉。然而,能夠提供運(yùn)行業(yè)務(wù)時所需的功能的并不是平臺,而是建立在平臺上的應(yīng)用程序。如果采用一種低成本的服務(wù)器替代方案的第一步是對所有應(yīng)用程序進(jìn)行復(fù)雜而高成本的遷移,那么許多企業(yè)可能不愿意進(jìn)行這種類型的更改。
有些公司認(rèn)為 Linux 是一種最能降低成本的方法。他們的理由是:Linux 是 UNIX 的一種,因此該遷移過程應(yīng)該簡便、容易。然而,盡管 Linux 和 UNIX 共用許多命令,但 Linux 和 UNIX 畢竟不是一回事。而且,并不是所有的 Linux 分發(fā)都是相同的,也并不是所有的 UNIX 產(chǎn)品都是相同的。實際情況是,UNIX 應(yīng)用程序的遷移需要投入大量工作。
Microsoft 已經(jīng)有一個一攬子解決方案,專門用于幫助企業(yè)遷移 UNIX 應(yīng)用程序。這個解決方案包括 Windows Server 2003、Microsoft Services for UNIX (SFU) 和一組工具和服務(wù),將它們聯(lián)合在一起后,實際上可使向 Windows 遷移比向 Linux 遷移更容易。本文探討了將 UNIX 應(yīng)用程序遷移到 Linux 或遷移到 Windows Server 2003 with SFU 時所涉及的一些問題。
Windows Server 2003 提供了能夠與 UNIX 系統(tǒng)很好地進(jìn)行互操作的許多服務(wù),包括一個 Telnet 客戶端和服務(wù)器、允許跨平臺打印的 LPR 和 LPD 打印服務(wù)、TCP/IP 的基本連接和文件移動資源。然而,為獲得完全的互操作性,也為了獲得一個健壯且功能豐富的遷移平臺,我們又增加了 SFU,它提供了可以簡化您的 UNIX LOB 應(yīng)用程序遷移的所有功能和工具。
SFU 提供了一個綜合的軟件包來滿足上面所描述的互操作需求,它可實現(xiàn)以下功能:
? | 使用網(wǎng)絡(luò)文件系統(tǒng) (NFS) 在 UNIX 和 Windows 之間共享文件。SFU 提供了:
| ||||||
? | Windows 和 UNIX 之間的遠(yuǎn)程命令行訪問。SFU 提供了:
| ||||||
? | 全面的跨平臺腳本能力。SFU 為以下各項提供了一致的實施:
| ||||||
? | 通過使用 Microsoft Windows Server 2003 Active Directory? 服務(wù)提供網(wǎng)絡(luò)信息系統(tǒng) (NIS) 服務(wù)器功能來實現(xiàn)的通用網(wǎng)絡(luò)管理 | ||||||
? | Windows 和 UNIX 之間的密碼同步 | ||||||
? | 使用 Microsoft Windows Installer 進(jìn)行安裝 | ||||||
? | 使用 Microsoft 管理控制臺 (MMC) 實現(xiàn) Services for UNIX 組件和服務(wù)的管理 | ||||||
? | 使用 Windows Management Instrumentation (WMI) 管理 SFU 組件 |
除了這些功能外,SFU 還可以安裝在基于 Windows 2000、Windows XP 或 Windows Server 2003 的計算機(jī)上,并且可以和各種基于 UNIX 的計算機(jī)進(jìn)行互操作。SFU 3.0 還支持 Microsoft Windows NT 4.0 SP6a 和較早版本 UNIX 的密碼同步。SFU 提供了密碼同步的 UNIX PAM/SSOD 組件的源代碼,這些源代碼還被預(yù)編譯為用于 Solaris 7 或 8、HP-UX 11i、Red Hat Linux 8.0 和 IBM AIX 5L 5.2 的二進(jìn)制文件。
大多數(shù)企業(yè)在考慮從 RISC/UNIX 到 Intel 的遷移時最擔(dān)心的一個問題就是:他們當(dāng)前承載在 UNIX 服務(wù)器上的應(yīng)用程序可能不能在新的環(huán)境中運(yùn)行,可能需要進(jìn)行大量的重寫或替換。無論在遷移的實際成本方面還是在風(fēng)險方面,這一過程的代價都是很高的,因為更改核心應(yīng)用程序會極大地改變整個企業(yè)的運(yùn)作方式。另外,大多數(shù)企業(yè)在 UNIX 管理腳本和培訓(xùn)方面付出了大量的投資,他們不愿意浪費(fèi)這些投資。
在考慮這種類型的遷移時,需要注意以下三大方面:
? | 應(yīng)用程序遷移,實際上就是應(yīng)用程序的移動 |
? | 資源遷移,即遷移支持資源,包括文件、帳戶和數(shù)據(jù)庫 |
? | 技能遷移,它可能要求您的全體職員掌握一種新的專業(yè)技術(shù)來支持新的環(huán)境 |
人們默認(rèn)為 Linux 很容易滿足這三方面的要求,這種設(shè)想實際上是沒有道理的。應(yīng)用程序和技能這兩種遷移在各種不同的 UNIX 和 Linux 版本之間存在著細(xì)微而普遍的差異。具體來說,提供的程序庫和實際實現(xiàn)它們的方法方面的差異意味著需要對許多應(yīng)用程序進(jìn)行修改,同時,實用工具、工具和 Shell 方面的差異意味著需要對管理人員、開發(fā)人員和用戶進(jìn)行重大的調(diào)整。雖然,通過使用 NFS 文件系統(tǒng)和許多相同的配置文件,從 UNIX 到 Linux 的資源遷移理應(yīng)相當(dāng)容易。但是,Red Hat 和 Linux 的許多其他版本處理或設(shè)置它們的組的方式與大多數(shù) UNIX 版本不相同,它們會為各個用戶分別創(chuàng)建一個組,組名與用戶名相同。那些預(yù)期會利用組權(quán)限和成員身份的應(yīng)用程序,將必須修改應(yīng)用程序本身或修改基礎(chǔ)環(huán)境。
SFU 提供了一個優(yōu)秀的遷移解決方案,它解決了所有這三方面的問題。它提供了一個高性能的環(huán)境,從而使 UNIX 開發(fā)人員或系統(tǒng)管理員能夠更簡便、更輕松地移植應(yīng)用程序和腳本。SFU 包括一個豐富的 API 集,有 1,900 多個 UNIX API,這些 API 的運(yùn)行與它們在 UNIX 中的運(yùn)行完全一樣。它還包括一個完整的 UNIX 環(huán)境,帶有數(shù)百個 UNIX 應(yīng)用程序以及 Korn 和 C shell,因此,企業(yè)只需稍加改動或不作改動就可以輕松地將他們的自定義應(yīng)用程序和腳本移植到 Windows 環(huán)境中。在技能和腳本方面的投資不會白費(fèi),因為在 Windows 環(huán)境中可以使用同樣的技能和腳本。
例如,LBM Systems,LLC 使用 SFU 將它的 UniQue 和 ClusterQue 輸出管理應(yīng)用程序移植到了 Windows。LBM 的總裁 Steven Bardwell 解釋說,“移植到 Interix 確實非常容易??隙ú粫纫浦驳饺魏纹渌?UNIX 更困難或花費(fèi)更多時間?!庇嘘P(guān) LBM Systems 案例研究的更多詳細(xì)信息,請訪問:http://www.microsoft.com/resources/casestudies/CaseStudy.asp?CaseStudyID=13486。
使用 SFU,UNIX 應(yīng)用程序(不管是基于純字符、基于 curses 還是基于 X Window)的實際遷移通常是整個遷移過程中最容易的、風(fēng)險最低的部分。該技術(shù)作為一個完整的 Windows 子系統(tǒng)運(yùn)行在內(nèi)核級別,它包括一些隨附的實用工具,這些工具提供了一個從外觀上到運(yùn)行上都與任何其他 UNIX 相同的環(huán)境。它提供了一個單根文件系統(tǒng),并且完全支持區(qū)分大小寫的文件名、作業(yè)控制、編譯工具、shell 腳本和 300 多個 UNIX 命令和實用工具。因為這個子系統(tǒng)是 Windows 內(nèi)核的組成部分,所以它不用模擬或降低性能就能夠提供真正的 UNIX 功能。它的單根文件系統(tǒng)從 UNIX 環(huán)境中屏蔽了基于 Windows 卷(“C:”、“D:”等等)的文件系統(tǒng),并且將實用工具和配置文件放在了 UNIX 用戶或系統(tǒng)管理員認(rèn)為它們應(yīng)該駐留的位置。
如果應(yīng)用程序從 UNIX 進(jìn)行了遷移,那么支持應(yīng)用程序的文件系統(tǒng)、打印和帳戶資源也需要遷移。嘗試同時遷移應(yīng)用程序和資源會大大增加遷移風(fēng)險,并且會使故障排查變得更加困難。
Red Hat 和其他不同的 Linux 版本都提供了一套很好的互操作工具(包括 NFS 客戶端和服務(wù)器),并且支持用于帳戶管理的 NIS。因為 Red Hat 上不同的組的建立方式各不相同,管理員很可能需要修改基礎(chǔ)帳戶假設(shè)以創(chuàng)建更多的普通組,但是這一步在轉(zhuǎn)移到一個新的 Linux 環(huán)境時并不重要。
SFU 也提供了一整套互操作工具,包括 NFS 客戶端和服務(wù)器產(chǎn)品和對 NIS 的完全支持。這些工具極大地簡化了遷移,并且使開發(fā)人員和系統(tǒng)管理員能夠執(zhí)行分步遷移。開發(fā)人員可以遷移實際應(yīng)用程序,而讓它所依賴的文件和數(shù)據(jù)留在 UNIX 上,也可以先遷移數(shù)據(jù)和文件而后遷移實際的應(yīng)用程序。SFU 提供的互操作工具使得開發(fā)人員和系統(tǒng)管理員能夠控制遷移時間表和遷移過程而不用擔(dān)心資源的位置。
在任何遷移計劃中,一個經(jīng)常被忽略但很重要的問題是技能的遷移。對一個企業(yè)來說,UNIX 開發(fā)人員、用戶和系統(tǒng)管理員的知識和技能意味著需要付出大量投資。人們往往認(rèn)為 Red Hat 和其他 Linux 版本與 UNIX 相似,因而可以流暢地進(jìn)行技能的遷移,但嚴(yán)格說來,這種認(rèn)識并不正確。在環(huán)境所包含的許多不同的實用工具和工具之間,受支持的命令選項和輸出都有著顯著的差別。另外,Linux bash shell 雖然提供了許多類似 UNIX Korn shell 的功能,但仍缺少某些 Korn shell 具有的功能,因此,腳本通常需要進(jìn)行重大的修改才能遷移。通過在 Windows 上提供一個完整的 UNIX 環(huán)境,SFU 中的 Interix 技術(shù)使得這些技能也能夠遷移,既保留了對企業(yè)的價值,又大大縮短了新技術(shù)的學(xué)習(xí)曲線。
SFU 使用 UNIX 管理員認(rèn)為應(yīng)該使用的配置文件和管理實用工具(包括 inetd.conf 和 resolv.conf),這些文件和工具放置在她/他認(rèn)為應(yīng)該放置的位置(在 /etc 目錄中)。這種能力既降低了遷移的難度和風(fēng)險,又最大限度地遷移了技能UNIX 管理員不需要大量的重新培訓(xùn) — 使用熟悉的工具和熟悉的環(huán)境,遷移就好像是從一個 UNIX 轉(zhuǎn)移到了另外一個 UNIX。因為文件放在熟悉的位置,這最大限度地減少了腳本和代碼的更改,從而降低了總的遷移風(fēng)險。這些能力可以使將 UNIX 應(yīng)用程序移植到 Windows 實際上比將同樣的應(yīng)用程序移植到 Linux 更容易,盡管 Linux 與 UNIX 之間在工具和環(huán)境兩方面僅有細(xì)微(但很重要)的差別。
下面是管理員和開發(fā)人員廣泛使用的 UNIX 環(huán)境的組件。
Red Hat 和其他不同的 Linux 版本提供了 bash shell 作為主要的 shell,同時還提供了 C shell (tcsh)。bash shell 是一個靈活而且功能強(qiáng)大的 shell,它向后兼容基本的 UNIX Bourne shell (/bin/sh),而且還具備 Korn shell 的許多功能和改進(jìn)功能。編寫的用于利用 Korn (/bin/ksh) shell 功能的腳本可能需要做某些修改,而且 bash 的命令行操作與 ksh 不相同。Red Hat Linux 可以使用 Korn shell (pdksh),但是默認(rèn)情況下沒有使用它。
SFU 包括 pdksh shell、/bin/ksh、一個遵循 POSIX.2 標(biāo)準(zhǔn)的 shell 和實現(xiàn)為 /bin/tcsh 的 C shell(以及實現(xiàn)為符號鏈接的 /bin/csh)。SFU 沒有提供純 Bourne shell,而是使用了一個到 /bin/ksh 的符號鏈接來提供預(yù)期發(fā)現(xiàn) /bin/sh 的腳本。因為 pdksh 提供了對 Bourne shell 腳本的高度的向后兼容性,所以,任何為 Bourne shell 所編寫的腳本即使需要修改,也只需要稍加修改。SFU 用戶如果需要獲取 bash shell,可從 Interop Systems (http://www.interopsystems.com/tools) 進(jìn)行下載。
C shell,雖然不是一個主要的腳本環(huán)境,但是很長時間以來一直是交互式用戶和管理員的最愛,所以 Red Hat Linux 和 SFU 都為這些用戶提供了 /bin/tcsh。
大多數(shù) UNIX 應(yīng)用程序和幾乎所有的 UNIX 腳本都預(yù)期 UNIX 中有豐富的命令行環(huán)境,并且充分利用了豐富的命令行環(huán)境。盡管 Red Hat 和其他 Linux 版本提供了許多這類工具,但是,Linux 版本不同,提供的工具組合也稍有不同。許多這類工具支持的命令行選項稍微不同,并且最終輸出也可能稍有差別,這將導(dǎo)致那些預(yù)期某種特定結(jié)果的程序和腳本出現(xiàn)問題。在許多情況下,特定的實用工具的設(shè)計目標(biāo),更多考慮的是它提供的附加的靈活性和選項,而很少考慮與 UNIX 的向后兼容性。
相反,SFU 的設(shè)計目標(biāo)是提供與 UNIX 的完全兼容,并提供 300 多種本機(jī) UNIX 實用工具來為用戶、管理員和開發(fā)人員提供他們預(yù)期的工具。這些 UNIX 實用工具是完全的本機(jī) UNIX 應(yīng)用程序,它們的行為與 UNIX 用戶預(yù)期的完全一樣,包括從 tar 和 cpio 再到 awk、sed 和 tr 的所有實用工具。
應(yīng)用程序用戶、腳本用戶和交互式 shell 用戶會在他們預(yù)期發(fā)現(xiàn)這些工具的位置發(fā)現(xiàn)這些實用工具。這一標(biāo)準(zhǔn)的 UNIX 環(huán)境極大地簡化了遷移,因為企業(yè)可以利用他們現(xiàn)有的在培訓(xùn)和技能方面的投資,而且無需巨大的移植成本就可重用腳本和自定義程序。
當(dāng)前的 Red Hat 和其他 Linux 版本通常提供一個 Telnet 服務(wù)器和客戶端,同樣還提供一整套 r 實用工具,盡管許多早期的 Red Hat 不包括 Telnet。SFU 包括基于 Win32 和 Interix 的 Telnet 服務(wù)器和客戶端,在提供全面的兼容性和跨平臺維護(hù)功能的同時,同樣包括了對“r 實用工具”的全面支持。Win32 Telnet 服務(wù)器允許完全連接,它只通過所允許的到服務(wù)器的授權(quán)連接的數(shù)目來限制會話數(shù)目。Interix telnetd daemon 提供了全面的 UNIX 兼容性并且使用 /bin/ksh 或 /bin/tcsh 作為它的默認(rèn) shell,從而為用戶帶來了一個熟悉而舒適的、支持標(biāo)準(zhǔn) UNIX 腳本的外觀。
SFU 對 UNIX r 實用工具的支持包括遠(yuǎn)程復(fù)制 (rcp)、用于遠(yuǎn)程分發(fā)的客戶端和服務(wù)器(rdist 和 rdistd)、遠(yuǎn)程登錄 (rlogin) 和遠(yuǎn)程 shell (rsh)。盡管出于安全原因,許多企業(yè)選擇在他們的環(huán)境中不使用這些工具或嚴(yán)格限制它們的使用,但是它們能夠提供一種簡單而有效的跨平臺工具。對于這些企業(yè),可以使用 F-Secure 提供的商用 SSH,或者使用 Open Source 版本 OpenSSH。OpenSSH 也可以從 Interop Systems 下載。
Linux 和 SFU 都使用了多種第三方和 Open Source 實用工具、shell 和工具,都提供了輕松編譯可用的 Open Source 程序的能力。對于 SFU,預(yù)編譯 Open Source 實用工具的最好來源是 Interop Systems 的 Tool Warehouse (http://www.interopsystems.com/tools/warehouse.htm)。Interop Systems 提供了一個預(yù)編譯工具的倉庫和一些社區(qū)論壇,開發(fā)人員可以到這些論壇討論遷移問題。
如果您打算將您的 UNIX 應(yīng)用程序遷移到 Windows,您可以借鑒那些已經(jīng)執(zhí)行過該遷移的開發(fā)人員的經(jīng)驗。Microsoft 提供了大量的材料(從遷移需求分析到完整的遷移指南)來幫助您將 UNIX 應(yīng)用程序移植到 Windows 環(huán)境,這些材料將向您介紹成功的遷移所需要的具體步驟。
有關(guān)更多詳細(xì)信息,請訪問 http://www.microsoft.com/windows2000/migrate/unix/default.asp。您可以在以下網(wǎng)址找到一個有關(guān) UNIX ANSI C/C++/Fortran 代碼遷移模式和實踐的詳細(xì)討論 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/ucmglp.asp。
Windows Server 2003 with SFU 提供了一個完整的 UNIX 開發(fā)和部署環(huán)境,包括 Korn 和 C shell、300 多個 UNIX 實用工具、1900 多個 UNIX API 和完整的互操作工具。雖然有 Korn 和 C shell 版本,但是 Red Hat 和其他 Linux 版本主要依賴于 bash shell。另外,雖然各種版本的 Linux 都提供了與 UNIX 相似的 API 和實用工具,但是它們并不是完全匹配,可能需要做重大的移植工作。另外,到 Linux 的移植不是一個單一的目標(biāo)。盡管一些 Linux 供應(yīng)商試圖達(dá)成一個通用的移植目標(biāo),但是這一努力沒有包括所有的供應(yīng)商并且這一工作還處在初級階段,這意味著到任何 Linux 分發(fā)的移植都需要做額外的工作以支持其他分發(fā)。
不同的 Linux 分發(fā)并沒有什么異常,因為 UNIX 本身也已發(fā)展為受不同的供應(yīng)商支持的不同的版本。為實現(xiàn) UNIX 的可移植性承諾,POSIX 標(biāo)準(zhǔn)產(chǎn)生了。不同的 UNIX 版本都支持 POSIX 標(biāo)準(zhǔn),這意味著它們能夠支持依照這一標(biāo)準(zhǔn)編寫的應(yīng)用程序。SFU 就充分符合 POSIX 標(biāo)準(zhǔn)。如果您編寫了 LOB 應(yīng)用程序來利用這一可移植性標(biāo)準(zhǔn),當(dāng)您將程序遷移到 Windows 時,您會從您做的這項工作受益,但是如果您遷移到 Linux,您將不能受益,因為它還不符合 POSIX。
這兩種平臺之間最大的不同可從它們各自提供的附加價值的比較中看出來。在您移植到 Linux 后,您仍然無法訪問 Windows 環(huán)境的豐富資源。如果移植到 Linux,您只是從一個基礎(chǔ)平臺轉(zhuǎn)移到了另一個基礎(chǔ)平臺。但是,遷移到 Windows 環(huán)境卻會帶來大量的附加價值,包括與您的桌面環(huán)境的協(xié)作、大量的新應(yīng)用程序以及 .NET framework 的 Web 服務(wù)能力。最后,與 Linux 供應(yīng)商對他們的產(chǎn)品提供的支持相比,Microsoft 對 Windows 提供了更高水準(zhǔn)的支持,包括在線社區(qū)、供應(yīng)商電話支持和上面提到的遷移指南。
即使您決定遷移您的全部或一部分關(guān)鍵應(yīng)用程序,在一個短暫的雙平臺遷移時期內(nèi),或者在一個較長的雙平臺時期內(nèi),您仍可能需要支持同時運(yùn)行 Windows 服務(wù)器和 UNIX 服務(wù)器的一種環(huán)境。SFU 提供了互操作工具來減小同時支持這兩種環(huán)境的負(fù)擔(dān)和風(fēng)險。如果遷移到 Red Hat 或其他某種 Linux 版本,則會面臨許多與遷移到 Windows 相同的挑戰(zhàn),另外您還可能需要在遷移過程中支持三種操作環(huán)境,因為 Windows 很可能至少是該環(huán)境的一部分。
Red Hat 和其他 Linux 版本主要依賴于 SAMBA 來提供與 Windows 客戶端和服務(wù)器的互操作。SAMBA 使用原屬于 Windows 網(wǎng)絡(luò)的服務(wù)器消息塊 (SMB) 協(xié)議來提供與 Windows 客戶端和服務(wù)器的文件系統(tǒng)互操作。然而,SAMBA 在與 Active Directory 和卷影復(fù)制的兼容性方面不如 Windows Server 2003,這限制了在那些利用 Windows Server 2003 提供的高級功能的環(huán)境中對它的使用。
Windows Server 2003 with SFU 和那些允許 UNIX 和 Windows 和平共處并共享資源的工具一起提供了一個完整的、可擴(kuò)展的互操作環(huán)境。這個環(huán)境包括了用于文件系統(tǒng)互操作的工具(例如 NFS 客戶端、NFS 服務(wù)器和 NFS 網(wǎng)關(guān)),這些工具提供了完全的、網(wǎng)絡(luò)上的文件系統(tǒng)互操作能力。SFU 還提供了用于身份驗證和帳戶互操作的工具,包括用于 NIS 的服務(wù)器、用戶名稱映射 (UNM) 和雙向密碼同步。SFU 還包括了用來提供打印兼容性的 UNIX 打印服務(wù)(基礎(chǔ) Windows Server 2003 操作系統(tǒng)的組成部分)和一些管理工具和腳本兼容工具,例如 Telnet、Perl、Korn 和 C shell。
NFS 成為 UNIX 的標(biāo)準(zhǔn)已有多年了,它提供了一種簡單而有效的跨網(wǎng)絡(luò)共享文件系統(tǒng)的方法。SFU 包括用于與 UNIX 的完全互操作的 NFS 客戶端和服務(wù)器。NFS 網(wǎng)關(guān)也是 SFU 的一部分,它提供了對網(wǎng)絡(luò)上的 NFS 資源的訪問 — 不需要在下游 Windows 計算機(jī)上添加額外的軟件就可對網(wǎng)絡(luò)上的 NFS 資源和網(wǎng)絡(luò)上的所有計算機(jī)進(jìn)行訪問。
SFU 中的 NFS 客戶端模塊提供了一個靈活的、兼容的 NFS 客戶端,使得 Windows 用戶能夠輕松而流暢地訪問存儲在舊式 UNIX 服務(wù)器上的資源。NFS 客戶端完全集成到了 Windows 資源管理器接口中,它包括完全的命令行支持能力,從而使用戶能夠透明地訪問存儲在 UNIX 服務(wù)器上的文件。命令行支持為系統(tǒng)管理員提供了從命令行使用 Windows 或 UNIX 語法來輕松地跨平臺邊界運(yùn)行腳本的靈活性。
SFU 中的 NFS 服務(wù)器模塊對 UDP 和 TCP 連接都提供了完全支持,而且還支持 NFS 2 和 NFS 3,從而可以完全兼容各種 UNIX 客戶端。UNIX 系統(tǒng)上的用戶對 Windows 服務(wù)器上的文件系統(tǒng)擁有透明的完全訪問能力,極大地方便了應(yīng)用程序的過渡和遷移。
SFU 中的 NFS 網(wǎng)關(guān)模塊為下游 Windows 客戶端提供了對 UNIX 文件系統(tǒng)資源進(jìn)行完全訪問的機(jī)制,從而無需為 Windows 客戶端購買或安裝其他軟件。NFS 資源被映射為網(wǎng)關(guān)計算機(jī)的驅(qū)動器號,然后再通過使用標(biāo)準(zhǔn) Windows SMB 共享重新共享給 Windows 客戶端。雖然高級用戶 (power users) 可能更喜歡本地安裝的 NFS 客戶端,但使用 NFS 網(wǎng)關(guān)可以大大簡化過渡時期的遷移和互操作問題,因為它只需進(jìn)行最少量的配置更改就可為所有用戶提供持續(xù)的訪問。
注意:NFS 網(wǎng)關(guān)只能安裝在服務(wù)器級別的產(chǎn)品上,而且不能與 NFS 客戶端安裝在同一臺服務(wù)器上,因為二者互相排斥。但是,在裝有 NFS 網(wǎng)關(guān)的服務(wù)器上,NFS 網(wǎng)關(guān)包括了對 UNIX NFS 資源的客戶端訪問服務(wù)。
Windows 開發(fā)者熟悉 Windows 開發(fā)環(huán)境所包含的 API,而 UNIX 開發(fā)者則習(xí)慣于 UNIX API,包括那些往往特定于某個 UNIX 版本的 API。SFU 包括 Interix 軟件開發(fā)工具包 (SDK) 和 gnu SDK,使得開發(fā)者能夠訪問 1,900 多個 UNIX API,這些 API 都屬于 Interix SDK 的一部分;同時,SFU 還支持用于 C 語言程序的 Microsoft Visual C++ 編譯器以及 gnu 編譯器和開發(fā)工具(包括 gcc、g++ 和 gdb)。本來就使用 Windows 的開發(fā)人員可以使用他們更熟悉的 IDE 和編譯器,而 UNIX 開發(fā)人員可從一系列 gnu 編譯器和工具(包括 gnu 調(diào)試器和 gdb)中進(jìn)行選擇。
此外,大量的 Open Source 工具和實用工具,或者已經(jīng)移植到 SFU 并且可用(通過 Interop Systems),或者可以移植到 SFU,從而為開發(fā)者提供了理想的環(huán)境和工具。 Microsoft’s partnership with Interop Systems(Microsoft 與 Interop Systems 的合作關(guān)系) (http://www.interopsystems.com) 也為 SFU 環(huán)境提供了新的和已更新的庫和 API。
SFU 包含雙向密碼同步。這種機(jī)制允許用戶從 UNIX 和 Windows 這兩種環(huán)境中的任一環(huán)境更改他們的 UNIX 和 Windows 密碼,大大簡化了從 UNIX 到 Windows 的遷移過程中的互操作。
SFU 支持用于用戶身份驗證和它本身的 UNM 服務(wù)的 NIS,它還提供了 PCNFS 服務(wù)器以支持需要該服務(wù)器的其他應(yīng)用程序。UNM 既可使用它自己的基于 Active Directory 的 NIS,也可使用基于現(xiàn)有的 UNIX 的用于身份驗證的 NIS,還可使用 PCNFS 類型的文件。
將 UNIX 應(yīng)用程序移植到 Red Hat 或其他 Linux 版本之一,或移植到 Windows 環(huán)境,都會涉及到很多問題。這些問題包括用戶帳戶的遷移、應(yīng)用程序本身的遷移和應(yīng)用程序的支持?jǐn)?shù)據(jù)和資源的遷移。
移動您的應(yīng)用程序只是整個解決方案的一部分。您還需要為您的應(yīng)用程序移動用戶團(tuán)體和安全方案。
NIS 能夠跨多種 UNIX 平臺使用,從而提供了單一的網(wǎng)絡(luò)身份驗證和登錄機(jī)制。SFU 支持 NIS 作為 NFS 訪問的身份驗證機(jī)制,并提供了一個完整的 NIS 服務(wù)器,該服務(wù)器允許 UNIX 系統(tǒng)管理員將他們的主 NIS 數(shù)據(jù)庫移動到 Active Directory,以及將他們現(xiàn)有的 UNIX 帳戶遷移到 Windows。Red Hat 和其他 Linux 版本支持 OpenLDAP,但不為完全單個登錄提供這種功能,并且需要執(zhí)行其他一些沒有與其余的 Red Hat 管理集成在一起的管理操作。此外,由于大多數(shù)企業(yè)都有 Windows 用戶,Red Hat 中缺少 Active Directory 支持會使選擇受到限制。
UNIX、Linux 和 Windows 帳戶有著本質(zhì)的不同,它們使用不同的身份驗證機(jī)制。當(dāng)用戶、開發(fā)人員和管理員在遷移過程中需要對 UNIX 和 Windows 服務(wù)器上的資源都進(jìn)行訪問時,此區(qū)別會導(dǎo)致產(chǎn)生一些重大而往往又很微妙的問題。即使小心創(chuàng)建帳戶,使它們擁有相同的登錄名,它們也不相同,因為 UNIX 計算機(jī)上的用戶 jdoe 與 Windows 上的用戶 DOMAIN\jdoe 不 是同一用戶。為了便于過渡和遷移,SFU 包括了 UNM 服務(wù),正如在前面的部分中提到的。UNM 提供了一種可用來將 UNIX 帳戶映射到 Windows 帳戶、將 Windows 帳戶映射到 UNIX 帳戶的機(jī)制,即使在帳戶擁有不同標(biāo)識符的情況下也能夠映射。此項功能大大簡化了從 UNIX 遷移到 Windows 的過渡時期的帳戶維護(hù),允許擁有一組適當(dāng)?shù)膽{據(jù)的用戶進(jìn)行完全訪問。只需要在域中建立和維護(hù)一個單一的 UNM 服務(wù)器,從而簡化了維護(hù)和設(shè)置問題。
與尚未完全遵從 POSIX 標(biāo)準(zhǔn)的 Red Hat 和其他 Linux 分發(fā)不同,SFU 包含一個符合 POSIX.1 標(biāo)準(zhǔn)的子系統(tǒng),此子系統(tǒng)不僅完全支持 POSIX 規(guī)范,還支持其他擴(kuò)展和功能,包括套接字、Berkeley Software Distribution (BSD) 4.4 接口、System V 進(jìn)程間通信 (IPC) 機(jī)制、偽終端和非 POSIX.1 標(biāo)準(zhǔn)的內(nèi)存映射文件。
符合純 POSIX.1 規(guī)范的應(yīng)用程序和那些使用某些條件編譯(#ifdef 預(yù)處理器命令)或包裝功能組合來處理可能的替代規(guī)范的應(yīng)用程序,不需要修改即可移植到 SFU 子系統(tǒng)。將軟件移植到 SFU 子系統(tǒng)涉及以下幾個方面:
? | 使源盡可能地便于移植。如果您編寫的是純 POSIX 應(yīng)用程序,它應(yīng)當(dāng)只需在 Interix 下簡單地進(jìn)行重新編譯即可,但很少有應(yīng)用程序是純 POSIX 應(yīng)用程序。了解您的應(yīng)用程序與 POSIX 不一致的方面,使用提供的遷移指導(dǎo),將有助于您順利進(jìn)行遷移。 |
? | 使用受支持的 POSIX 擴(kuò)展。SFU 不僅支持 POSIX,還支持來自其他標(biāo)準(zhǔn)的通用擴(kuò)展和 API,包括來自傳統(tǒng) UNIX 系統(tǒng)(例如 BSD 或 System V 派生系統(tǒng))的 Single UNIX Specification 和擴(kuò)展。 |
? | 要解決特定于 SFU 的子系統(tǒng)的問題,請參考 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/ucmglp.asp 站點(diǎn)上的 UNIX Application Migration Guide(UNIX 應(yīng)用程序遷移指南)。 |
除嚴(yán)格的 POSIX.1 標(biāo)準(zhǔn)以外,SFU 還支持許多其他擴(kuò)展,包括 XPG4.2 規(guī)范。要充分利用這些擴(kuò)展,您需要先 在您的代碼開頭使用 #define _ALL_SOURCE 1 語句,然后 #include 語句才能包含頭文件。否則,將使用限制性更高的 _POSIX_SOURCE。
Interix SDK 包括以下擴(kuò)展:
? | 內(nèi)存映射文件 |
? | System V IPC 機(jī)制,例如,共享內(nèi)存、消息隊列和信號燈 |
? | Berkeley 樣式套接字 |
? | BSD 字符串和內(nèi)存函數(shù),例如:屬于 Single UNIX Specification 的 bcopy() 和 strncasecmp(),以及 BSD 4.4 的 strsep() 和 strcasestri() |
? | 來自 ncurses 數(shù)據(jù)包和 termcap 例程的 Curses 和終端例程 |
? | 偽終端 — 支持 BSD 和 System V 方法 |
與傳統(tǒng)的 UNIX 相比,某些代碼操作可以給 SFU 的子系統(tǒng)帶來更多的問題。具體說來,在傳統(tǒng)的 UNIX 系統(tǒng)中,撤消對一個未初始化的指針的引用常常被忽視,結(jié)果在 SFU 中會造成分段錯誤。即使忽略此操作引起的是很小的問題,但是因為這個原因,撤消引用也被認(rèn)為是不良代碼編寫方法。所以,對您的應(yīng)用程序來說,這是不可取的。雖然這意味著在最初的移植中需要做一些工作,但這樣會使應(yīng)用程序更健壯。
Windows 中使用的安全系統(tǒng)比傳統(tǒng) UNIX 系統(tǒng)中的安全系統(tǒng)更嚴(yán)格。在 /etc/passwd 和 /etc/group 文件中定義的用戶標(biāo)識符 (UID)/組標(biāo)識符 (GID) 對的概念,被單一安全標(biāo)識符 (SID) 取代了,這一標(biāo)識符包含唯一的域名/登錄名對和域名/組名對,此二者都屬于單獨(dú)一個命名空間。因為沒有 /etc/passwd 或 /etc/group 文件,所以開發(fā)人員需要以不同的方式對待 struct passwd。例如,getpwnam() 和 getgrnam() 調(diào)用接受“域名 + 用戶名”對,而不是僅接受單獨(dú)的用戶名或組名,并且 pw_gecos 是使用 Windows 用戶帳戶的“描述”字段中的文字來填充的。
Interix SDK 包括 X11 庫、頭文件和用于構(gòu)建 X Windows 應(yīng)用程序的各種工具。但是,SFU 不 包括 X Windows 服務(wù)器,這意味著需要在本地工作站顯示的 X Windows 應(yīng)用程序需要安裝 X Windows 服務(wù)器。有許多可用的優(yōu)秀的 X Windows 服務(wù)器產(chǎn)品,包括專門為 Interix 編寫的版本 — 來自 Interop Systems 的 Interop X Server 8.0 for SFU/Interix。
為 X Windows 編寫的大多數(shù)代碼采用 /usr/X11 目錄結(jié)構(gòu),但 Interix 使用版本特定的目錄結(jié)構(gòu),/usr/X11Rn,其中的 n 會被替換為 X11 的發(fā)布級別。處理這一區(qū)別的最好方法是,創(chuàng)建一個指向新目錄的符號鏈接,不需要對應(yīng)用程序的代碼做任何更改。SFU 3.0 只包括 X11R5,但在 Services for UNIX 3.5(2004 年 1 月發(fā)布)中自帶有 X11R6.6;如果應(yīng)用程序需要的 X11 高于 SFU 3.0 原帶的 X11,現(xiàn)在已經(jīng)可以從 Interop Systems Tool Warehouse(網(wǎng)址是 http://www.interopsystems.com/tools/warehouse.htm)下載。
對于使用 curses 的字符模式的應(yīng)用程序,Interix SDK 包括了 curses 的 ncurses 實現(xiàn),它是由 Eric S. Raymond 和 Zeyd M. Ben-Halim 編寫的。SFU 幫助應(yīng)用程序中詳細(xì)論述了這一高兼容性、十分健壯的 curses 實現(xiàn),還提供了有關(guān) curses 應(yīng)用程序的編寫的全部文檔和 ncurses 實現(xiàn)的細(xì)節(jié)。
基于 Intel 的系統(tǒng)現(xiàn)在已達(dá)到商務(wù)應(yīng)用程序要求的性能級別。這一因素和這些系統(tǒng)的低成本,使得公司開始考慮將應(yīng)用程序遷移到基于 Intel 的平臺上。
對于 UNIX 應(yīng)用程序到基于 Intel 的平臺的遷移,雖然 Red Hat 或其他 Linux 版本看起來好像是一個自然的遷移目標(biāo),但這種選擇也需要成本,也會出現(xiàn)問題:
? | 缺乏應(yīng)用程序和管理的集成,增加了開發(fā)和維護(hù) Linux 應(yīng)用程序的總成本 |
? | 沒有用于提供全面支持的單一源 |
? | 雖然有廣泛的硬件支持,但是驅(qū)動程序的質(zhì)量不穩(wěn)定,并且驅(qū)動程序沒有證書或驗證 |
與遷移到 Linux 相比,Microsoft Windows Server 2003 with SFU 提供的工具和環(huán)境只需要做較少的轉(zhuǎn)換工作就可支持本機(jī) UNIX 應(yīng)用程序。此外,通過移植到 Windows Server 2003,在遷移后您有很多機(jī)會來擴(kuò)展您的應(yīng)用程序以利用 Windows Server 2003 環(huán)境中的功能(包括 .NET Framework 和 Microsoft 應(yīng)用程序堆棧)。Microsoft Windows Server 2003 with SFU 是用來承載來自舊式 UNIX 環(huán)境的應(yīng)用程序的理想操作系統(tǒng)平臺。
Windows Server System 作為遷移目標(biāo)平臺,有很多好處,包括以下幾個方面:
? | 集成的解決方案,擁有一致的應(yīng)用程序、服務(wù)器、客戶端和平臺管理 |
? | 通過 MMC 和它的可擴(kuò)展的管理單元結(jié)構(gòu)以及組策略發(fā)布系統(tǒng)來實現(xiàn)的強(qiáng)大的集中管理功能 |
? | 世界上最大的支持服務(wù)組織和團(tuán)體,有大量的測試、開發(fā)、驗證服務(wù)作為后盾,并且為大多數(shù)問題提供統(tǒng)一的故障與解決資源 |
? | 健壯的可擴(kuò)展平臺,擁有高級開發(fā)工具、大量可用的應(yīng)用程序和通過 .NET 結(jié)構(gòu)實現(xiàn) Web 服務(wù)的簡便途徑 |