Product SiteDocumentation Site

3.2. 如何迁移

为了业务连续性,每台计算机的迁移都应该事先规划、按计划实施。每种操作系统都要遵守这个原则。

3.2.1. 调查和识别所有服务

这是必要的步骤。严谨的管理员本来清楚每部服务器的确切角色,但是,服务器的角色也会变化,而且有时还会有用户安装额外的服务。你至少要知道这些情况和新服务的存在,而不是简单粗暴地删除。
因此,迁移服务器前先告知用户是明智之举。为了让用户参与,你可以在迁移前先为他们安装最常见的自由软件(例如 LibreOffice 、Mozilla 套件),在 Debian 中也会有这些软件。

3.2.1.1. 网络与进程

nmap 工具 (在同名软件包中) 可以在未登录的前提下,快速地探测一台线上机器上运行着哪些互联网服务。只需在连接到同一网络的另一台计算机上调用以下命令:
$ nmap mirwiz
Starting Nmap 7.80 ( https://nmap.org ) at 2021-04-29 14:41 CEST
Nmap scan report for mirwiz (192.168.1.104)
Host is up (0.00062s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
5666/tcp open  nrpe
9999/tcp open  abyss

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
如果服务器向用户提供 shell 帐号的 Unix 系统,就还需要搞清楚用户是否在登出之后继续执行后台进程。ps auxw 指令可以显示所有进程及其所属用户的列表。再对比 whow 命令输出的登录用户名单,就可以找到在后台运行的流氓程序、未声明的服务或程序。使用 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 兼容。
sources.list 文件是个重要的指征:大部分的管理者会保留上一份使用的 APT 来源清单。但是,过去使用的源可能已被删除,而且也有可能有部分软件包是从别处获取、手动安装的(通过 dpkg 命令)。在此情况下,本机可能表面上是 “标准” Debian 系统,实则不然。这就是你应当关注这些外来软件包的原因,它们会在之后被丢弃。外来软件包可能表现为在不寻常的文件夹出现 deb 文件,以及软件包版本编号出现 Debian 未使用的特殊前置字符(如 ubuntulmde )。
类似的,也要分析 /usr/local/ 目录的内容,这里应当存放手动编译和安装的程序。这里安装的软件列表值得考究,出于某种原因使用者没有选择对应的 Debian 软件包。

3.2.4. 安装 Debian

知道当前服务器的必要信息后,就可以关闭它并开始安装 Debian。
依照电脑的架构,选择适当的版本。近几年的 PC,很可能是 amd64 (稍旧的是 i386)。其他的情况,则依照安装的旧系统来判断。
表 3.1 不是完整的,但相当有用。注意,它列出了当前稳定发布中不再支持的 Debian 架构。任何情况下,电脑的原始文档是最有用的数据源。

表 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

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

Debian 安装之后,我们需要各自安装并配置每台计算机上托管的服务。新的配置必须参考过去的配置才能确保转换的顺利。前述两个步骤的搜集信息对于完成此部分极为重要。
安装指定的服务

图 3.3. 安装指定的服务

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