LINUX系统优化
侧边栏壁纸
    love love love

  • 累计撰写 13 篇文章
  • 累计收到 0 条评论
  • 今日撰写 0 篇文章

LINUX系统优化

admin
2026-08-07 / 0 评论 / 1 阅读 / 耗时: 20 ms /

🐧 Linux 系统优化 —— 企业生产场景实战指南

一、企业生产场景中 Linux 系统的分区方案

💡 合理的分区方案是服务器稳定运行的基石。不同业务角色对应不同的分区策略,以下提供三种经过生产验证的方案。

📌 方案 1:网站集群节点服务器(数据非关键型)

适用场景:集群架构中的某个节点,数据有多份副本,单台故障不影响业务。

分区大小建议说明
/boot100 ~ 200 MB引导分区,存放内核与启动文件
swap物理内存 × 1.5内存 ≥ 8GB 时,配置 8 ~ 16GB 即可
/剩余全部空间系统 + 业务 + 数据共用一个分区
⚠️ 此方案相当于 Windows 只有一块 C 盘,所有数据混在一起,不适合存放重要数据

📌 方案 2:数据库及存储服务器(数据关键型)⭐ 推荐

适用场景:承载数据库(MySQL / PostgreSQL 等)或存储服务(NFS / Ceph 等),数据极其重要。

分区大小建议说明
/boot100 ~ 200 MB引导分区
/50 ~ 200 GB仅存放系统文件,不放业务数据
swap物理内存 × 1.5内存 ≥ 8GB 时,配置 8 ~ 16GB 即可
/data剩余全部空间存放数据库文件、业务数据等
核心思想:将重要数据单独分区,便于备份、迁移和灾难恢复/data 名称可替换为 /db/storage 等。

📌 方案 3:大型门户企业服务器(灵活型)

适用场景:业务线多、需求不确定,需要按需分配磁盘资源的大型企业。

分区大小建议说明
/boot100 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 位

常见后缀含义:

后缀含义
elEnterprise Linux(企业版)
pp测试版(Pre-Release)
fcFedora 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网络服务,不开启则无法联网✅ 必须
sshdSSH 远程登录守护进程✅ 必须
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.comntp2.aliyun.compool.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.shchmod +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 个⭐⭐
7SYN Flood 防护net.ipv4.tcp_syncookies=1⭐⭐⭐
8缩减 history 记录HISTSIZE=100⭐⭐
9NTP 时间同步ntpdate ntp1.aliyun.com⭐⭐⭐
10调大文件打开数nofile 65535⭐⭐⭐
11网卡 ONBOOT=yes/etc/sysconfig/network-scripts/⭐⭐⭐
12关闭 atime 写盘noatime,nodiratime⭐⭐
13创建 sudo 用户visudo⭐⭐⭐
14SSH 安全加固禁 root / 禁空密码 / 关 DNS⭐⭐⭐

🎯 总结:以上 14 项优化覆盖了磁盘分区、内核调优、软件源、服务管理、网络安全等核心维度,是经过大量生产环境验证的 Linux 系统初始化标准动作。建议将其编写为自动化脚本(Ansible / Shell),在新服务器上线时一键执行,既高效又避免遗漏。

📝 本文由原文改写美化,原文作者:李MAX,来源:稀土掘金

你认为这篇文章怎么样?
  • 0
    点赞
  • 0
  • 0
  • 0
    滑稽
  • 0
    尴尬
  • 0
    睡觉

评论 (0)

取消
头像
邮箱:
I P:
互动: