实验指导 7 - 系统维护
学习目标
- 使用系统监视工具
uptime
/tload
top
/htop
/dstat
free
/vmstat
mpstat
/iostat
/sar
nload
/nethogs
/iftop
- 内核管理
- 安全升级内核
- 使用
sysctl
调整内核参数- 系统启动过程
- Systemd 的目标管理与运行级别
- 使用
systemd-analyze
分析启动过程性能- 自定义 Systemd 服务单元的配置文件
- 备份与恢复
- 使用
cp
、tar
、dd
、rsync
等命令实施备份- 使用
rsnapshot
工具实现快照型备份- 使用
lsyncd
实现实时同步- 故障排查
- 切换进入 Systemd 的
rescue
/emergency
目标- 使用 安装光盘的援救环境/LiveCD 修复系统启动故障和其他故障
- 使用
grub2-mkconfig
工具重新生成 GRUB2 的配置文件- 为内核传递
rd.break
参数中断 systemd 的执行并修复故障- 修复 root 口令丢失、分区/LVM、文件系统、软件包、网络等故障
任务1: 使用监视工具分析系统性能
提示 请先确保常用的系统监视工具已经被安装
yum -y install sysstat htop dstat nload nethogs iftop
- 使用如下工具监视系统
uptime
/tload
top
/htop
/dstat
free
/vmstat
mpstat
/iostat
/sar
nload
/nethogs
/iftop
- 系统性能分析
- 系统平均负载为何时表示负载过重?
- 如何找出 CPU 瓶颈?
- 如何找出 内存 瓶颈?
- 如何找出 I/O 瓶颈?
- 如何找出 带宽 瓶颈?
任务2: 内核管理
- 升级内核
- yum update kernel-VER
- yum update
- 调整内核参数
- 使用
sysctl
显示内核参数 - 使用
sysctl -w
设置内核参数- 如:开启包转发功能
- 使用
任务3:系统启动过程
BIOS/UEFI -> GRUB2 -> 内核初始化 -> Systemd 初始化
- 内核初始化
- 参考
man 7 dracut.bootup
- 参考
- Systemd 初始化
- 参考
man 7 bootup
- 参考
- systemd 的运行目标管理
- 显示当前已激活的目标
- 显示当前已加载的所有目标
- 显示当前已安装的所有目标
- systemd 的默认目标管理
- 类似于在 CentOS 6 中配置或切换系统运行级别
- 显示当前的默认目标
- 显示默认目标的依赖关系
- 设置默认目标(下次启动时生效)为
graphical.target
- 更改当前的目标(立即生效)到
emergency.target
任务4: 禁用一致的网络设备名
- 修改
/etc/default/grub
的GRUB_CMDLINE_LINUX
配置行 - 重新生成 grub2 的配置文件
- 重新启动
任务5: 基于 tar 的备份
- 完全(Full)备份
- 将
/etc /home /srv
目录下的所有文件打包备份到/backup/full-backup.tgz
- 将当前完全备份的日期时间戳 (
date +%F
)写入/backups/full-backup-date
文件
- 将
- 增量(Incremental)备份
- 将自昨天 0 点起有变化的数据打包备份到
/backup/inc-backup-$(date -d yesterday "+%F").txz
- 将自昨天 0 点起有变化的数据打包备份到
- 差分(Differential)备份
- 将自完全备份以来有变化的数据打包备份到
/backup/diff-backup-$(date +%F).tbz
- 将自完全备份以来有变化的数据打包备份到
- 编写一个每日执行脚本,实现每月一次完全备份,每周一次差分备份,每日一次增量备份,并删除 180 天前创建的备份文件
任务6: 基于 rsync 和 tar 的远程备份
要求
- 备份生产服务器(容器 c6-v1)的 /etc /home 目录到备份服务器(假如使用在第一章安装的 CentOS 7 VirtualBox 虚拟机)
- 保留历史归档 (每月一次完全备份,每周一次差分备份,每日一次增量备份)
- 删除 180 天前创建的备份文件
方法
- 在容器 c6-v1 上执行任务5的操作,然后使用 rsync 命令同步到备份服务器
- 优选方法
- 在备份服务器上创建目录 /backup/c6-v1/{current,archive}
- 在备份服务器上每天将 c6-v1 上的 /etc /home 同步到自己的 /backup/c6-v1/current/{etc,home}
- 在备份服务器上针对 /backup/c6-v1/current/{etc,home} 里的数据实施如 任务5 的操作,并将生成的 tar 文件存到 /backup/c6-v1/archive 目录里
- 这样可以减轻生产服务器的负载并极大地减少了网络传输
试编写一个脚本完成上述任务。
任务7: 基于快照工具(rsnapshot)的备份
要求:备份 /etc/ /home /srv /root
目录下的所有内容
- 修改 rsnapshot 的配置文件
/etc/rsnapshot.conf
- 假设这些目录都在某个逻辑卷中
- 在备份之前,对要备份的目录所在的逻辑卷创建快照
- 将快照卷挂装到
/mnt/snap/
相应的子目录下 - 备份完毕卸装快照卷并删除快照卷
- 要求保留 6个小时快照,7 个日快照,4个周快照,6个月快照
- 假设这些目录都在某个逻辑卷中
- 添加周期性任务配置文件
/etc/cron.d/rsnapshot
,配置使之符合备份频率要求
任务8: 实时同步
- 安装并配置
lsyncd
- 使 CentOS 7 VirtualBox 虚拟机 的
/var/www
目录与 容器 c6-v1 中的/var/www
目录保持同步
任务9: 故障排查
- 找回丢失的 root 口令
- 使用 gpt 分区设备的备份分区表修复其主分区表
- 使用通过 dd 命令备份的 DOS(MBR) 分区表镜像文件修复 DOS 分区表