目錄
案例1:GRUB引導故障
案例2:文件系統只讀故障
案例3:OOM Killer觸發
案例4:系統啟動卡住(initramfs損壞)
案例5:磁盤空間耗盡
案例6:SSH登錄緩慢
案例7:邏輯卷無法擴展
案例8:內核模塊沖突
案例9:NTP時間不同步
案例10:SELinux導致服務異常
案例11、root密碼遺忘
學習建議
案例1:GRUB引導故障
故障現象: 系統啟動卡在"GRUB>"提示符,無法進入系統 原因分析:
-
GRUB配置文件損壞(/boot/grub/grub.cfg)
-
引導文件被誤刪或磁盤損壞 解決步驟:
-
在GRUB命令行依次執行:
set root=(hd0,msdos1) linux /vmlinuz root=/dev/sda1 initrd /initramfs.img boot
-
進入系統后執行:
grub2-mkconfig -o /boot/grub2/grub.cfg
案例2:文件系統只讀故障
故障現象: 無法創建文件,提示"Read-only file system" 排查過程:
-
dmesg | grep -i error
發現磁盤I/O錯誤 -
smartctl -a /dev/sda
檢查磁盤健康狀態 解決方案: -
卸載分區:
umount /dev/sda1
-
強制修復:
fsck -y /dev/sda1
-
重新掛載:
mount -a
案例3:OOM Killer觸發
故障現象: 關鍵進程突然被終止,系統日志出現"Killed process" 分析工具:
-
grep -i 'killed process' /var/log/messages
-
free -h
查看內存使用情況 -
vmstat 1
監控內存交換 優化方案:
-
調整oom_score_adj:
echo -100 > /proc/[PID]/oom_score_adj
-
修改sysctl.conf:
vm.overcommit_memory = 2 vm.overcommit_ratio = 80
案例4:系統啟動卡住(initramfs損壞)
故障現象: 啟動時卡在"Loading initial ramdisk" 緊急處理:
-
進入救援模式(troubleshooting)使用re
-
重建initramfs:
chroot /mnt/sysimage dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
案例5:磁盤空間耗盡
故障現象: 服務異常,df顯示使用率100% 快速定位:
-
lsof -n | grep deleted
查找未釋放空間的進程 -
du -xh --max-depth=1 / | sort -hr
定位大文件 典型場景:
-
/var/log/journal 日志膨脹:
journalctl --vacuum-size=100M
-
/tmp目錄堆積:
rm -rf /tmp/*.tmp
案例6:SSH登錄緩慢
故障現象: SSH連接延遲超過10秒 排查步驟:
-
ssh -vvv user@host
查看詳細日志 -
檢查DNS配置:
UseDNS no
in sshd_config -
關閉GSSAPI認證:
GSSAPIAuthentication no
-
strace -p [sshd_PID]
跟蹤系統調用
案例7:邏輯卷無法擴展
故障現象: lvextend后文件系統未擴容 正確操作流程:
lvextend -L +10G /dev/vg01/lv_data resize2fs /dev/vg01/lv_data ?# 對ext4文件系統 xfs_growfs /data ? ? ? ? ? ?# 對XFS文件系統
注意事項:
-
確保物理卷有足夠空間:
vgs
查看Free PE -
在線擴容無需卸載
案例8:內核模塊沖突
故障現象: 系統更新后網卡失效 解決方案:
-
lsmod | grep igb
查看加載模塊 -
modinfo igb
檢查模塊信息 -
rmmod igb && modprobe igb
重載驅動 -
回滾驅動:
dnf reinstall kmod-igb-5.4.0
案例9:NTP時間不同步
故障現象: 日志出現"Clock skew detected"警告 排錯流程:
-
ntpq -pn
查看時間源狀態 -
chronyc sources -v
檢查chrony同步狀態 -
systemctl restart chronyd
-
硬件時鐘同步:
hwclock --systohc
案例10:SELinux導致服務異常
故障現象: Apache無法訪問自定義目錄 診斷方法:
-
tail -f /var/log/audit/audit.log | grep httpd
-
sealert -a /var/log/audit/audit.log
解決方案:
# 臨時解決 setenforce 0 # 永久方案 semanage fcontext -a -t httpd_sys_content_t "/webroot(/.*)?" restorecon -Rv /webroot
案例11、root密碼遺忘
在RHEL/CentOS 7及更新版本中,如果忘記root密碼,可以通過以下步驟重置(需物理/虛擬控制臺訪問權限):
方法原理
通過修改GRUB2啟動參數進入單用戶模式,繞過身份驗證直接獲取root權限
詳細操作步驟
-
重啟系統并中斷引導
# 當系統啟動到GRUB菜單時,快速按下方向鍵阻止自動引導 # 選擇默認內核條目(通常第一條)按 `e` 鍵進入編輯模式
-
修改內核參數
# 在linux16行(或linux行)末尾追加: rd.break enforcing=0 ? # 修改后的完整行示例: linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/rhel-root rw rd.break enforcing=0
-
進入緊急模式
# 按 Ctrl+X 啟動系統,進入緊急救援模式的shell環境 # 此時文件系統掛載在/sysroot(只讀模式)
-
重新掛載文件系統
# 重新掛載為讀寫模式: mount -o remount,rw /sysroot
-
切換根目錄
chroot /sysroot
-
修改root密碼
# 此時已獲得完整root權限: passwd root # 輸入新密碼兩次(不會顯示輸入內容)
-
修復SELinux上下文
# 強制重新標記文件系統(重要!): touch /.autorelabel
-
退出并重啟
exit exit reboot
關鍵參數說明
參數 | 作用 |
---|---|
rd.break | 在內核加載初期中斷啟動流程 |
enforcing=0 | 臨時禁用SELinux強制模式 |
注意事項
-
磁盤加密系統:若啟用了LUKS加密,需先解密再操作
-
云服務器:部分云平臺需通過VNC或救援模式操作
-
時間控制:
.autorelabel
會導致首次重啟時間較長(約5-15分鐘) -
UEFI系統:可能需要關閉Secure Boot功能
-
審計日志:系統日志會記錄密碼修改操作(/var/log/audit/audit.log)
替代方案(適用于不同場景)
-
init方法:
# 在GRUB的linux行后追加: init=/bin/bash
-
systemd方法:
systemctl edit --force --full rescue.target
防范建議
-
配置sudo權限給普通用戶
-
使用密碼管理工具(如KeePass)
-
定期進行密碼備份(加密存儲)
-
啟用SSH密鑰認證+sudo組合驗證
該方法適用于:RHEL/CentOS 7/8/9、Oracle Linux 7+、Fedora 19+等使用systemd的系統
學習建議
-
每個案例配套實驗環境(VM快照)
-
故障模擬建議:
-
使用dd破壞文件系統頭
-
使用stress觸發OOM
-
手動刪除grub.cfg
-
-
考核方式:故障場景重現→學員排障→處理報告
附加資源推薦:
-
Linux Performance觀測工具集(perf, ftrace)
-
systemd-analyze分析啟動耗時
-
eBPF工具鏈(BCC工具包)