温馨提示×

Debian Swapper启动顺序

小樊
39
2026-01-01 03:57:51
栏目: 智能运维

概念澄清

  • swapper在Linux中通常指内核的交换机制/进程(如 kswapd),负责在内存紧张时将不活跃的页换出到swap;它并非一个会在启动流程里按顺序“启动”的普通服务,因此不存在固定的“启动顺序”。
  • 若你指的是**swap(交换分区/交换文件)**在系统启动时的启用顺序,那属于系统初始化阶段对文件系统的挂载与激活流程,下文给出定位与调整方法。

启动阶段与swap的关系

  • 典型流程概览:
    1. BIOS/UEFI 自检并加载引导器(如 GRUB
    2. GRUB 加载内核与可选的 initramfs
    3. 内核初始化,启动第一个用户态进程(传统 SysV initsystemd
    4. 执行早期初始化脚本(如 /etc/inittab → /etc/init.d/rcS),挂载本地文件系统
    5. 进入默认运行级别,执行对应 /etc/rcN.d(或 systemd 目标)中的服务
    6. 登录管理器/终端就绪
  • 与 swap 的关系要点:
    • 只要 /etc/fstab 中对 swap 条目设置了“defaults”或在 initramfs 中内置了 resume 配置,swap 会在文件系统就绪后被自动激活,无需在 rc 脚本里显式“启动”。
    • 因此,swap 的“启用时机”通常位于“本地文件系统已挂载”之后、用户登录之前,具体顺序由系统的初始化系统(SysV 或 systemd)统一调度。

如何查看与调整swap的启用顺序

  • 查看当前启用情况
    • 查看是否启用及优先级:swapon --showcat /proc/swaps
    • 查看挂载表:cat /etc/fstab
  • 调整顺序的两种常见方式
    • SysV 场景(/etc/rc?.d 顺序)
      • 原则:脚本按 Sxx 的数字从小到大执行;若要让某服务在 swap 之后启动,可将其 S 号设得比 swap 的 S 号更大。
      • 工具:update-rc.d <服务名> start 99 2 3 4 5 . stop 01 0 1 6 .(示例把服务放在最后启动)
    • systemd 场景(target 依赖)
      • 原则:通过 Wants/After 依赖确保服务在 swap.target 之后启动。
      • 示例(在服务的 unit 文件中):
        [Unit]
        Description=My Service
        After=swap.target
        Wants=swap.target
        
  • 临时控制(不改动启动顺序)
    • 临时关闭/开启:sudo swapoff -a / sudo swapon -a
    • 注意:若根文件系统位于 LVM/加密卷且配置了 resume=,在 initramfs 阶段可能需要 swap,贸然关闭可能影响 resume 或休眠。

补充说明

  • 传统上 /etc/rcS.d 会先执行系统级初始化(含挂载本地文件系统),随后才进入各运行级别的 /etc/rcN.d 脚本;因此只要 swap 在 fstab 中正确配置,它会在文件系统就绪后被自动激活,通常不需要额外的启动顺序调整。

0