我不是受过培训的系统管理员,所以我一直在边学边做。请原谅我知识的匮乏。:)
我被要求分析我雇主的一台服务器。它运行的是 CentOS,其主要功能是作为我们组织的各种包管理器(RPM、DEB)的包存储库,但它还有其他功能。问题是,它太旧了,没有人确切知道它是如何配置的……
我们需要将这台服务器移到一台新的物理机器上,因此我被要求弄清楚它是如何配置的,上面运行着什么等等。我知道这是一个相当模糊的定义,而且我肯定会错过一些东西,但我想尽可能彻底地完成工作。
我的问题是,我应该检查哪些方面?如果您对此没有任何先验知识,您将如何复制机器的配置和环境。以下是我能想到的一些:
- 计划任务
- 已安装的软件包
- 运行服务
附言:一旦我能弄清楚这个服务器,我当然会自动化配置所有我能配置的东西,这样这件事就不会发生在我之后的下一个人身上。
答案1
首先,我会尽可能多地获取有关服务器运行状态的信息。
正在运行的进程有哪些?
# ps aux
网络配置是怎样的?
# ip address
# ip route
我们有聆听流程吗?
# netstat -lp
使用了哪些文件?
# lsof
安装的软件包有哪些?
# rpm -qa
也许是一些防火墙规则?
for t in `echo "mangle nat filter raw"`
do
echo ">> $t"
iptables -t $t -nvL
done
在这些有趣的文件夹中,您有:
/etc
,其中保存了大部分系统配置。/home
,一些服务可以使用此文件夹来存储数据。/opt
,第三方应用程序可以安装在那里。/root
,管理员的主文件夹,可以包含有用的脚本。/srv
,服务数据的标准文件夹。/usr/local/{bin,etc,sbin,*}
,可以包含本地安装的文件。/var/log
,可以提供有关系统正在运行的程序的有用信息。
通过这种方式,您应该对服务器的运行有一个初步的了解。
答案2
一个好的开始是使用蓝图对系统进行逆向工程。这将提取包、安装和一些基本配置信息。
此外,由于这是一个 CentOS/Redhat 系统,请查看中的安装文件/root/anaconda-ks.cfg
。这将为您提供一些有关系统初始安装选项的想法。
答案3
您提到的三件事是一个很好的开始。我还会这样做:
rpm -V $(rpm -qa)
查看已安装软件包中发生了哪些变化find /[belmosuv]* | xargs -n1 rpm -q --whatprovides | grep 'not owned'
查找没有使用包管理器安装的文件- 至少备份 /home 和 /root(因此从上面的查找中排除),最好是整个机器,这样你总能找到不可避免地会错过的部分