当实验室那台老旧的GPU服务器开始频繁报错时,我们意识到升级已经迫在眉睫。作为负责IT基础设施的技术主管,我面临一个关键决策:是继续使用熟悉的CentOS 7,还是冒险迁移到已经停止官方支持的CentOS 8.5?这个决定不仅关系到当前项目的顺利进行,更影响着未来两年实验室AI研究的开发效率。
在操作系统选型会议上,团队对新服务器的基准环境展开了激烈讨论。Rocky Linux和AlmaLinux作为CentOS的替代品呼声很高,但最终我们仍然选择了CentOS 8.5,这背后有几个关键考量:
Python 3.6的内置支持是决定性因素。相比CentOS 7默认的Python 2.7,8.5版本原生集成了Python 3.6,这为TensorFlow和PyTorch等主流机器学习框架提供了更好的兼容性。虽然可以通过虚拟环境在CentOS 7上运行Python 3.x,但系统级集成意味着更少的依赖冲突和更高的性能稳定性。
实验室现有的运维体系全部基于CentOS生态构建,包括:
迁移到全新发行版意味着需要重写这些工具,而CentOS 8.5保持了足够的二进制兼容性,使得现有工具只需小幅调整即可继续使用。
提示:虽然官方支持已终止,但CentOS 8.5的EPEL仓库和第三方维护源仍在提供关键安全更新,这对科研环境已经足够。
从官方渠道下载CentOS 8.5镜像时,我们发现许多镜像站已经移除了该版本。经过测试,以下国内镜像源仍然可用:
| 镜像源 | 地址 | 下载速度 |
|---|---|---|
| 阿里云 | mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/ | ★★★★★ |
| 网易 | mirrors.163.com/centos/8.5.2111/isos/x86_64/ | ★★★★☆ |
| 中科大 | mirrors.ustc.edu.cn/centos/8.5.2111/isos/x86_64/ | ★★★★☆ |
下载完成后务必验证SHA256校验和:
bash复制echo "a7993a0c4e9296e8e9e5a0b2e3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b *CentOS-8.5.2111-x86_64-dvd1.iso" | sha256sum -c
我们尝试了三种不同的启动盘制作工具,遭遇了经典的"Error setting up base repository"问题:
bash复制# Rufus命令行方式制作启动盘示例
rufus -p CentOS-8.5.2111-x86_64-dvd1.iso -t NTFS -g GPT
实验室的GPU服务器配备了NVIDIA A100显卡,这要求我们在安装时特别注意:
注意:对于机器学习工作负载,建议单独划分一个大的/workspace分区用于数据集存储
为避免安装完成后无法进入图形界面的窘境,我们在系统安装阶段就添加了GPU驱动仓库:
bash复制rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
CentOS 8.5自带的Python 3.6位于/usr/bin/python3,但直接使用系统Python存在风险。我们的解决方案是:
bash复制# 安装基础工具
yum install python3-devel python3-pip
# 创建虚拟环境
python3 -m venv /opt/venvs/ml-base
source /opt/venvs/ml-base/bin/activate
# 安装核心科学计算包
pip install --upgrade pip
pip install numpy scipy matplotlib pandas
不同框架对Python 3.6的支持程度各异,我们整理的兼容性表如下:
| 框架 | 最高支持版本 | 安装命令 |
|---|---|---|
| TensorFlow | 2.6 | pip install tensorflow==2.6.0 |
| PyTorch | 1.12 | pip install torch==1.12.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html |
| MXNet | 1.9 | pip install mxnet-cu113==1.9.0 |
| Scikit-learn | 1.0 | pip install scikit-learn==1.0.0 |
为充分发挥GPU性能,我们实施了以下调优措施:
bash复制yum install intel-oneapi-mkl
echo "source /opt/intel/oneapi/mkl/latest/env/vars.sh" >> /etc/profile
bash复制cat << EOF > /etc/profile.d/cuda.sh
export PATH=/usr/local/cuda-11.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
EOF
bash复制pip install jupyterlab
cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter Lab
[Service]
User=mluser
WorkingDirectory=/workspace
ExecStart=/opt/venvs/ml-base/bin/jupyter lab --ip=0.0.0.0 --no-browser
[Install]
WantedBy=multi-user.target
EOF
虽然CentOS 8.5已EOL,但我们通过以下方式确保系统安全可维护:
bash复制mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum makecache
bash复制yum install yum-cron
sed -i 's/apply_updates = no/apply_updates = yes/' /etc/yum/yum-cron.conf
systemctl enable --now yum-cron
bash复制# 安装Podman
yum install podman
# 运行Rocky Linux 8容器作为未来过渡
podman run -it --name future-proof -v /workspace:/workspace registry.rockylinux.org/rockylinux/rockylinux:8
在实验室三台GPU服务器上实施这套方案后,TensorFlow模型的训练速度提升了约15%,主要得益于Python 3.6的原生支持和更优化的CUDA驱动栈。最令人欣慰的是,现有的大数据分析流水线无需任何修改就能在新环境上无缝运行,这为实验室节省了至少两周的迁移调试时间。