|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Oracle Linux 7是基于Red Hat Enterprise Linux (RHEL) 7的企业级操作系统,专为云环境和企业数据中心设计。它提供了高性能、高可靠性和安全性,但为了充分发挥其潜力,需要进行适当的优化配置。系统优化不仅可以提升服务器性能,还能增强稳定性,减少资源浪费,提高业务效率。
本文将全面介绍Oracle Linux 7系统的优化配置方法,涵盖从安装到日常维护的各个环节,帮助系统管理员和运维人员掌握提升服务器性能与稳定性的关键技巧与实践方法。
系统安装优化
最小化安装原则
在安装Oracle Linux 7时,遵循最小化安装原则是优化的第一步。只安装必要的软件包,可以减少系统资源占用,降低安全风险。
- # 在安装过程中选择"Minimal Install"选项
- # 或者使用kickstart文件进行自动化安装,指定最小化安装
- %packages
- @core
- %end
复制代码
分区策略优化
合理的分区策略对系统性能至关重要。建议采用以下分区方案:
- # /boot 分区:500MB-1GB,用于存放内核和启动文件
- # / 分区:20-50GB,用于系统文件
- # /home 分区:根据需求分配,用于用户数据
- # /var 分区:根据需求分配,用于日志和动态数据
- # /tmp 分区:根据需求分配,用于临时文件
- # swap 分区:建议为内存的1-2倍,如果内存大于16GB,可以设置为16GB
复制代码
安装后更新系统
安装完成后,立即更新系统到最新版本,修复已知漏洞并提升性能:
- # 更新系统
- yum update -y
- # 重启系统以应用更新
- reboot
复制代码
内核参数优化
调整内核参数
通过修改/etc/sysctl.conf文件或创建/etc/sysctl.d/下的自定义配置文件来优化内核参数:
- # 创建自定义内核参数配置文件
- vi /etc/sysctl.d/99-custom.conf
- # 添加以下内容
- # 增加文件句柄限制
- fs.file-max = 1000000
- # 增加进程数限制
- kernel.pid_max = 4194304
- # 优化网络参数
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.tcp_max_syn_backlog = 8192
- net.ipv4.tcp_max_tw_buckets = 5000
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_tw_recycle = 0
- net.ipv4.ip_local_port_range = 10000 65000
- # 优化虚拟内存管理
- vm.swappiness = 10
- vm.dirty_ratio = 60
- vm.dirty_background_ratio = 2
- # 应用内核参数
- sysctl -p /etc/sysctl.d/99-custom.conf
复制代码
优化I/O调度器
针对不同的工作负载选择合适的I/O调度器:
- # 查看当前可用的调度器
- cat /sys/block/sda/queue/scheduler
- # 查看当前使用的调度器
- cat /sys/block/sda/queue/scheduler
- # 临时切换调度器(例如切换到deadline)
- echo deadline > /sys/block/sda/queue/scheduler
- # 永久更改调度器(创建udev规则)
- vi /etc/udev/rules.d/60-io_scheduler.rules
- # 添加以下内容
- ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
- # 重启udev服务
- systemctl restart systemd-udevd
复制代码
文件系统优化
选择合适的文件系统
Oracle Linux 7支持多种文件系统,根据应用场景选择合适的文件系统:
• XFS:适合大文件、高并发I/O场景,是Oracle Linux 7的默认文件系统
• ext4:通用性强,适合大多数场景
• Btrfs:适合需要快照、压缩等高级功能的场景
- # 格式化分区为XFS文件系统
- mkfs.xfs /dev/sdb1
- # 格式化分区为ext4文件系统
- mkfs.ext4 /dev/sdb1
- # 格式化分区为Btrfs文件系统
- mkfs.btrfs /dev/sdb1
复制代码
挂载选项优化
通过优化挂载选项来提升文件系统性能:
- # 编辑/etc/fstab文件
- vi /etc/fstab
- # 添加以下挂载选项
- # XFS文件系统
- /dev/sdb1 /data xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0
- # ext4文件系统
- /dev/sdc1 /data ext4 defaults,noatime,nodiratime,data=writeback,barrier=0,nobh 0 0
复制代码
文件系统保留空间调整
默认情况下,文件系统会保留5%的空间给root用户使用,对于大容量磁盘,可以适当减少保留空间:
- # 调整XFS文件系统保留空间(XFS没有直接的保留空间设置,但可以通过quota实现)
- # 调整ext4文件系统保留空间为1%
- tune2fs -m 1 /dev/sda1
复制代码
内存管理优化
交换空间配置
合理配置交换空间可以提升系统性能:
- # 创建交换文件
- fallocate -l 16G /swapfile
- chmod 600 /swapfile
- mkswap /swapfile
- swapon /swapfile
- # 永久启用交换文件
- echo '/swapfile none swap sw 0 0' >> /etc/fstab
- # 调整swappiness参数(前面已提到)
- echo 'vm.swappiness = 10' >> /etc/sysctl.d/99-custom.conf
- sysctl -p /etc/sysctl.d/99-custom.conf
复制代码
内存透明大页(THP)优化
透明大页可能导致内存性能问题,特别是在数据库工作负载下:
- # 禁用透明大页
- echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
- echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
- # 永久禁用透明大页
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
- chmod +x /etc/rc.local
复制代码
内存分配策略优化
调整内存分配策略以提升性能:
- # 编辑sysctl配置文件
- vi /etc/sysctl.d/99-custom.conf
- # 添加以下内容
- # 优化内存分配
- vm.zone_reclaim_mode = 0
- vm.max_map_count = 262144
- # 应用配置
- sysctl -p /etc/sysctl.d/99-custom.conf
复制代码
网络性能优化
网络参数调优
通过调整网络参数来提升网络性能:
- # 编辑sysctl配置文件
- vi /etc/sysctl.d/99-custom.conf
- # 添加以下内容(前面已提到部分参数)
- # 优化网络参数
- net.core.netdev_max_backlog = 10000
- net.ipv4.tcp_congestion_control = bbr
- net.ipv4.tcp_fastopen = 3
- net.ipv4.tcp_mtu_probing = 1
- # 应用配置
- sysctl -p /etc/sysctl.d/99-custom.conf
复制代码
网络接口优化
优化网络接口配置以提升网络性能:
- # 查看网络接口信息
- ip addr show
- # 编辑网络接口配置文件
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
- # 添加或修改以下参数
- TYPE=Ethernet
- BOOTPROTO=none
- DEFROUTE=yes
- NAME=eth0
- DEVICE=eth0
- ONBOOT=yes
- IPADDR=192.168.1.100
- PREFIX=24
- GATEWAY=192.168.1.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
- # 启用网络接口多队列
- ethtool -L eth0 combined 8
- # 设置网络中断亲和性
- # 首先查看网络接口的中断号
- cat /proc/interrupts | grep eth0
- # 然后设置中断亲和性(例如将中断绑定到CPU 0-7)
- echo 0-7 > /proc/irq/123/smp_affinity_list
复制代码
网络服务优化
优化网络服务配置:
- # 禁用不必要的服务
- systemctl stop postfix
- systemctl disable postfix
- # 优化SSH服务
- vi /etc/ssh/sshd_config
- # 修改以下参数
- Port 2222
- PermitRootLogin no
- PasswordAuthentication no
- UseDNS no
- GSSAPIAuthentication no
- # 重启SSH服务
- systemctl restart sshd
复制代码
安全性优化
防火墙配置
配置防火墙以提升系统安全性:
- # 安装firewalld
- yum install firewalld -y
- # 启动并启用firewalld
- systemctl start firewalld
- systemctl enable firewalld
- # 开放必要的端口
- firewall-cmd --permanent --add-service=ssh
- firewall-cmd --permanent --add-port=80/tcp
- firewall-cmd --permanent --add-port=443/tcp
- # 重新加载防火墙配置
- firewall-cmd --reload
- # 查看防火墙状态
- firewall-cmd --list-all
复制代码
SELinux配置
SELinux是Linux系统的重要安全组件,合理配置可以大幅提升系统安全性:
- # 检查SELinux状态
- getenforce
- # 设置SELinux为 enforcing 模式
- setenforce 1
- # 永久启用SELinux
- vi /etc/selinux/config
- SELINUX=enforcing
- # 查看SELinux布尔值
- getsebool -a
- # 设置SELinux布尔值(例如允许HTTPD连接网络)
- setsebool -P httpd_can_network_connect 1
复制代码
系统审计
配置系统审计以跟踪关键系统活动:
- # 安装auditd
- yum install audit -y
- # 启动并启用auditd
- systemctl start auditd
- systemctl enable auditd
- # 添加审计规则
- auditctl -w /etc/passwd -p wa -k identity_modification
- auditctl -w /etc/shadow -p wa -k identity_modification
- auditctl -w /etc/sudoers -p wa -k sudoers_modification
- # 永久保存审计规则
- vi /etc/audit/rules.d/audit.rules
- -w /etc/passwd -p wa -k identity_modification
- -w /etc/shadow -p wa -k identity_modification
- -w /etc/sudoers -p wa -k sudoers_modification
复制代码
服务管理优化
禁用不必要的服务
禁用不必要的服务可以释放系统资源,提升性能:
- # 查看已启用的服务
- systemctl list-unit-files | grep enabled
- # 禁用不必要的服务
- systemctl stop avahi-daemon
- systemctl disable avahi-daemon
- systemctl stop cups
- systemctl disable cups
- systemctl stop postfix
- systemctl disable postfix
复制代码
优化系统服务
优化关键系统服务的配置:
- # 优化systemd日志大小限制
- vi /etc/systemd/journald.conf
- # 修改以下参数
- SystemMaxUse=100M
- SystemMaxFileSize=10M
- # 重启journald服务
- systemctl restart systemd-journald
- # 优化crond服务
- vi /etc/crontab
- # 添加以下参数以优化cron执行环境
- SHELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- HOME=/
- # 重启crond服务
- systemctl restart crond
复制代码
配置资源限制
设置合理的资源限制可以防止单个进程耗尽系统资源:
- # 编辑limits.conf文件
- vi /etc/security/limits.conf
- # 添加以下内容
- * soft nofile 65536
- * hard nofile 65536
- * soft nproc 32768
- * hard nproc 32768
- * soft memlock unlimited
- * hard memlock unlimited
- # 编辑systemd系统配置
- vi /etc/systemd/system.conf
- # 添加或修改以下参数
- DefaultLimitNOFILE=65536
- DefaultLimitNPROC=32768
- DefaultLimitMEMLOCK=infinity
- # 重启systemd以应用更改
- systemctl daemon-reexec
复制代码
监控与维护
系统监控工具
安装和配置系统监控工具以实时监控系统状态:
- # 安装监控工具
- yum install htop iotop iftop sysstat nmon -y
- # 启用sysstat数据收集
- vi /etc/default/sysstat
- ENABLED="true"
- # 启动并启用sysstat服务
- systemctl start sysstat
- systemctl enable sysstat
- # 安装Zabbix监控代理(可选)
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- yum install zabbix-agent -y
- # 配置Zabbix代理
- vi /etc/zabbix/zabbix_agentd.conf
- Server=192.168.1.10
- ServerActive=192.168.1.10
- Hostname=OracleLinux7
- # 启动并启用Zabbix代理
- systemctl start zabbix-agent
- systemctl enable zabbix-agent
复制代码
日志管理
优化日志管理以提升系统性能并便于故障排查:
- # 安装并配置logrotate
- yum install logrotate -y
- # 创建自定义日志轮转配置
- vi /etc/logrotate.d/custom
- # 添加以下内容
- /var/log/custom/*.log {
- daily
- missingok
- rotate 7
- compress
- delaycompress
- notifempty
- create 644 root root
- }
- # 配置rsyslog
- vi /etc/rsyslog.conf
- # 修改以下参数以优化日志性能
- $ModLoad imuxsock
- $ModLoad imjournal
- $WorkDirectory /var/lib/rsyslog
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
- $IncludeConfig /etc/rsyslog.d/*.conf
- *.info;mail.none;authpriv.none;cron.none /var/log/messages
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
- # 重启rsyslog服务
- systemctl restart rsyslog
复制代码
定期维护任务
设置定期维护任务以保持系统性能:
- # 创建维护脚本
- vi /usr/local/bin/system_maintenance.sh
- # 添加以下内容
- #!/bin/bash
- # 清理旧日志
- find /var/log -type f -name "*.gz" -mtime +30 -delete
- find /var/log -type f -name "*.old" -mtime +30 -delete
- # 清理临时文件
- find /tmp -type f -atime +10 -delete
- find /var/tmp -type f -atime +10 -delete
- # 更新系统
- yum update -y
- # 清理yum缓存
- yum clean all
- # 检查磁盘空间
- df -h
- # 检查内存使用情况
- free -m
- # 检查系统负载
- uptime
- # 使脚本可执行
- chmod +x /usr/local/bin/system_maintenance.sh
- # 添加到crontab
- echo "0 2 * * 0 /usr/local/bin/system_maintenance.sh > /var/log/system_maintenance.log 2>&1" | crontab -
复制代码
实际案例
数据库服务器优化
针对Oracle数据库服务器的优化配置:
- # 创建Oracle用户和组
- groupadd oinstall
- groupadd dba
- useradd -g oinstall -G dba oracle
- # 设置Oracle用户的资源限制
- vi /etc/security/limits.d/oracle-rlimits.conf
- # 添加以下内容
- oracle soft nofile 65536
- oracle hard nofile 65536
- oracle soft nproc 16384
- oracle hard nproc 16384
- oracle soft memlock unlimited
- oracle hard memlock unlimited
- # 配置内核参数
- vi /etc/sysctl.d/98-oracle.conf
- # 添加以下内容
- fs.aio-max-nr = 1048576
- fs.file-max = 6815744
- kernel.shmall = 2097152
- kernel.shmmax = 4294967295
- kernel.shmmni = 4096
- kernel.sem = 250 32000 100 128
- net.ipv4.ip_local_port_range = 9000 65500
- net.core.rmem_default = 262144
- net.core.rmem_max = 4194304
- net.core.wmem_default = 262144
- net.core.wmem_max = 1048576
- # 应用内核参数
- sysctl -p /etc/sysctl.d/98-oracle.conf
- # 禁用透明大页(前面已提到)
- echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
- echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
- # 永久禁用透明大页
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
- chmod +x /etc/rc.local
- # 安装Oracle数据库所需的软件包
- yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 \
- glibc-devel.i686 glibc-devel.x86_64 ksh compat-libstdc++-33 libaio.i686 libaio.x86_64 \
- libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 \
- libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 \
- make.x86_64 sysstat.x86_64
- # 创建Oracle安装目录
- mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
- chown -R oracle:oinstall /u01
- chmod -R 775 /u01
复制代码
Web服务器优化
针对Apache/PHP Web服务器的优化配置:
- # 安装Apache和PHP
- yum install httpd php php-mysqlnd php-gd php-xml php-mbstring -y
- # 优化Apache配置
- vi /etc/httpd/conf/httpd.conf
- # 修改以下参数
- KeepAlive On
- KeepAliveTimeout 5
- MaxKeepAliveRequests 100
- Timeout 30
- StartServers 4
- MinSpareServers 4
- MaxSpareServers 16
- ServerLimit 256
- MaxRequestWorkers 256
- MaxConnectionsPerChild 10000
- # 优化PHP配置
- vi /etc/php.ini
- # 修改以下参数
- memory_limit = 256M
- max_execution_time = 30
- max_input_time = 60
- post_max_size = 32M
- upload_max_filesize = 32M
- max_file_uploads = 20
- date.timezone = Asia/Shanghai
- # 启用HTTP/2支持(如果需要)
- yum install mod_http2 -y
- # 配置SSL/TLS
- yum install mod_ssl -y
- mkdir /etc/httpd/ssl
- openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
- # 配置SSL虚拟主机
- vi /etc/httpd/conf.d/ssl.conf
- # 修改以下参数
- SSLCipherSuite HIGH:!aNULL:!MD5
- SSLProtocol all -SSLv2 -SSLv3
- SSLHonorCipherOrder on
- SSLOptions +StrictRequire
- # 启动并启用Apache
- systemctl start httpd
- systemctl enable httpd
- # 配置防火墙
- firewall-cmd --permanent --add-service=http
- firewall-cmd --permanent --add-service=https
- firewall-cmd --reload
复制代码
高性能计算服务器优化
针对高性能计算(HPC)服务器的优化配置:
- # 安装高性能计算所需的软件包
- yum install -y gcc-gfortran openmpi openmpi-devel atlas-devel blas-devel lapack-devel
- # 优化CPU性能
- # 安装cpufrequtils
- yum install -y cpufrequtils
- # 设置CPU性能模式
- cpufreq-set -g performance
- # 永久设置CPU性能模式
- echo 'GOVERNOR="performance"' > /etc/sysconfig/cpupower
- # 启用cpupower服务
- systemctl enable cpupower
- systemctl start cpupower
- # 优化NUMA设置
- # 安装numactl
- yum install -y numactl
- # 查看NUMA节点信息
- numactl --hardware
- # 配置NUMA策略
- # 例如,将进程绑定到特定的NUMA节点
- numactl --cpunodebind=0 --membind=0 your_application
- # 优化文件系统
- # 使用XFS文件系统并优化挂载选项
- mkfs.xfs /dev/sdb1
- mkdir /hpc_data
- echo '/dev/sdb1 /hpc_data xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab
- mount -a
- # 优化网络配置
- # 配置高吞吐量网络参数
- echo 'net.core.rmem_max = 4194304' >> /etc/sysctl.d/99-hpc.conf
- echo 'net.core.wmem_max = 4194304' >> /etc/sysctl.d/99-hpc.conf
- echo 'net.ipv4.tcp_rmem = 4096 87380 4194304' >> /etc/sysctl.d/99-hpc.conf
- echo 'net.ipv4.tcp_wmem = 4096 65536 4194304' >> /etc/sysctl.d/99-hpc.conf
- echo 'net.core.netdev_max_backlog = 30000' >> /etc/sysctl.d/99-hpc.conf
- sysctl -p /etc/sysctl.d/99-hpc.conf
- # 配置InfiniBand(如果使用)
- # 安装InfiniBand驱动和工具
- yum install -y libibverbs libibverbs-utils infiniband-diags
- # 配置SSH无密码登录以支持MPI作业
- ssh-keygen -t rsa
- cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- chmod 600 ~/.ssh/authorized_keys
复制代码
总结
Oracle Linux 7系统优化是一个全面而复杂的过程,需要根据具体的应用场景和工作负载进行针对性的配置。本文介绍了从系统安装到日常维护的各个环节的优化技巧和实践方法,包括:
1. 系统安装优化:最小化安装、合理分区、及时更新
2. 内核参数优化:调整内核参数、优化I/O调度器
3. 文件系统优化:选择合适的文件系统、优化挂载选项、调整保留空间
4. 内存管理优化:配置交换空间、禁用透明大页、优化内存分配策略
5. 网络性能优化:调整网络参数、优化网络接口、优化网络服务
6. 安全性优化:配置防火墙、启用SELinux、配置系统审计
7. 服务管理优化:禁用不必要的服务、优化系统服务、配置资源限制
8. 监控与维护:安装监控工具、优化日志管理、设置定期维护任务
通过实施这些优化措施,可以显著提升Oracle Linux 7服务器的性能和稳定性,为业务应用提供更加高效、可靠的运行环境。需要注意的是,系统优化是一个持续的过程,应该根据实际运行情况不断调整和优化配置,以达到最佳的性能和稳定性。
最后,建议在进行任何系统优化之前,先在测试环境中验证配置更改的影响,确保优化措施不会对系统稳定性和业务连续性造成负面影响。同时,定期备份系统配置和数据,以便在出现问题时能够快速恢复。 |
|