Linux 助力商业:Linux 与银行业

作者:Josip Almasi

我们是一家小国的小银行。在两年前,我们关于软件的管理政策是内部开发——标准银行软件的价格约为 100 万美元,而我们规模较小,足以处理内部开发。我们的服务器是基于 Intel 的机器,运行 SCO 和 Informix SE。

之后,管理层决定改变我们的业务策略,很快我们开始快速增长。在不到一年的时间里,员工人数翻了一番,PC 的数量也翻了一番。我们的局域网变成了广域网,交易数量增加了五倍,并且还在持续增长。我们无法为所有新需求确保高效的软件解决方案,因此决定购买商业应用程序。我们还购买了两台运行 AIX 的 IBM RS/6000 服务器,连接到高可用性集群中。

一年后,这个决定可能看起来不太明智。我们有自己的软件,处理了我们 70% 的业务,还有一堆应用程序,它们之间通过 shell 脚本、4GL 和 C 程序进行通信,以执行所需的数据转换。但是开发需要时间,而且我们不能在没有至少三个月的广泛测试的情况下使用新的应用程序。

Linux 如何融入

越来越多的用户需要访问互联网,我们需要一个按需拨号路由器。我们不想要专用硬件。我们希望能够自定义日志,按用户安排访问时间,并为此目的使用现有的 PC。

在使用 WinGate 演示版运行 NT Workstation 一周后,我们放弃了。WinGate 过去每天会死机两到三次。这本身并不是问题,因为它毕竟只是一个演示版,但是每次发生这种情况时,COM 端口都会保持锁定,直到重启后才解除锁定。显然,NT 在进程终止后没有释放已分配的资源。好吧,在我们看来,它不像是一个严肃的操作系统。

Linux 偶然进入了我们的视野。我的一个朋友做了很多宣传,并说服我尝试一下,给了我精确的指导和一个 Slackware 3.2 CD。为什么不呢?如果它有效,那很好;如果它无效,我也没有任何损失。毕竟,我是一位经验丰富的 UNIX 管理员——我可以做到。所以我拿了一台配备 1GB SCSI 硬盘和 16MB 内存的 486,开始玩 Linux。

将 CD 插入驱动器几个小时后,我就有了一个可用的代理,而且我现在还在使用它。它已经工作了一年了。我们对它所做的只是通常的管理工作:添加新用户、内核补丁等等。此外,它还成为了缓存代理和新闻服务器。更具体地说,有 diald、socks5 代理、缓存 DNS、tcpd、作为缓存 HTTP 代理和内部 Web 服务器的 Apache,以及作为本地和 Usenet 新闻组的新闻服务器 inn

我的同事们最初对 Linux 非常怀疑,但在几个月正常运行后开始尊重它。

在最初的体验之后,我对 Linux 非常满意,并开始探索。当我发现 iBCS 模块的用途后,我必须在上面运行 SCO 版本的 Informix。所以,我复制了 Informix、我们的数据库和应用程序,进行了测试,结果再次一次成功。我甚至发现 Linux 比 SCO 更好用作开发平台——它不需要额外的内核参数调整即可运行复杂的数据库查询,它运行速度更快、更稳定,并且拥有更好的开发工具。

好吧,将 Linux 与过时的产品 (SCO 4.2) 进行比较不太公平,但我测试了对数百万条记录的并发查询和更新,在工作中途关闭了机器,杀死了 kswapd 等系统进程,测试了断电行为,甚至在工作机器上拔掉了 IDE 硬盘线。虽然我遇到了数据库损坏,但我没有产生无法恢复的文件系统错误。当 fsck 失败时,fsdebug 可以工作。记录在案的是,我们在 SCO 上遇到过无法恢复的文件系统错误。结果是我们现在使用 Linux 作为我们的开发平台。

对于 Windows 用户来说,切换到 Linux 可能不容易,但我们习惯于在 UNIX 环境中工作。我们在一台 PC 上设置了 Linux 作为开发和测试目的的服务器,并在三位开发人员的 PC 上代替 Windows。我们主要将 Windows 用作几个终端会话和打印机共享的任务切换器。我们使用它的唯一原因是它预装在每台 PC 上。Linux 为我们提供了更多的可能性:我们在每台 PC 上都有本地开发环境,配备了 Emacs、ddd 和其他优秀工具等良好的开发工具。由于我们习惯于使用 GNU 工具,我们在 AIX 和 SCO 上都安装了它们。从用户的角度来看,我们的 AIX 现在看起来更像 Linux。

很难相信,当你过去为一个好的开发环境支付数千美元时,现在可以免费获得一个,但这是真的。

当我们的用户想要通过 WAN 共享 Windows 文件时,我们甚至没有考虑 NT Server,因为 Linux 已经证明了它的可靠性。因此,我们安装了 Samba 作为 WINS 服务器。我们没有在 AIX 服务器上设置它,因为它们处理我们的关键应用程序,我们只是不想在它们上面进行实验。今天,我们也使用 Linux/Samba 进行打印机共享,因为它使我们的 UNIX 系统可以访问 Windows 打印服务器,而 Windows 工作站可以访问 UNIX 打印机。基本上,当用户想要从 UNIX 打印某些内容时,他可以打印到系统机房的点阵打印机或激光打印机,或者打印到他房间里的打印机,该打印机可能连接到他的 PC 或 Windows 共享。当他选择本地打印机时,相应的 Windows 打印队列由他的 IP 地址确定。

当我们意识到 Samba 的可能性时,我们想要实施集中备份,基于以下想法:所有用户都在 Linux 机器上拥有自己的帐户,他们的 Windows 机器在启动时挂载他们的主目录,并且他们所有的文档都保存在 Linux 上。我们的大多数用户甚至不知道他们的文件在哪里;他们只需单击图标并使用应用程序,因此我们可以更改每台 PC 上 Windows 应用程序的工作目录。

这项政策还有一些其他的安全考虑因素。首先,只有登录用户才能读取文档。其次,我们从国家银行和其他政府组织收到一些 Microsoft Office 文件。有一次我们甚至收到了一个宏病毒——它只损坏了用户的本地磁盘,但用户丢失了一些重要的文件。在此之前,我们并没有担心病毒,因为它们通常来自破解版游戏,但现在它们可能会来自业务数据。这样,我们还可以进行定期病毒扫描,并且文件权限的设置方式是用户只能写入自己的主目录,因此潜在的病毒无法传播开来。但是我们还没有完全实施这一点,因为我们必须更改每台 PC 的网络设置以挂载 Linux 驱动器并将所有文件移动到其中。我们还遇到了问题,即强制我们的用户使用他们的 Linux 用户名和密码登录 Windows,并向他们解释如何在每次 Linux 密码过期时更改 Windows 密码。

有一天,我们收到一个请求,允许从远程位置访问一个旧的 Clipper 应用程序。如果我们只是将其安装在远程 PC 上并将网络驱动器映射到我们的机器,那么 Clipper 数据库将通过调制解调器线路传输,因此我们将不得不增加带宽。更重要的是,我们将面临数据库损坏的风险,病毒也是如此,因为我们无法物理控制远程位置。Linux 再次发挥了作用;我们安装了 DOS 模拟器。出现了一些较小的问题。Clipper 从不空闲,因此 DOSEmu 占用了所有可用的 CPU 时间。由于我们只有几个 Clipper 用户,我们只是给了 DOSEmu 较低的优先级。这样,只有屏幕在网络上传输,并且通过 ttysnoop,我们可以准确地看到用户在做什么。此外,当 Windows 死机时,不会发生数据库损坏——Linux 不会死机。

Linux 使我们的生活变得更加轻松,尤其是在那个星期一的早上,当我们的 SCO 服务器上的硬盘无法启动时。我们的备份服务器上没有最新的数据库,因为前一个周末整个银行都搬到了新的地点。备份服务器先搬走了,所以没有隔夜数据库复制。我们有磁带备份,但需要至少一个半小时才能恢复它。我们有 Informix 日志文件,这至少需要相同的时间来前滚数据库。幸运的是,我们的开发服务器上有最新的数据库;不幸的是,通过网络复制大约需要一个小时。我们的客户正在等待,所以我们选择在 Linux 上运行银行一天。该服务器实际上不是服务器,而是一台配备 P133、16MB 内存和 IDE 硬盘的 PC,因此有很多交换,但大多数用户没有注意到任何差异。

如今,Linux 为我们做得很好,GNU 程序也是如此。我们的所有开发工作都在 Linux 上完成。C 程序随后使用 GNU C 编译器在 SCO 或 AIX 上重新编译;4GL 程序只需复制到正确的位置即可。Bash 成为我们在 AIX 和 SCO 上的标准 shell。CVS 负责版本控制。与远程位置的通信也由 Linux 处理,打印机假脱机也是如此。通过代理、内部 Web 和新闻,Linux 在我们的工作中发挥了重要作用。无论如何,它尚未准备好用作我们用途的数据库和应用程序服务器,因为它仍然缺少一些在我们的关键任务应用程序中所需的功能:高可用性集群软件和日志文件系统。我们无法承担任何数据丢失的风险,这就是我们为某些应用程序选择 AIX 的主要原因。

在今年年底,我们计划将我们的数据库、应用程序和开发完全迁移到 AIX,因此我们将停止使用 SCO,但 Linux 将保留。它运行良好,并大大提高了我们的安全性和管理水平。

Josip Almasi (jalmasi@partner-banka.tel.hr) 从事数据库设计/编程已有十年,从事 Novell 和 UNIX 系统管理已有五年。他目前在克罗地亚的 Partner Bank 担任数据库/系统管理员。他的爱好是合气道和布鲁斯口琴。

加载 Disqus 评论