3.2. 如何迁移

In order to guarantee continuity of the services, each computer migration must be planned and executed according to the plan. This principle applies whatever operating system is used.

3.2.1. 流行度调查和身份识别服务

如你看到的,该步骤是必要的。一个严谨的管理员应当确切的知道每部服务器的确切角色,但是角色可以被改变,有时候有经验的用户会安装一些服务。了解这些服务的功能让你知道如何处理它,而不是粗暴的删除它们。

For this purpose, it is wise to inform your users of the project before migrating the server. To involve them in the project, it may be useful to install the most common free software programs on their desktops prior to migration, which they will come across again after the migration to Debian; LibreOffice and the Mozilla suite are the best examples here.

3.2.1.1. 网络与程序

nmap 工具 (在同名软件包中) 可以在未登录的前提下,快速地探测一台线上机器上运行着哪些互联网服务。只需在连接到同一网络的另一台计算机上调用以下命令:

  1. $

替代 使用 netstat 以查找可用服务列表

在 Linux 机器里,netstat -tupan 指令可显示活动中或传输中的 TCP 会话,以及运行中程序监听的 UDP 端口。这有助于识别机器上提供的服务。

更进一步 IPv6

有些网络指令可在 IPv4 (通常是缺省的) 或 IPv6 运行。包括 nmapnetstat 指令;但是也有不同的命令,如 routeip,需要使用 -6 参数启动它们。

Unix 机器的服务器提供 shell 帐号给用户,在拥有者缺席的情况下可以决定该进程是否在后台运行。指令 ps auxw 显示所有进程并包括他们的用户ID。将此等信息与 who 指令的输出的 已登陆用户 对比,就能辨识出在后台运行的流氓程序、未声明的服务或程序。使用 crontabs (依用户自动排串行出所有的作业) 可查看服务器提供的服务信息 (cron 的完整说明在 第 9.7 节 “使用 cronatd运行计划任务”)。

任何状况下,都该先备份您的服务器:当在迁移后用户报告特定问题时,该备份可以用来恢复一些信息。

3.2.2. 备份配置

保留所有已知服务的配置以便在更新后的服务器上安装同等的服务。最低限度是制作配置文件的副本。

Unix 机器的配置档,通常在 /etc/ 文件夹内,有时放在 /usr/local/ 的子文件夹里。比如源码安装的程序,配置档就会放在前述的子文件夹内,有时候也被放在 /opt/

在数据管理服务 (如数据库) 时,强烈建议以标准格式导出数据,更容易被新软件导入。通常是被组织的文本格式,比如一个从SQL数据库 dump 出的文件,或者一个从LDAP服务器导出的 LDIF 格式文件。

备份数据库

图 3.2. 备份数据库

每个服务器都不一样,这里无法详述所有个案。比较新旧软件的文档辨认可导出 (因此可以重新导入) 的部分以及需要人工处理的部分。此书阐述 Linux 服务器主要程序的配置。

3.2.3. 接手现有的 Debian 服务器

先分析正在运行 Debian 的机器,才能有效地接管维护工作。

第一个查看的文件是 /etc/debian_version,通常包括 Debian 系统的版本编号 (它是 base-files 软件包的一部分)。若以 *代码*/sid 方式呈现,表示此系统从该代码版本取得的最新版软件包 (测试版或不稳定版)。

apt-show-versions 程序 (来自 Debian 同名软件包) 检查已安装软件包的列表并标识可用的版本。aptitude 程序可以做到同样的工作,但是不是特别系统化。

查看 /etc/apt/sources.list 文件 (以及 /etc/apt/sources.list.d/ 文件夹) 可看到已安装 Debian 软件包的来源。若出现不明来源,管理员可能选择重新安装电脑系统确保其软件与 Debian 兼容。

The sources.list file is often a good indicator: the majority of administrators keep, at least in comments, the list of APT sources that were previously used. But you should not forget that sources used in the past might have been deleted, and that some random packages grabbed on the Internet might have been manually installed (with the help of the dpkg command). In this case, the machine is misleading in its appearance of being a “standard” Debian system. This is why you should pay attention to any indication that will give away the presence of external packages (appearance of deb files in unusual directories, package version numbers with a special suffix indicating that it originated from outside the Debian project, such as ubuntu or lmde, etc.)

同样的,分析 /usr/local/ 文件夹的内容,其目的是收录编译后与手动安装后的程序。列出以此方式安装的软件清单,指出一个问题,为什么不使用 Debian 对应的软件包。

QUICK LOOK cruft/cruft-ng, debsums and apt-show-versions

The cruft and cruft-ng packages propose to list the available files that are not owned by any package. They have some filters (more or less effective, and more or less up to date) to avoid reporting some legitimate files (files generated by Debian packages, or generated configuration files not managed by dpkg, etc.).

Be careful to not blindly delete everything that cruft and cruft-ng might list!

The debsums package allows to check the MD5 hashsum of each file installed by a package against a reference hashsum and can help to determine, which files might have been altered (see TIP Finding changed files). Be aware that created files (files generated by Debian packages, or generated configuration files not managed by dpkg, etc.) are not subject to this check.

The apt-show-versions package provides a tool to check for installed packages without a package source and can help to determine third party packages (see 第 6.7.3.1 节 “Packages removed from the Debian Archive”).

3.2.4. 安装 Debian

知道当前服务器的必要信息后,就可以关闭它并开始安装 Debian。

依照电脑的架构,选择适当的版本。近几年的 PC,很可能是 amd64 (稍旧的是 i386)。其他的情况,则依照安装的旧系统来判断。

表 3.1 is not intended to be exhaustive, but may be helpful. Note that it lists Debian architectures which are no longer supported in the current stable release. In any case, the original documentation for the computer is the most reliable source to find this information.

表 3.1. 操作系统与架构对照表

操作系统架构
DEC Unix (OSF/1)alpha, mipsel
HP Unixia64、hppa
IBM AIXpowerpc
Irixmips
OS Xamd64、powerpc、 i386
z/OS、MVSs390x、s390
Solaris、 SunOSsparc, i386, m68k
Ultrixmips
VMSalpha
Windows 95/98/MEi386
Windows NT/2000i386, alpha, ia64, mipsel
Windows XP / Windows Server 2008i386, amd64, ia64
Windows RTarmel, armhf, arm64
Windows Vista / Windows 7-8-10i386, amd64

硬件 64 位电脑 vs 32 位电脑

近年的电脑使用 64 位 Intel 或 AMD 处理器,兼容于稍旧的 32 位处理器;为 “i386” 架构编绎的软件也适用。从另个角度来看,此兼容的软件无法充分发挥新处理器的性能。所以 Debian 提供 “amd64” 架构的版本,针对最新的 AMD 芯片以及 Intel “em64t” 处理器 (包括大多数的 Core 系列),它们极度类似 AMD64。

3.2.5. 安装与配置选定的服务

Once Debian is installed, we need to individually install and configure each of the services that this computer must host. The new configuration must take into consideration the prior one in order to ensure a smooth transition. All the information collected in the first two steps will be useful to successfully complete this part.

安装指定的服务

图 3.3. 安装指定的服务

全面进入此练习前,强烈建议您阅读本书其他部分。才能够较精准地了解对预期服务的配置方式。