1. Linux系统环境部署概述
作为一个在Linux环境下摸爬滚打多年的老运维,我深知系统环境部署这个看似基础的工作里藏着多少门道。每次新服务器上线,从裸机到生产环境的距离,往往决定了后续运维的难易程度。今天我就把自己这些年积累的Linux环境部署经验做个系统梳理,特别是那些容易踩坑的细节和高效部署的技巧。
Linux系统环境部署的核心目标很简单:在裸机或虚拟机上搭建一个稳定、安全、高效的操作系统基础环境,为后续应用部署做好准备。但实际操作中,我们需要考虑硬件兼容性、系统选型、分区规划、安全加固、性能调优等一系列问题。一个合理的初始部署,能为后续运维工作减少至少30%的麻烦。
2. 系统安装前的准备工作
2.1 硬件兼容性检查
在开始安装前,硬件兼容性检查是很多人容易忽略的关键步骤。我曾经遇到过一台戴尔PowerEdge服务器因为RAID卡驱动问题导致安装失败,浪费了大半天时间。现在我的检查清单里一定会包含:
- 服务器型号与Linux发行版的兼容性列表比对
- 特殊硬件(如RAID卡、GPU、网卡)的驱动支持情况
- 内存和CPU的兼容性(特别是ARM架构服务器)
- 存储设备的接口类型和性能参数
提示:对于企业级服务器,建议提前在厂商官网下载好所有必要的驱动固件,存放到U盘或网络存储备用。
2.2 系统镜像选择
选择系统镜像时需要考虑几个关键因素:
-
发行版选择 :
- 生产环境推荐CentOS/RHEL或Ubuntu LTS
- 开发环境可以考虑Fedora或Debian testing
- 特殊需求(如实时性)可选RHEL for Real Time
-
镜像类型 :
- 最小化安装镜像(Minimal ISO)
- 网络安装镜像(NetInstall)
- 完整DVD镜像
-
架构选择 :
- x86_64(大多数场景)
- ARM64(树莓派或特定服务器)
- ppc64le(IBM Power架构)
我个人的经验是,生产服务器尽量使用最小化安装,减少不必要的软件包,降低安全风险。例如CentOS的Minimal ISO只有600MB左右,但包含了所有基础组件。
2.3 安装介质准备
制作安装介质有几种常见方式:
-
USB闪存盘 :
# 使用dd命令制作启动盘 dd if=CentOS-7-x86_64-Minimal-2009.iso of=/dev/sdb bs=4M status=progress -
网络启动(PXE) :
- 需要配置DHCP和TFTP服务器
- 适合批量部署场景
-
虚拟介质 :
- 虚拟机直接挂载ISO文件
- 物理服务器可通过iDRAC/iLO挂载
注意:使用dd命令时务必确认目标设备(of参数),错误的设备选择可能导致数据丢失。
3. 系统安装过程详解
3.1 分区方案设计
合理的分区方案对系统稳定性和性能至关重要。以下是我的常用分区方案(以1TB硬盘为例):
| 挂载点 | 大小 | 文件系统 | 备注 |
|---|---|---|---|
| /boot | 1G | ext4 | 引导分区 |
| / | 50G | xfs | 根分区 |
| /var | 100G | xfs | 日志和临时文件 |
| /home | 100G | xfs | 用户数据 |
| swap | 32G | swap | 一般为内存的1-1.5倍 |
| 剩余空间 | - | - | 留给LVM或特定用途 |
对于数据库服务器,我会单独划分/data分区;对于高IOPS需求的系统,可能会考虑将/var/log放在单独的SSD上。
3.2 关键安装配置
安装过程中有几个关键配置点需要特别注意:
-
时区设置 :
- 生产环境统一使用UTC时区
- 通过timedatectl命令后期可以调整
-
网络配置 :
- 静态IP vs DHCP
- 主机名命名规范(如dc1-web-01)
-
安全策略 :
- 禁用root远程登录
- 强制使用SSH密钥认证
- 启用SELinux(对于RHEL系)
-
软件包选择 :
- 最小化安装+按需添加
- 常见基础包:vim, wget, curl, net-tools, lsof
3.3 首次启动后的检查清单
系统安装完成后,我会执行以下检查:
-
内核版本和系统信息:
uname -a cat /etc/os-release -
磁盘分区和挂载情况:
lsblk -f df -hT -
网络配置:
ip a route -n ping -c 4 8.8.8.8 -
系统服务状态:
systemctl list-units --type=service --state=running
4. 基础环境配置与优化
4.1 系统更新与基础工具
首次启动后立即执行系统更新:
# RHEL/CentOS
yum update -y && yum install -y epel-release
# Ubuntu/Debian
apt update && apt upgrade -y
安装常用工具包:
# 基础工具
yum install -y vim-enhanced git htop iotop iftop ncdu jq
# 开发工具
yum groupinstall -y "Development Tools"
4.2 安全加固措施
-
SSH安全配置 :
# 修改/etc/ssh/sshd_config Port 2222 # 修改默认端口 PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 -
防火墙配置 :
# CentOS 7 systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --reload -
用户权限管理 :
# 创建管理员用户 useradd -m -G wheel sysadmin passwd sysadmin # 配置sudo权限 visudo # 取消wheel组的注释 # %wheel ALL=(ALL) ALL
4.3 性能调优
-
内核参数优化 :
# 编辑/etc/sysctl.conf net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65000 vm.swappiness = 10 -
文件系统优化 :
# 对于xfs文件系统 mkfs.xfs -f -i size=512 /dev/sdb1 mount -o noatime,nodiratime,logbsize=256k /dev/sdb1 /data -
服务优化 :
# 禁用不必要的服务 systemctl disable postfix systemctl mask avahi-daemon
5. 常见问题与解决方案
5.1 安装阶段问题
问题1 :安装过程中无法识别硬盘
- 可能原因:缺少RAID卡或NVMe驱动
-
解决方案:
-
在启动菜单添加内核参数
nodmraid - 使用厂商提供的驱动镜像
-
在启动菜单添加内核参数
问题2 :安装后无法启动
- 可能原因:UEFI/BIOS模式不匹配
-
解决方案:
- 检查启动模式一致性
-
修复GRUB:
grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg
5.2 网络配置问题
问题 :系统启动后网络不通
排查步骤:
- 检查物理连接
-
确认网卡驱动加载:
lspci -k | grep -A 3 -i ethernet - 检查NetworkManager服务状态
- 验证路由和DNS配置
5.3 性能问题
问题 :系统响应缓慢
诊断命令:
# CPU负载
top -c
# 内存使用
free -h
# IO等待
iostat -x 1
# 网络流量
iftop -n
优化方向:
- 调整swappiness值
- 优化IO调度器
- 限制资源占用高的进程
6. 自动化部署方案
6.1 Kickstart无人值守安装
对于大规模部署,推荐使用Kickstart自动化安装。以下是关键步骤:
-
生成Kickstart模板:
system-config-kickstart -
示例Kickstart文件片段:
# 基本配置 lang en_US keyboard us timezone UTC rootpw --plaintext mypassword # 分区方案 clearpart --all --initlabel part /boot --fstype=ext4 --size=1024 part swap --size=16384 part / --fstype=xfs --size=51200 part /var --fstype=xfs --size=102400 # 软件包选择 %packages @^minimal @core vim-enhanced %end -
通过HTTP/NFS提供Kickstart文件:
vmlinuz initrd=initrd.img ks=http://192.168.1.100/ks.cfg
6.2 配置管理工具
系统部署后,可以使用配置管理工具进行统一管理:
-
Ansible :
# playbook示例 - hosts: all tasks: - name: Ensure latest packages yum: name: '*' state: latest -
SaltStack :
# 批量执行命令 salt '*' cmd.run 'yum update -y' -
Puppet :
# 资源定义示例 package { 'vim-enhanced': ensure => installed, }
6.3 自定义镜像制作
对于需要频繁部署的标准化环境,可以制作自定义镜像:
-
使用virt-sysprep清理现有系统:
virt-sysprep -a centos7-base.qcow2 -
使用mkisofs创建ISO:
mkisofs -o custom.iso -J -R -V "CUSTOM_ISO" /path/to/files -
使用Packer构建云镜像:
{ "builders": [{ "type": "qemu", "iso_url": "centos7.iso", "ssh_username": "root" }] }
7. 环境验证与监控
7.1 基础环境验证
部署完成后需要验证各项功能:
-
网络测试 :
ping -c 4 google.com curl -I https://example.com -
磁盘性能测试 :
# 顺序读写 dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct # 随机IO fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --end_fsync=1 -
系统稳定性测试 :
stress --cpu 4 --io 2 --vm 2 --vm-bytes 1G --timeout 60s
7.2 监控系统部署
建议部署基础监控系统:
-
Prometheus + Grafana :
# Node Exporter安装 wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar xvf node_exporter-*.tar.gz cd node_exporter-*/ ./node_exporter & -
监控指标配置 :
# prometheus.yml示例 scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100'] -
告警规则 :
groups: - name: node.rules rules: - alert: HighLoad expr: node_load15 > 0.7 for: 5m
8. 备份与恢复策略
8.1 系统备份方案
-
全盘备份 :
# 使用dd备份整个磁盘 dd if=/dev/sda of=/backup/sda.img bs=4M status=progress # 使用Clonezilla进行裸机备份 -
关键数据备份 :
# 打包关键目录 tar -czvf /backup/etc-$(date +%F).tar.gz /etc -
LVM快照 :
# 创建快照 lvcreate -L 10G -s -n root_snap /dev/vg00/root # 恢复快照 lvconvert --merge /dev/vg00/root_snap
8.2 恢复测试流程
定期测试备份的有效性:
-
验证备份完整性:
tar -tzvf backup.tar.gz -
测试虚拟机恢复:
qemu-img convert -f raw -O qcow2 sda.img sda.qcow2 virt-install --name test-restore --ram 2048 --disk sda.qcow2 -
文档化恢复步骤:
- 记录详细的恢复流程
- 标注关键时间点和依赖项
9. 进阶环境配置
9.1 容器运行时环境
-
Docker安装 :
# CentOS yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io systemctl enable --now docker -
Podman配置 :
# 无守护进程方案 yum install -y podman podman run -it alpine sh -
用户命名空间配置 :
# /etc/subuid和/etc/subgid配置 echo "$USER:100000:65536" | sudo tee -a /etc/subuid echo "$USER:100000:65536" | sudo tee -a /etc/subgid
9.2 虚拟化环境
-
KVM安装 :
yum install -y qemu-kvm libvirt virt-install bridge-utils systemctl enable --now libvirtd -
虚拟机创建 :
virt-install --name vm1 --ram 2048 --disk size=20 --vcpus 2 --os-variant centos7.0 --network bridge=br0 --graphics none --console pty,target_type=serial --location /path/to/iso -
虚拟机管理 :
virsh list --all virsh start vm1 virsh console vm1
10. 环境文档化与知识管理
10.1 系统文档编写
完善的文档应包括:
-
系统规格 :
- 硬件配置
- 软件版本
- 网络拓扑
-
配置记录 :
- 所有自定义配置
- 内核参数调整
- 特殊权限设置
-
操作手册 :
- 日常维护流程
- 故障处理指南
- 联系人列表
10.2 配置版本控制
建议将重要配置纳入版本控制:
-
/etc目录管理 :
cd /etc git init git add . git commit -m "Initial etc config" -
使用etckeeper :
yum install -y etckeeper etckeeper init etckeeper commit "Initial commit" -
自动化提交 :
# 每日自动提交 echo 'daily_commit="yes"' >> /etc/etckeeper/etckeeper.conf
经过这样一套完整的部署流程,你得到的将不再只是一个简单的Linux系统,而是一个经过充分优化、安全加固、文档完备的生产级环境。这样的基础才能支撑起稳定可靠的业务系统。

749

被折叠的 条评论
为什么被折叠?



