🐧 Linux 系统优化 —— 企业生产场景实战指南
一、企业生产场景中 Linux 系统的分区方案
💡 合理的分区方案是服务器稳定运行的基石。不同业务角色对应不同的分区策略,以下提供三种经过生产验证的方案。
📌 方案 1:网站集群节点服务器(数据非关键型)
适用场景:集群架构中的某个节点,数据有多份副本,单台故障不影响业务。
| 分区 | 大小建议 | 说明 |
|---|---|---|
/boot | 100 ~ 200 MB | 引导分区,存放内核与启动文件 |
swap | 物理内存 × 1.5 | 内存 ≥ 8GB 时,配置 8 ~ 16GB 即可 |
/ | 剩余全部空间 | 系统 + 业务 + 数据共用一个分区 |
⚠️ 此方案相当于 Windows 只有一块 C 盘,所有数据混在一起,不适合存放重要数据。
📌 方案 2:数据库及存储服务器(数据关键型)⭐ 推荐
适用场景:承载数据库(MySQL / PostgreSQL 等)或存储服务(NFS / Ceph 等),数据极其重要。
| 分区 | 大小建议 | 说明 |
|---|---|---|
/boot | 100 ~ 200 MB | 引导分区 |
/ | 50 ~ 200 GB | 仅存放系统文件,不放业务数据 |
swap | 物理内存 × 1.5 | 内存 ≥ 8GB 时,配置 8 ~ 16GB 即可 |
/data | 剩余全部空间 | 存放数据库文件、业务数据等 |
✅ 核心思想:将重要数据单独分区,便于备份、迁移和灾难恢复。/data名称可替换为/db、/storage等。
📌 方案 3:大型门户企业服务器(灵活型)
适用场景:业务线多、需求不确定,需要按需分配磁盘资源的大型企业。
| 分区 | 大小建议 | 说明 |
|---|---|---|
/boot | 100 MB | 引导分区 |
swap | 物理内存 × 1.5 | 内存 ≥ 8GB 时,配置 8 ~ 16GB 即可 |
/ | 50 ~ 200 GB | 仅存放系统文件 |
🔓 剩余磁盘空间不分区,留给各业务部门按需自行分配,灵活性最高。
二、内核版本查看与解读
🔹 查看内核版本
uname -r🔹 内核版本号解读
以 3.10.0-1160.45.1.el7.x86_64 为例:
| 字段 | 含义 | 示例值 |
|---|---|---|
| 主版本号 | 结构性变化时才更改 | 3 |
| 次版本号 | 新增功能时变化,偶数=稳定版,奇数=测试版 | 10 |
| 修订号 | 对次版本的修订/补丁次数 | 0 |
| 编译次数 | 每次编译可对少数程序优化或修改 | 1160.45.1 |
| 特殊标识 | 版本特殊信息 | el7 = Enterprise Linux 7 |
| 架构 | 系统位数 | x86_64 = 64 位 |
常见后缀含义:
| 后缀 | 含义 |
|---|---|
el | Enterprise Linux(企业版) |
pp | 测试版(Pre-Release) |
fc | Fedora Core |
rc | 候选版本(Release Candidate) |
三、配置 yum 源仓库
💡 yum 源决定了软件下载的速度和稳定性,生产环境强烈推荐使用国内镜像源。
🚀 阿里云 yum 源
# 方式一:wget 下载
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 方式二:curl 下载
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo🚀 清华大学 yum 源
# 配置清华源(自动替换官方地址)
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo📖 详细说明:https://mirrors.tuna.tsinghua.edu.cn/help/centos/
✍️ 自定义 yum 源格式
cat > /etc/yum.repos.d/local.repo << 'EOF'
[app1]
name=Local Repository
baseurl=http://your-server/path/to/repo
gpgcheck=0
enabled=1
EOF🔄 刷新 yum 缓存
yum clean all # 清除旧缓存
yum makecache fast # 重建缓存(fast 加速)
yum update # 升级所有包(谨慎操作,见下方说明)⚠️
yum update警告:
- 新装系统可以执行
yum update -y打全量补丁- 已上线生产服务器不要轻易执行全量更新,可能导致业务异常
- 遇到特定漏洞(如 2014 年 OpenSSL 心脏出血、Bash 漏洞),仅单独升级对应软件包即可
四、系统安装类型与软件包选择
✅ 安装原则:最小化安装
🎯 不需要的或不确定是否需要的一律不装,最大程度减少攻击面。
# 安装基础组件组
yum groupinstall "Compatibility libraries" "Base" "Development tools"
yum groupinstall "debugging Tools" "Dial-up Networking Support"
# 查看已安装/可用的软件组
yum grouplist📦 安装常用工具包
# 必备运维工具
yum install tree telnet dos2unix sysstat lrzsz nc nmap -y
# 安装 yum-priorities 源优先级工具
yum install yum-priorities -y📌 yum-priorities 作用:当系统存在多个 yum 源(官方源 + epel + 第三方源)且包含同名软件时,按优先级决定使用哪个源的版本。
开启优先级功能:
vim /etc/yum/pluginconf.d/priorities.conf确保文件内容如下:
[main]
enabled=1五、系统服务优化
🔻 关闭不需要的服务
ntsysv生产环境必须保留的服务(其余一律关闭):
| 服务名 | 作用 | 是否必须 |
|---|---|---|
crond | 定时任务调度 | ✅ 必须 |
network | 网络服务,不开启则无法联网 | ✅ 必须 |
sshd | SSH 远程登录守护进程 | ✅ 必须 |
rsyslog | 系统日志服务(CentOS 5.x 为 syslog) | ✅ 必须 |
六、关闭不需要的 TTY 控制台
💡 默认 Linux 打开 6 个虚拟控制台(ALT+F1 ~ ALT+F6),全部驻留内存。生产服务器通常只需 1~2 个。
查看当前 TTY 进程:
ps aux | grep tty | grep -v 'grep'修改配置,只保留 2 个控制台:
# 1. 编辑 /etc/init/start-ttys.conf
vim /etc/init/start-ttys.conf
# 修改此行:
env ACTIVE_CONSOLES=/dev/tty[1-2]
# 2. 编辑 /etc/sysconfig/init
vim /etc/sysconfig/init
# 修改此行:
ACTIVE_CONSOLES=/dev/tty[1-2]七、TCP/IP 网络参数调优
🛡️ 增强 SYN Flood 防护能力
# 开启 SYN Cookies 防护
echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
# 立即生效
sysctl -p📌 SYN Cookies 是一种防御 SYN Flood 攻击的机制,在高并发 Web 服务器上强烈建议开启。
八、优化 Shell 历史记录
📝 减少 history 记录条数
# 编辑 /etc/profile
vim /etc/profile
# 将 HISTSIZE=1000 改为:
HISTSIZE=100立即生效(无需重启):
source /etc/profile💡 减少历史记录条数可以降低敏感信息(如密码、密钥)泄露风险,也节省磁盘空间。
九、定时校正服务器时间
⏰ 时间同步对分布式系统、数据库主从复制、日志排查至关重要。
# 安装 NTP 工具
yum install ntp -y
# 添加定时任务
crontab -e加入以下内容(每分钟同步一次阿里云 NTP 服务器):
*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>>/dev/null📌 常用 NTP 服务器:ntp1.aliyun.com、ntp2.aliyun.com、pool.ntp.org
十、调整 Linux 最大文件打开数
⚠️ 生产环境经常遇到 Too many open files 错误,默认 1024 远远不够。第一步:修改系统级限制
编辑 /etc/security/limits.conf,在文件末尾添加:
* soft nofile 65535
* hard nofile 65535第二步:开机自动生效
编辑 /etc/rc.local,添加:
ulimit -SHn 65535验证某进程的实际限制
#!/bin/bash
for pid in $(ps aux | grep nginx | grep -v grep | awk '{print $2}')
do
echo "PID: $pid"
cat /proc/${pid}/limits | grep 'Max open files'
done💡 将脚本保存为check_fd.sh,chmod +x后执行即可查看各 worker 进程的文件描述符上限。
十一、网卡配置与启动
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:14:22:1B:71:20
IPV6INIT=no
IPV6_AUTOCONF=yes
ONBOOT=yes # ✅ 必须为 yes,系统引导时自动启动网卡
NETMASK=255.255.255.192
IPADDR=203.93.236.146
GATEWAY=203.93.236.129
TYPE=Ethernet
PEERDNS=yes # 允许 DHCP 获得的 DNS 覆盖本地配置
DNSUSERCTL=no # 不允许普通用户修改网卡配置⚠️ 关键项:ONBOOT=yes 忘记改的话,重启后网卡不启动,服务器直接失联!十二、关闭写磁盘 I/O 功能(减少磁盘压力)
📖 Linux 文件的三个时间属性
| 时间属性 | 含义 |
|---|---|
atime | 文件访问时间 |
mtime | 文件内容修改时间 |
ctime | 文件 inode 变更时间(权限、属主等) |
💡 对于存放大量小文件的分区(如 Web 图片目录),记录 atime 会产生大量不必要的写 I/O。禁用 atime 更新
编辑 /etc/fstab,在对应分区挂载选项中添加 noatime,nodiratime:
/dev/sda5 /data/photos ext3 defaults,noatime,nodiratime 0 0✅ 修改后执行 mount -o remount /data/photos 或重启生效。十三、创建具有 sudo 权限的用户
推荐方式:使用 visudo(自带语法检查)
visudo在 root ALL=(ALL) ALL 下方添加:
# 需要输入密码的 sudo 权限
lilutong ALL=(ALL) ALL
# 免密码 sudo(自动化运维场景常用)
lilutong ALL=(ALL) NOPASSWD:ALL✅ visudo 会在保存时自动校验语法,避免因配置错误导致所有 sudo 失效。十四、SSH 登录安全加固 ⭐ 必做
# 1. 禁止 root 远程登录
sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config
# 2. 禁止空密码登录
sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config
# 3. 关闭 SSH 反向 DNS 查询(加快登录速度)
sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config
# 重启 sshd 使配置生效
systemctl restart sshd安全加固效果:
| 加固项 | 防御目标 |
|---|---|
| 禁止 root 远程登录 | 防止暴力破解 root 密码 |
| 禁止空密码登录 | 防止弱口令/无口令账户 |
| 关闭 UseDNS | 消除登录卡顿,减少 DNS 超时风险 |
⚠️ 操作前务必确认:至少有一個具有 sudo 权限的普通用户可以正常登录,否则改完配置可能无法管理服务器!
📋 优化项速查总表
| 序号 | 优化项 | 关键命令/配置 | 重要程度 |
|---|---|---|---|
| 1 | 分区方案规划 | /boot + / + /data + swap | ⭐⭐⭐ |
| 2 | 内核版本检查 | uname -r | ⭐⭐ |
| 3 | 配置国内 yum 源 | 阿里云 / 清华源 | ⭐⭐⭐ |
| 4 | 最小化安装 + 基础包 | yum groupinstall | ⭐⭐⭐ |
| 5 | 关闭无用服务 | 仅保留 crond/network/sshd/rsyslog | ⭐⭐⭐ |
| 6 | 减少 TTY 控制台 | 保留 1~2 个 | ⭐⭐ |
| 7 | SYN Flood 防护 | net.ipv4.tcp_syncookies=1 | ⭐⭐⭐ |
| 8 | 缩减 history 记录 | HISTSIZE=100 | ⭐⭐ |
| 9 | NTP 时间同步 | ntpdate ntp1.aliyun.com | ⭐⭐⭐ |
| 10 | 调大文件打开数 | nofile 65535 | ⭐⭐⭐ |
| 11 | 网卡 ONBOOT=yes | /etc/sysconfig/network-scripts/ | ⭐⭐⭐ |
| 12 | 关闭 atime 写盘 | noatime,nodiratime | ⭐⭐ |
| 13 | 创建 sudo 用户 | visudo | ⭐⭐⭐ |
| 14 | SSH 安全加固 | 禁 root / 禁空密码 / 关 DNS | ⭐⭐⭐ |
🎯 总结:以上 14 项优化覆盖了磁盘分区、内核调优、软件源、服务管理、网络安全等核心维度,是经过大量生产环境验证的 Linux 系统初始化标准动作。建议将其编写为自动化脚本(Ansible / Shell),在新服务器上线时一键执行,既高效又避免遗漏。
📝 本文由原文改写美化,原文作者:李MAX,来源:稀土掘金
评论 (0)