十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Swap 交换空间 + 系统启动 + 故障排错|曼巴精神打磨 Linux 运维救命基本功

Swap 交换空间 + 系统启动 + 故障排错|曼巴精神打磨 Linux 运维救命基本功 文章目录一、Swap 交换空间内存不够硬盘来凑存储器金字塔原理Swap 到底是啥查看内存与交换空间Swap 大小参考Swap 实操全流程1. 创建 swap 分区2. 格式化交换空间3. 激活与查看4. 优先级设置5. 关闭与持久化二、CentOS7 启动全流程从加电到登录的九步运行级别与 target 对应三、忘记 root 密码两种方法直接重置方法 1rd.break推荐正统方案方法 2init/bin/bash四、/etc/fstab 引发的启动故障三种经典场景场景 1挂载点目录不存在场景 2设备名写错 / 不存在场景 3文件系统损坏五、GRUB2 配置与故障修复GRUB 配置别瞎改常用配置改菜单超时内核启动参数GRUB 菜单加密GRUB 故障修复故障 1引导程序损坏MBR 被清故障 2内核文件 vmlinuz 丢了六、拓展磁盘加密与灵魂拷问LUKS 磁盘加密灵魂拷问1. 为啥内核 vmlinuz 和 initramfs 要分开2. 为啥不直接挂载真正的根启动写在最后ManWhat can I say兄弟们运维最怕啥系统起不来、root 密码忘、内存跑满直接炸业务。今天把Swap 交换空间管理、CentOS7 启动全流程、root 密码重置、fstab 启动故障、GRUB2 排错五大块硬骨头啃透全是机房现场救命的本事打开 CentOS7 跟着练点赞收藏反复看关键时刻真能救场一、Swap 交换空间内存不够硬盘来凑存储器金字塔原理计算机存储就是一分钱一分货速度越快容量越小越贵速度越慢容量越大越便宜。从快到慢排成金字塔CPU 寄存器 → CPU 高速缓存 → 主存内存 → 辅助存储器硬盘、U 盘层层缓存取长补短用最低的成本凑出最好的性能。Swap 到底是啥Swap 就是交换空间说白了就是内存不够硬盘来凑和 Windows 的虚拟内存 pagefile.sys 一个德行。内存满了内核把暂时不用的内存页写到硬盘的 swap 区腾出内存给前台程序程序要用到换出去的数据再从 swap 读回内存纯纯救急方案swap 在硬盘上速度比内存慢几个量级真要性能还是得加内存条查看内存与交换空间free -m # 以MB为单位看着舒服输出字段记清楚Mem 行物理内存total 总容量、used 已用、free 空闲、buff/cache 缓存Swap 行交换空间total 总大小、used 已用、free 空闲Swap 大小参考生产别瞎设按内存大小来2G 以下内存swap 设内存的 2 倍2G~8G 内存swap 和内存一样大8G~64G 内存至少 4G swap64G 以上至少 4G够兜底就行要开休眠hibernate的话swap 得比内存还大要存下整个内存的数据。Swap 实操全流程1. 创建 swap 分区用 parted 划个分区类型设为 linux-swapparted /dev/sdb mklabel gpt parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 20492. 格式化交换空间mkswap /dev/sdb13. 激活与查看swapon /dev/sdb1 # 激活swap swapon -s # 查看所有激活的swap设备4. 优先级设置多个 swap 的时候可以设优先级值越大优先级越高优先用高优先级的。swapon -p 4 /dev/sdb1不设优先级的话系统按顺序用第一个用完才用第二个。5. 关闭与持久化swapoff /dev/sdb1 # 临时关闭开机自动激活写进/etc/fstabUUIDxxx swap swap pri4 0 0swapon -a # 一键激活fstab里所有swap swapoff -a # 全部关闭曼巴忠告生产环境 swap 别关极端情况能防进程 OOM 被杀也别设太大大量用 swap 的时候系统会卡成狗该加内存就加内存。二、CentOS7 启动全流程从加电到登录的九步系统启动不是黑盒一步步清清楚楚排错才能精准定位。加电自检BIOS/UEFI 跑 POST 自检初始化硬件按启动顺序找启动磁盘引导接手读磁盘 MBR 主引导扇区把控制权交给 GRUB2 引导程序GRUB 菜单加载 grub.cfg 配置显示系统选择菜单选哪个内核启动加载内核加载内核 vmlinuz 和 initramfs 临时文件系统到内存内核初始化内核识别硬件initramfs 提供驱动第一个进程 PID 1 诞生systemd加载目标systemd 加载默认运行目标 target系统初始化读 /etc/fstab 挂载文件系统启动系统服务启动服务激活所有开机自启的服务终端登录启动 getty弹出登录提示符运行级别与 target 对应传统 SysVinit 的 0-6 运行级别CentOS7 用 target 对应核心记四个表格级别对应 target作用0-关机1rescue.target单用户模式root 直接登录修系统、改密码用3multi-user.target完全多用户文本模式服务器默认5graphical.target图形化多用户模式带桌面6-重启常用命令systemctl isolate multi-user.target # 切到文本模式 systemctl get-default # 看默认启动级别 systemctl set-default multi-user.target # 改默认启动级别三、忘记 root 密码两种方法直接重置密码忘了别慌不用重装系统GRUB 里改个参数就能重置。方法 1rd.break推荐正统方案启动时在 GRUB 菜单按e编辑启动项找到linux16开头的行末尾加rd.break按Ctrlx启动进入紧急 shell把根重新挂载为读写mount -o remount,rw /sysroot切换到真正的根系统chroot /sysroot改 root 密码echo 新密码 | passwd --stdin root关键一步SELinux 环境下必须打标记不然启动不了touch /.autorelabel两次 exit 退出系统自动重启新密码登录方法 2init/bin/bash同样编辑启动项linux16 行尾加init/bin/bashCtrlx 启动直接进 bash把根重挂载为读写mount -o remount,rw /删掉 root 密码进去再设passwd -d root执行 systemd 继续启动exec /usr/lib/systemd/systemd曼巴忠告只要是 SELinux 开着的系统改完密码一定要touch /.autorelabel不然重启完 SELinux 拦着你进不去系统经典中的经典坑四、/etc/fstab 引发的启动故障三种经典场景fstab 写错了系统直接启不来三种场景挨个排。场景 1挂载点目录不存在现象系统正常启动自动帮你创建挂载点目录一般不翻车。场景 2设备名写错 / 不存在现象启动找不到设备等 1 分 30 秒超时直接进 emergency 急救模式解决输入 root 密码进急救模式vim /etc/fstab把错的行注释掉或者改对exit继续启动就行。场景 3文件系统损坏现象启动尝试修复文件系统失败后进急救模式解决xfs_repair /dev/sdb1 # xfs文件系统修复修完 exit 继续启动。曼巴忠告生产环境 fstab 里优先用 UUID别用 /dev/sda1 这种设备名磁盘顺序变了、加了新盘设备名可能变直接启动失败。UUID 是唯一的永远不变。五、GRUB2 配置与故障修复GRUB 配置别瞎改记住铁律别直接改 /boot/grub2/grub.cfg这文件是系统自动生成的手改了下次更新内核直接给你覆盖白改。正确姿势改/etc/default/grub全局配置改/etc/grub.d/里的脚本然后执行grub2-mkconfig -o /boot/grub2/grub.cfg生成新配置常用配置改菜单超时vim /etc/default/grub GRUB_TIMEOUT5 # 改成5秒 grub2-mkconfig -o /boot/grub2/grub.cfg内核启动参数GRUB_CMDLINE_LINUX里加参数rhgb开图形化启动界面quiet减少启动日志只显示重要信息debug开详细启动日志排错的时候用net.ifnames0 biosdevname0网卡名改成传统 eth0不是 ens33 那种GRUB 菜单加密不想别人随便改启动项、进单用户模式给 GRUB 加个密码。grub2-mkpasswd-pbkdf2 # 生成密码哈希把哈希写到/boot/grub2/user.cfg生成配置生效。以后编辑启动项就得输用户名密码。GRUB 故障修复故障 1引导程序损坏MBR 被清现象开机找不到引导直接黑屏提示没有启动设备解决拿系统光盘启动选Troubleshooting→Rescue a CentOS system进入救援模式chroot 到硬盘上的系统chroot /mnt/sysimage重装 GRUB 引导grub2-install /dev/sda两次 exit 重启搞定。故障 2内核文件 vmlinuz 丢了现象启动提示找不到内核文件卡 GRUB 里解决光盘进救援模式重装内核 rpm 包或者从别的同版本系统拷一个过来。六、拓展磁盘加密与灵魂拷问LUKS 磁盘加密怕别人拔了硬盘直接读数据用 LUKS 加密整个分区。yum install cryptsetup -y cryptsetup luksFormat /dev/sdb1 # 初始化加密会清数据 cryptsetup open /dev/sdb1 crypt_disk # 打开映射输密码 mkfs.xfs /dev/mapper/crypt_disk # 格式化映射设备 mount /dev/mapper/crypt_disk /mnt # 挂载使用开机要输密码才能读盘物理拿了硬盘也读不了数据安全拉满。灵魂拷问1. 为啥内核 vmlinuz 和 initramfs 要分开内核是系统骨架只管核心功能initramfs 是临时工具箱装驱动、工具。分开灵活内核升级不用改驱动驱动更新不用换内核启动更快内核体积小加载解压快适配性强不同硬件换个 initramfs 就行内核通用2. 为啥不直接挂载真正的根启动真根在硬盘上啊内核刚起来的时候硬盘驱动、LVM、加密这些都没加载根本认不出根分区在哪。initramfs 就是先搭个临时系统把驱动加载了、LVM 激活了、加密解密了把根设备准备好再挂载真正的根顺理成章。写在最后ManWhat can I say交换空间调内存、启动流程懂原理、密码忘了解锁、启动故障排错这些都是运维的基本功也是现场救火的真本事。系统起不来的时候别慌从 GRUB 到 fstab从单用户到救援模式一步步排查总有办法。一定要虚拟机亲手复现调 swap、切运行级别、重置 root 密码、故意写错 fstab 看启动故障、重装 GRUB 引导每个坑都踩一遍比背十页笔记都管用。万丈高楼平地起底层原理搞懂了排错运维直接快人一步。后续持续更新 Linux 实战干货欢迎点赞收藏关注一起持续打怪升级Mamba out
返回列表