文章
服务器与存储管理
作者:Jon Senger、Aik Zu Shyong 和 Suzanne Zorn
|
即使在单台服务器上切换底层操作系统也非小事一桩。处理相关的转换和兼容性问题同样如此。想像一下在一家企业遍布全球的数千台服务器上切换操作系统(就像 Dell 刚刚做的那样)所涉及到的问题吧。
|
2010 年 6 月,Dell 公司决定将 1,700 个系统从 SUSE Linux 迁移到 Oracle Linux,同时保持硬件层和应用程序层不变。对此,跨 Linux 平台的标准化发挥了作用,使这一大规模转换成为可能。在这一过程中,只需对大多数与各地使用情况有关的操作系统和应用程序配置进行备份,然后在新的操作系统上直接恢复即可。配置更改的量极小,且大多数可以自动进行,从而减轻了管理员的工作量并且有助于实现可靠、一致的迁移过程。
在此迁移过程开始时,Dell 有大约 1,700 个物理系统运行 SUSE Linux。这些地理上分散于全球各地的系统使用的既有第八代服务器(Dell PowerEdge 2850 和 2950 服务器)也有更新的 Dell 硬件。光纤通道 SAN 存储包括 EMC Symmetrix 和 CLARiiON 设备。软件环境包括带多路径 I/O (MPIO) 的 SUSE Linux 10 Service Pack 1、Oracle Database 10g 第 2 版、Oracle Real Application Clusters (Oracle RAC) 和 Oracle 自动存储管理,如图 1 所示。

图 1. 迁移到 Oracle Linux 之前和之后的 Dell 部署环境
迁移主要涉及将操作系统从 SUSE Linux 10 迁移到 Oracle Linux 5.5。在迁移过程中保留原先的物理服务器和存储硬件。同样,Oracle 软件在迁移之后保持不变。Dell 的另一个变化是从 SUSE Linux 的内置多路径 I/O 支持转换到 EMC PowerPath 以便自动进行数据路径管理。(注意:从 MPIO 到 PowerPath 的实际转换与操作系统迁移基本无关,因而不在本文讨论范围之内。)
此迁移过程同时也让 Dell 借机重新评估其运行 SUSE Linux 的服务器,以确定是否可停用这些服务器上运行的应用程序或将其部署在现有 MegaGrid 环境上。Dell 对于其 MegaGrid 部署使用 16 节点机架,每个机架可容纳 300 个数据库。有些情况下,现有 MegaGrid 基础架构上有足够的容量,因而能够将应用程序和数据库迁移到该网格,并关闭和停用 SUSE Linux 服务器。这样的整合节省了电力和冷却消耗、减小了空间占用。在整合不可行的其他情况下,使用本文描述的过程将 SUSE Linux 系统迁移到了 Oracle Linux。
鉴于迁移规模庞大,计划和自动化对于项目的成功至关重要。Dell 核心设计小组的 Aik Zu Shyong 回忆:“我们将重心放在对操作系统转换的设计上,这样确保我们可以提供简单、可靠、可重复的自动化过程。此外,通过设计采用就地完成迁移的方法,而不是采用慢得多且成本高昂的替代方法,我们成功地进一步缩短了停机时间并节省了数据中心空间。”
Dell 的迁移过程主要包括三个步骤:准备、操作系统重映像和安装后配置。首先,在准备步骤中,Dell 保存了现有环境的配置并安全地关闭了应用程序和数据库。然后,他们将操作系统从 SUSE Linux 10 重映像到 Oracle Linux 5.5。重映像完成之后,他们使用安装后步骤对新的环境进行了配置并恢复了先前的数据。
Dell 通过执行以下安装前步骤做好从 SUSE Linux 迁移到 Oracle Linux 的准备。
ORACLE_HOME 目录。他们保留了足够的空间来容纳此目录以及需要备份的各种系统配置文件。init.d 进程。Dell 按照 Oracle 建议的关闭顺序停止了 Oracle Database、Oracle 自动存储管理、集群节点上运行的应用程序以及 Cluster Ready Services (CRS)。并且使用 chkconfig 命令禁用了正在运行的服务: # chkconfig service_name off
lsof 命令列出任何打开的文件并确保所有 NFS 挂载均未使用。他们还确认 ORACLE_HOME 目录不存在资源使用情况。# lsof
| 存档步骤 | 说明 |
|---|---|
| 硬件信息 | 使用 Dell OpenManage Server Administrator (OMSA) 或原生 Linux 命令对硬件信息进行存档;保存到文件(如 hardware.txt) |
| 网卡信息 | 存档 IP 地址、子网和网关信息、MAC 地址、链路速度/双工信息以及网络绑定配置;保存到文件(如 network.txt) |
| 内存信息 | (可选)对内存使用记录进行存档;如果需要,使用最多一周的快照以证明性能等同或更好;保存到文件(如 memory.txt) |
操作系统 *-release 文件 | /etc/SuSE-release |
| 内核模块信息 | /lib/modules/*、/etc/{modprobe.conf、modprobe.conf.local、modprobe.d/*} |
身份验证 (PAM)、用户和组,以及 nsswitch.conf | /etc/pam.d/*、/etc/nsswitch.conf、/etc/passwd、/etc/shadow、/etc/group、/etc/sudoers、/etc/security/* |
设备管理器 (udev) 规则 | /etc/udev/udev.conf、/etc/udev/rules.d/* |
| 自动挂载文件系统信息 | /etc/auto.*(可选;仅当使用自动挂载时需要) |
| 引导加载程序配置文件 | /boot/grub/*、/etc/grub.conf、/etc/sysconfig/bootloader |
/var/log/messages 文件 | /var/log/{boot.msg、boot.omsg、localmessages、messages} |
| 运行级别配置 | /etc/inittab、/etc/init.d/boot.local |
rclocal 脚本 | /etc/rc.d/rclocal |
| Cron 作业配置 | /etc/cron/{daily、hourly、monthly}/*、/var/spool/cron/tabs/* |
| MPIO 配置 | /etc/multipath.conf |
| 网络配置(NIC、路由等) | /etc/sysconfig/network/ifcfg-*、/etc/sysconfig/network/*、/etc/resolv.conf |
| NTP 配置 | /etc/ntp.conf |
| NFS 配置 | /etc/exports、/etc/fstab |
| 名称服务配置 | /etc/nscd.conf |
| 主机配置 | /etc/{hosts、host.conf、hosts.allow、hosts.deny、HOSTNAME} |
系统配置 (sysconfig) | /etc/sysconfig/*(包括所有子目录)、/etc/sys/*(包括所有子目录) |
/proc/info 文件 | /proc/*(包括所有子目录) |
| SSH 配置 | /etc/ssh/*、/etc/sshd.config、/etc/pam.d/ssh |
| SAR 数据文件 | /var/log/sa/sa* |
| Apache 配置文件 | 可选(仅当运行 Apache 时需要);/etc/httpd* |
| FTP | 可选;(仅当运行 FTP 服务时需要) |
| CIFS | 可选;(仅当运行 CIFS 服务时需要) |
| Shell/配置文件信息 | /etc/{bash.bashrc、csh.cshrc、csh.login、ksh.kshrc}、/etc/profile、/etc/profile.d/* |
| 登录前消息 | /etc/issue |
/etc/default 目录文件 | /etc/default/* |
| PowerPath 许可和配置文件 | /etc/emcp* |
| 其他软件/应用程序 | 备份任何第三方非 Oracle 软件应用程序 |
| 存档步骤 | 说明 |
|---|---|
oracle 和 svcgrid 用户的配置文件 | oracle 和 svcgrid 用户的 .profile 文件(注意:Oracle Linux 文件命名为 .bash_profile) |
| LUN 映射信息 | /u02(此目录包含 SUSE Linux 环境中 LUN 映射的符号链接) |
Oracle Inventory Pointer (oraInst.loc) 和 oratab 文件 | /etc/oraInst.loc、/etc/oratab |
Oracle 清单文件 (oraInventory) | /etc/oracle/oraInventory |
| OCR 文件 | /etc/oracle/ocr.loc |
oracle 用户的 SSH 可信密钥 | ~oracle/.ssh/* |
| 数据库特定的内核设置 | /etc/sysctl.conf |
oracle 用户的主目录 | 因地制宜;Dell 配置使用 /home/oracle |
Oracle 软件的主目录 (ORACLE_BASE) | 因地制宜;Dell 配置使用 /u01/app/oracle |
tar 实用程序创建保存的配置文件的备份映像。
保存配置信息并将所有基本服务转移到备份服务器之后,系统就做好准备可以安装新的 Oracle Linux 操作系统了。Dell 使用 kickstart 安装方法自动执行跨网络的 Oracle Linux 5.5 操作系统安装。使用 kickstart 方法有助于确保在客户端系统上进行快速、高效、一致的操作系统安装。
Dell 使用了标准 kickstart 配置和安装,并且使用网络上的一台中央 kickstart 服务器以便进行安装。他们将 Oracle Linux 5.5 的 ISO 映像复制到 Dell 区域映像服务器并且让这些映像可通过网络来访问。他们创建了一个 kickstart 配置文件,其中指定了 kickstart 选项和要安装的程序包。客户端计算机使用 USB 闪存驱动器进行引导,并下载该 kickstart 配置文件。安装是自动进行的,无需用户干预就完成了。
注意:确保安装过程不会擦除用于存储存档系统信息的备份磁盘。Dell 的 kickstart 过程具体来说只使用了 /dev/sda 磁盘,而保留 /dev/sdb 用于安全地存档备份信息。
以下关键步骤是 Dell 迁移到 Oracle Linux 的安装后过程的一部分:
grub.conf 文件不同,所以不能直接复制对应的 SUSE Linux 文件。而是在新的 Oracle Linux /boot/grub/grub.conf 配置文件中为首选 ioscheduler 添加一个条目,例如:
kernel KERNEL_PARAMETERS elevator=deadline
/etc/passwd 和 /etc/shadow 文件中的加密口令信息。而是手动恢复了几个本地用户帐户(如 oracle 用户)的口令。ssh 的主机密钥。安装新的 Oracle Linux 操作系统后,ssh 后台程序返回的主机密钥已改变。因此为集群中的主机重新生成了 ssh 客户端访问所需的新的 known_hosts 密钥文件。注意:尽管 Dell 选择生成了新的客户端密钥,但也可能从备份恢复旧的主机密钥。
ifcfg-bondN 配置文件直接加载绑定内核模块。与之不同的是,Oracle Linux 使用 /etc/modprobe.conf 文件加载绑定内核模块及其选项。因此,在新的 Oracle Linux /etc/modprobe.conf 文件中添加了条目以加载绑定内核模块并设置选项,例如:
alias bond0 bonding
options bond0 mode=active-backup miimon=100 downdelay=100 updelay=200
SUSE Linux 和 Oracle Linux 都将网络设备信息存储在 ifcfg-bondN 和 ethN 文件中。但 SUSE Linux 将这些文件存储在 /etc/sysconfig/network 目录中,而 Oracle Linux 使用 /etc/sysconfig/network-scripts 目录。表 3 显示先前的 SUSE Linux 环境和新的 Oracle Linux 环境的示例 ifcfg-bondN 文件。
ifcfg-bondN 文件 | SUSE Linux | Oracle Linux |
|---|---|
/etc/sysconfig/network/ifcfg-bond1 | /etc/sysconfig/network-scripts/ifcfg-bond0 |
DEVICE=bond1
BOOTPROTO='static'
BROADCAST='192.168.255.255'
IPADDR='192.168.0.190'
NETMASK='255.255.0.0'
NETWORK='192.168.0.0'
REMOTE_IPADDR=''
MTU=''
STARTMODE='onboot'
BONDING_MASTER='yes'
BONDING_SLAVE_0='eth2'
BONDING_SLAVE_1='eth3'
BONDING_MODULE_OPTS='mode=active-backup
miimon=100 downdelay=100 updelay=200'
|
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR='192.168.0.190'
NETMASK=255.255.0.0
NETWORK=192.168.0.0
USERCTL=no
|
表 4 显示先前的 SUSE Linux 环境和新的 Oracle Linux 环境的示例 ifcfg-eth2 文件。
ifcfg-eth2 文件 | SUSE Linux | Oracle Linux |
|---|---|
/etc/sysconfig/network/ifcfg-eth2 | /etc/sysconfig/network-scripts/ifcfg-eth2 |
DEVICE=eth2
STARTMODE='onboot'
BOOTPROTO='none'
MASTER='bond1'
SLAVE='yes'
|
DEVICE=eth2
HWADDR=00:15:17:97:CD:4E
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
|
有关如何在 Oracle Linux 系统上配置网络绑定的更多完整详细信息,请参考 Oracle Linux 系统管理文档。
inittab 文件中的 Oracle 启动脚本是两个例外。
.profile 文件,而 Oracle Linux 使用 .bash_profile 文件。因此,他们将 oracle 和 svcgrid 用户的 .profile 文件复制到新 Oracle Linux 环境中的 .bash_profile 文件。 inittab 文件。这两个操作系统的 inittab 文件不同。因此,他们将 Oracle 软件的三个启动脚本的条目复制到新的 inittab 文件,而不是直接整个复制 inittab 文件。 原始 SUSE Linux inittab 文件中相关的三行,即 Event Manager 后台程序 (evmd)、Oracle Cluster Services Synchronization 后台程序 (cssd) 和 Cluster Ready Services 后台程序 (crsd) 的条目,从存档文件复制出来并添加到新的 Oracle Linux inittab 文件的末尾,例如:
注意:作为最佳实践,在安装新操作系统后可能需要重新链接 Oracle 产品可执行文件。有关详细信息,请参考 My Oracle Support 上的 How to Relink Oracle Software on Unix [ID 131321.1](需要有效客户支持标识 [CSI] 才可查看)。
将 1,700 台服务器从 SUSE Linux 迁移到 Oracle Linux 是一项雄心勃勃的 IT 决策,也是一项必需的决策。Dell 认为,为了获得更好的稳定性和支持、更轻松的管理和更低的成本,他们必需进行这样的决策。Dell 之所以能够在提取并更换底层操作系统层的同时保持应用程序层不变,这完全要归功于跨 Linux 平台的标准化。只需对大多数与各地使用情况有关的操作系统配置进行备份,然后在新的操作系统上直接恢复即可。类似地,Oracle Database 和其他应用程序只需少量配置更改即可从 SUSE Linux 迁移到 Oracle Linux。
在 2011 年 12 月撰写本文时,Dell 大约完成了一半的迁移过程,预计完成日期为 2012 年 6 月。他们在开始迁移之前进行了周密的计划,逐项明确了所需的与各地使用情况有关的配置文件并找出了需要转换的文件,这是 Dell 取得成功的关键。他们通过脚本和 kickstart 安装实现自动化,并且在实际转换过程中通过检查清单注意细节,从而降低了风险并保障了迁移过程中的一致性。
Dell 确信将这些服务器从 SUSE Linux 迁移到 Oracle Linux 的决策是一项有利于其业务的正确决策。Dell 企业架构师 Jon Senger 说,“我们进行一项这么大规模的、具有如此挑战性基础架构的迁移,确实有风险,但非常值得。我们不仅降低了环境 TCO,而且由于我们已经能够在 Oracle Linux 上进行标准化,我们实现了客户所要求的稳定性和支持。”
以下是可用于 Oracle Linux 的资源:
下载 Oracle Linux:
关注 Oracle Linux: