数据库教程FGMT71:Linux系统运维工程师培训实战教程(红帽RHEL、CentOS、国产系列)
数据库教程FGMT71:Linux系统运维工程师培训实战教程(红帽RHEL、CentOS、国产系列)
## 一、前言与内容大纲
风哥在本套风哥教程中,围绕 Linux 系统运维工程师这一岗位的核心能力,按照红帽 RHEL、CentOS 以及银河麒麟、统信 UOS、华为 EulerOS 等国产系列的操作习惯,从底层原理到上层实战,完整串联起一套可落地、可复现的运维操作体系。风哥教程本文面向的是已经具备基础操作系统使用经验、希望系统化补齐运维深度的一线工程师,也兼顾准备 RHCSA 体系认证的读者。
风哥教程本文整体结构划分为六大板块:首先是计算机与服务器硬件认知,理清 CPU、内存、磁盘、网卡与系统之间的对应关系,为后续调优打下物理基础;其次是主流操作系统安装与初始化,覆盖 RHEL/CentOS 6、7、8、9、10 及国产系统的安装要点;然后是文件系统与磁盘管理,涉及分区、LVM、文件目录权限与特殊权限;再往后是用户与安全体系,包括用户、密码、用户组、基础权限与特殊权限管理;第五部分是进程、资源与 systemd 服务管理,涵盖进程调度、资源监控和服务单元管理;最后是网络与远程管理,包含基础网络、虚拟化网络、OpenSSH 远程接入与常用安全加固。
风哥针对本文的实战环境做如下统一约定:两台测试主机,主机名分别命名为 fgedu-net-cn1 与 fgedu-net-cn2;所有配置参数均按 64G 内存、8 CPU 的规格设计;凡涉及数据库类软件的安装路径统一使用 /fgedudb,数据库名、实例名、用户名统一使用 fgedudb、fgedudb、fgedu;文中命令同时兼顾 Linux 6、7、8、9、10 五个主版本的差异点。
## 二、理论篇:Linux 运维核心原理
### 2.1 硬件与系统架构
Linux 系统的一切行为都建立在硬件抽象之上。一台标准服务器通常包含 CPU、内存、磁盘、网卡、电源与 RAID 卡等部件。CPU 负责指令执行,其调度策略由内核的 CFS 完全公平调度器管理,运行队列中的每个进程按虚拟运行时间轮转获得 CPU 时间片。内存分为物理内存与交换空间 swap,当物理内存不足时,内核通过页回收与 swap 换出将部分冷页写入磁盘,从而保证系统可继续运行,但也会带来显著的性能损耗。
磁盘通过块设备接口暴露给系统,文件系统在块设备之上建立组织与管理机制。现代 RHEL/CentOS 默认使用 XFS 作为根文件系统,而国产系统如银河麒麟、统信 UOS 也多采用 ext4 或 XFS。文件系统的核心职责包括空间分配、元数据管理、目录索引与崩溃一致性保障,journal 日志机制用于在异常断电后快速恢复文件系统一致性。
在 64G 内存、8 CPU 的规格下,风哥建议合理分配系统资源:内核参数 vm.swappiness 建议设置为 10 左右,避免过早换页;page cache 保留足够空间以提升文件读取命中率。理解这些底层机制,才能在做调优时知其所以然。
### 2.2 文件系统与目录结构
Linux 采用单一根目录树结构,所有设备都挂载到目录树的某个节点上。FHS 文件系统层次标准对主要目录做了约定:/etc 存放配置文件,/var 存放运行时变化的数据如日志,/usr 存放只读的应用程序与库文件,/home 存放普通用户家目录,/proc 与 /sys 是内核暴露的虚拟文件系统,分别反映进程与设备状态。理解这一结构是定位问题的基础:当磁盘写满时,风哥习惯先用 df -h 观察各挂载点使用率,再用 du 逐层定位大文件。
### 2.3 用户与权限模型
Linux 是多用户多任务操作系统,用户通过 UID 标识,用户组通过 GID 标识。普通用户 UID 从 1000 开始分配,系统服务使用低段 UID。文件权限由三段 rwx 组成,分别对应属主、属组、其他用户,权限位通过 chmod 的数字表示法或符号表示法修改。特殊权限包括 SUID、SGID 与 sticky 位:SUID 使执行者临时获得文件属主身份,SGID 使新文件继承目录属组,sticky 位用于 /tmp 等公共目录防止互删。ACL 访问控制列表则提供了超出三段权限的精细化授权手段。
### 2.4 进程与 systemd 服务
进程是运行中的程序实例,由内核 fork 产生。systemd 是现代 Linux 的初始化系统与服务管理器,通过 unit 单元描述服务、挂载点、定时器等资源。每个 unit 有 start、stop、restart、enable、disable 等状态,enable 表示开机自启。systemd 还引入 target 概念替代传统的运行级别,multi-user.target 对应传统 level 3,graphical.target 对应 level 5。理解 systemd 的依赖与资源控制,才能精确管理服务生命周期。
### 2.5 网络与远程管理
Linux 网络基于 TCP/IP 协议栈,网卡通过 NetworkManager 或 systemd-networkd 管理。网络命名空间、网桥、veth 对等虚拟设备构成虚拟化网络的基础。SSH 是运维远程接入的事实标准,基于非对称加密完成身份认证与会话加密,OpenSSH 服务端监听在 22 端口,支持密码与公钥两种认证方式。安全加固时通常禁用密码登录、启用公钥认证、修改默认端口并限制 root 远程登录。
## 三、实战篇:Linux 系统运维操作全程演练
### 3.1 系统安装与初始化配置
风哥以 RHEL/CentOS 8 为例演示图形化安装,其他版本流程类似。在引导界面选择 Install,设置安装语言、时区、键盘布局。磁盘分区是关键环节,风哥建议采用 LVM 布局:/boot 分配 1024M,根分区通过 VG 预留扩展空间,交换空间按内存规格配置。在 64G 内存的机器上,swap 建议配置 32G 左右用于崩溃转储支持,但若业务对内存敏感且无需内核转储,也可适当调小。
“`
# 安装完成后以 root 登录,修改主机名与网络
hostnamectl set-hostname fgedu-net-cn1
# 查看当前系统版本与内核
cat /etc/redhat-release
uname -r
# 配置静态 IP(使用 nmcli,RHEL/CentOS 7 及以上通用)
nmcli connection modify ens33 ipv4.addresses 192.168.1.11/24
nmcli connection modify ens33 ipv4.gateway 192.168.1.1
nmcli connection modify ens33 ipv4.dns 114.114.114.114
nmcli connection modify ens33 ipv4.method manual
nmcli connection up ens33
ip addr show ens33
“`
对于 Linux 6、7 的系统,网络配置走 /etc/sysconfig/network-scripts/ifcfg-* 文件;对于 Linux 9、10,网络由 NetworkManager 统一接管,nmcli 的写法完全一致。国产系统如银河麒麟与统信 UOS 在命令行层面与 RHEL 高度兼容,可直接复用上述命令。
### 3.2 磁盘分区与 LVM 逻辑卷管理
生产环境中 LVM 是必备技能,它允许在不停机的情况下动态扩展逻辑卷。风哥演示在 fgedu-net-cn1 上为一台数据库主机准备存储,路径统一规划在 /fgedudb。
“`
# 查看磁盘
lsblk
fdisk -l
# 对 /dev/sdb 创建物理卷
pvcreate /dev/sdb
pvdisplay
# 创建卷组
vgcreate vgfgedudb /dev/sdb
vgdisplay
# 创建逻辑卷,分配 40G 给数据库目录
lvcreate -L 40G -n lvfgedudb vgfgedudb
lvdisplay
# 格式化并挂载到 /fgedudb
mkfs.xfs /dev/vgfgedudb/lvfgedudb
mkdir -p /fgedudb
mount /dev/vgfgedudb/lvfgedudb /fgedudb
# 写入 fstab 实现开机自动挂载
echo ‘/dev/vgfgedudb/lvfgedudb /fgedudb xfs defaults 0 0’ >> /etc/fstab
mount -a && df -h /fgedudb
“`
当空间不足时,可以动态扩容而不影响在线业务:
“`
lvextend -L +20G /dev/vgfgedudb/lvfgedudb
xfs_growfs /fgedudb
df -h /fgedudb
“`
注意 XFS 只能扩容不能收缩,若是 ext4 文件系统则可使用 resize2fs 调整。这一差异点是 Linux 运维的高频考点,风哥提醒务必牢记。
### 3.3 用户、密码与用户组管理
用户管理直接关系到系统安全边界。风哥以创建数据库专用用户 fgedu 为例,该用户将作为 fgedudb 实例的属主。
“`
# 创建用户与家目录
useradd -m -s /bin/bash fgedu
# 设置密码
echo ‘Fgedu@2026’ | passwd –stdin fgedu
# 创建组并加入
groupadd dbgroup
usermod -aG dbgroup fgedu
# 查看用户与组信息
id fgedu
getent passwd fgedu
getent group dbgroup
# 密码策略:设置密码有效期与最短长度
chage -M 90 -m 7 fgedu
cat /etc/login.defs | grep -E ‘PASS_(MAX|MIN|WARN)’
# 锁定与解锁账户
usermod -L fgedu
usermod -U fgedu
“`
在 Linux 9、10 中,用户密码哈希存储格式统一为 SHA-512 或 yescrypt,/etc/shadow 字段结构保持一致。国产系统在账号管理命令上与 RHEL 完全一致,无需额外适配。
### 3.4 权限与特殊权限实战
权限管理是运维日常工作的高频操作。风哥演示文件权限调整与特殊权限场景。
“`
# 调整权限:属主读写执行,属组读写,其他只读
chmod 764 /fgedudb/config.ora
# 数字表示法等价写法
chmod u=rwx,g=rw,o=r /fgedudb/config.ora
# 递归修改目录
chmod -R 750 /fgedudb
# 修改属主属组
chown -R fgedu:dbgroup /fgedudb
# 设置 SUID 示例
chmod u+s /usr/bin/passwd
# 设置 SGID,使目录内新文件继承属组
chmod g+s /fgedudb/shared
# 设置 sticky 位
chmod o+t /fgedudb/tmp
# 使用数字法一次性设置
chmod 4755 /fgedudb/setuid.sh
chmod 2770 /fgedudb/shared
chmod 1777 /fgedudb/tmp
# 查看特殊权限
ls -l /fgedudb
“`
对于需要精细化授权的场景,使用 ACL 更加灵活:
“`
# 为特定用户单独授权
setfacl -m u:fgedu:rwx /fgedudb/data
setfacl -m g:dbgroup:r-x /fgedudb/data
# 查看 ACL
getfacl /fgedudb/data
# 删除 ACL
setfacl -x u:fgedu /fgedudb/data
“`
### 3.5 进程与资源管理
在 64G 内存、8 CPU 的服务器上,进程与资源监控是排障的第一手段。
“`
# 实时查看进程与资源占用
top
# 按 CPU 排序
top -o %CPU
# 查看内存使用
free -h
# 查看磁盘 IO 与负载
iostat -x 2
vmstat 2 5
# 查看指定进程
ps -ef | grep fgedudb
ps aux | grep fgedudb
# 查看端口占用
ss -tlnp | grep 1521
# 终止进程
kill -9 进程PID
pkill -f fgedudb
# 调整进程优先级
nice -n -5 启动命令
renice -n 5 -p 进程PID
“`
当发现内存不足时,风哥会重点检查 vm.swappiness 与页缓存占用:
“`
# 查看当前 swappiness
cat /proc/sys/vm/swappiness
# 临时调整
sysctl -w vm.swappiness=10
# yj生效
echo ‘vm.swappiness=10’ >> /etc/sysctl.conf
sysctl -p
“`
### 3.6 systemd 服务管理
systemd 是服务管理的核心。风哥演示为 fgedudb 实例编写一个 systemd 服务单元,实现开机自启与统一管理。
“`
# 编辑服务单元文件
vim /etc/systemd/system/fgedudb.service
“`
服务单元内容如下:
“`
[Unit]
Description=Fgedu Database Service
After=network.target
[Service]
Type=simple
User=fgedu
Group=dbgroup
ExecStart=/fgedudb/bin/fgedudb start
ExecStop=/fgedudb/bin/fgedudb stop
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
“`
保存后执行:
“`
# 重新加载服务配置
systemctl daemon-reload
# 启动与设置开机自启
systemctl start fgedudb
systemctl enable fgedudb
# 查看状态
systemctl status fgedudb
# 查看开机自启状态
systemctl is-enabled fgedudb
# 查看日志
journalctl -u fgedudb -f
# 停止与禁用
systemctl stop fgedudb
systemctl disable fgedudb
# 查看当前 target
systemctl get-default
“`
Linux 6 使用 SysV init,服务通过 /etc/init.d/ 下的脚本和 c-h-kconfig 管理,命令为 c-h-kconfig –add、c-h-kconfig –level 3 fgedudb on。Linux 7、8、9、10 统一采用 systemd,写法完全一致,这是版本演进的重要分界点。
### 3.7 软件包管理与软件安装
软件安装是运维高频操作。RHEL/CentOS 8 及以上使用 dnf,7 使用 yum,6 使用 yum 但软件源较老。国产系统如统信 UOS 基于 Debian,使用 apt;银河麒麟与华为 EulerOS 兼容 yum/dnf。
“`
# RHEL/CentOS 7 使用 yum
yum install -y vim net-tools
# RHEL/CentOS 8/9/10 使用 dnf
dnf install -y wget tar unzip
# 搜索软件
dnf search nginx
# 查看已安装
dnf list installed | head
# 卸载
dnf remove -y nginx
# 配置本地 yum 源(离线环境)
mkdir -p /mnt/cdrom
mount -o loop /dev/sr0 /mnt/cdrom
vim /etc/yum.repos.d/local.repo
“`
本地源配置文件 local.repo 内容如下:
“`
[local]
name=Local Repository
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
“`
配置完成后执行:
“`
dnf clean all
dnf makecache
dnf repolist
“`
对于数据库软件等复杂程序,通常采用 tar 包二进制安装或编译安装。风哥演示将 fgedudb 软件包解压到 /fgedudb:
“`
tar -zxvf fgedudb.tar.gz -C /fgedudb
# 配置环境变量
echo ‘export PATH=/fgedudb/bin:$PATH’ >> /etc/profile
source /etc/profile
# 添加动态库路径
echo ‘/fgedudb/lib’ > /etc/ld.so.conf.d/fgedudb.conf
ldconfig
“`
### 3.8 网络与虚拟化网络管理
网络配置是系统运维的必修内容。风哥演示在 fgedu-net-cn1 与 fgedu-net-cn2 两台主机之间建立基本的网络通信与虚拟化网络。
“`
# 查看网卡与路由
ip addr show
ip route show
# 测试连通性
ping -c 4 192.168.1.12
# 抓包分析
tcpdump -i ens33 host 192.168.1.12 -c 10
# 创建网桥(虚拟化网络常用)
nmcli connection add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.50.1/24
nmcli connection modify br0 ipv4.method manual
nmcli connection up br0
# 创建 veth 对并绑定到网桥
ip link add veth0 type veth peer name veth1
brctl addif br0 veth0
ip link set veth0 up
“`
在 Linux 9、10 中,nmcli 依然是推荐做法,同时支持通过配置文件在 /etc/NetworkManager/system-connections/ 下管理连接。国产系统的网络管理命令与 RHEL 保持一致,可无缝迁移。
### 3.9 SSH 远程管理与安全加固
SSH 是运维远程接入的基石。风哥演示从 fgedu-net-cn1 免密登录到 fgedu-net-cn2,并完成安全加固。
“`
# 在 fgedu-net-cn1 生成密钥对
ssh-keygen -t rsa -b 4096
# 将公钥分发到 fgedu-net-cn2
ssh-copy-id root@192.168.1.12
# 测试免密登录
ssh root@192.168.1.12 hostname
# 在 fgedu-net-cn2 上编辑 sshd 配置进行加固
vim /etc/ssh/sshd_config
“`
sshd_config 关键加固项如下:
“`
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 22022
MaxAuthTries 3
AllowUsers fgedu
“`
修改后重启服务:
“`
# RHEL/CentOS 6 使用 service 管理
service sshd restart
# RHEL/CentOS 7/8/9/10 使用 systemd
systemctl restart sshd
# 验证新端口
ss -tlnp | grep 22022
“`
注意在 Linux 6 上重启 sshd 不会断开已有连接,而在 systemd 体系下重启服务是安全的。若启用 SELinux,还需要同步调整端口标签,否则服务无法正常监听:
“`
# 查看 SELinux 状态
getenforce
# 为自定义端口添加标签
semanage port -a -t ssh_port_t -p tcp 22022
# 临时关闭 SELinux(调试用)
setenforce 0
“`
### 3.10 日志管理与日常排障
日志是定位故障的第一手资料。风哥演示完整的日志分析流程。
“`
# 查看系统日志
journalctl -xe
# 按时间过滤
journalctl –since “2026-10-22 08:00:00” –until “2026-10-22 09:00:00”
# 查看磁盘使用情况
df -h
# 定位大文件
du -sh /fgedudb/*
find /var/log -type f -size +100M
# 查看登录记录
last
# 实时查看指定日志
tail -f /var/log/messages
“`
当系统日志膨胀时,使用 logrotate 进行轮转管理:
“`
vim /etc/logrotate.d/fgedudb
“`
日志轮转配置如下:
“`
/fgedudb/log/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
“`
配置完成后手动触发验证:
“`
logrotate -f /etc/logrotate.d/fgedudb
ls -l /fgedudb/log/
“`
### 3.11 Shell 脚本自动化
将重复操作脚本化是运维效率的分水岭。风哥演示编写一个一键巡检脚本,检测系统关键指标。
“`
vim /fgedudb/scripts/check_system.sh
“`
脚本内容如下:
“`
#!/bin/bash
# 系统巡检脚本
HOST=$(hostname)
echo “===== $HOST 系统巡检 $(date ‘+%Y-%m-%d %H:%M:%S’) =====”
# 检查内存
free -h | head -2
# 检查磁盘
df -h | grep -v tmpfs
# 检查负载
uptime
# 检查关键进程
if pgrep -f fgedudb > /dev/null; then
echo “fgedudb 进程运行正常”
else
echo “fgedudb 进程异常,请立即处理”
fi
“`
保存并赋予执行权限:
“`
chmod +x /fgedudb/scripts/check_system.sh
# 使用 crontab 定时执行
crontab -e
# 添加任务:每小时执行一次
0 * * * * /fgedudb/scripts/check_system.sh >> /fgedudb/log/check.log 2>&1
# 查看定时任务
crontab -l
“`
在 Linux 6、7 上 crontab 语法完全一致;Linux 8、9、10 推荐同时使用 systemd timer 作为替代方案。
### 3.12 国产系统适配要点
国产系统与 RHEL 系列在命令行层面高度兼容,但存在少量差异,风哥在此给出适配要点。银河麒麟与华为 EulerOS 使用 yum/dnf 管理软件包,内核基于 Linux 4.19 或更高版本,systemd 管理方式与 RHEL 一致。统信 UOS 基于 Debian 系,软件管理使用 apt,命令为 apt install、apt remove,网络管理同样走 NetworkManager。在国产系统上部署 fgedudb 时,注意确认系统架构(x86_64 或 aarch64),下载对应的二进制包,并在安装前关闭或合理配置 SELinux 策略。文件系统默认为 ext4 时,逻辑卷扩容使用 resize2fs;若为 XFS 则使用 xfs_growfs,这一判断逻辑与 RHEL 完全一致。
## 四、风哥针对本文总结
风哥针对本文做如下收束。Linux 系统运维的核心不是背诵命令,而是建立”硬件—内核—文件系统—服务—网络”的完整认知链条,再通过反复实操把命令内化为肌肉记忆。本套风哥教程从硬件原理讲到 systemd 服务,从磁盘 LVM 扩容讲到 SSH 安全加固,从 RHEL/CentOS 6、7、8、9、10 一路覆盖到银河麒麟、统信 UOS 等国产系列,核心目标只有一个:让读者在真实生产环境中遇到问题时,能够快速定位、安全操作、从容恢复。
风哥特别强调几点:其一,所有涉及数据库的路径统一规划在 /fgedudb,用户统一使用 fgedu,实例与库名统一为 fgedudb,保持命名规范能大幅降低多套环境的维护成本;其二,64G 内存、8 CPU 的规格下,务必关注 swap 策略、文件描述符上限与日志轮转,这些是数据库类业务稳定运行的隐性保障;其三,版本差异永远是最容易踩坑的地方,Linux 6 的 SysV init 与 7 及以后的 systemd、yum 与 dnf、XFS 与 ext4 的扩容差异,都需要在动手前先确认系统版本。最后,自动化脚本与定时任务能让运维从”救火”走向”预防”,但脚本本身也要纳入版本管理与灰度验证。希望读者在掌握本文全部实操之后,能独立完成一台生产服务器的初始化、加固与日常巡检,这才是 Linux 运维工程师真正的基本功。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
