• centos/rocky/redat 8 删除swap分区,重启后无法进入系统


    title: centos/rocky/redat 8 删除swap分区,重启后无法进入系统
    date: 2022-10-21 16点23分
    tags: [centos,linux,rocky,redhat]
    category: 运维

    博客文章图

    介绍

    由于centos 被红帽收购后,centos 8 刚出一年就要“夭折”了,变成了centos stream,现在centos 8 的接替版本有不少发行版如rocky linux 、almalinux(这两个发行版三大云服务都已经支持了)… 扯远了。
    之前写过一篇centos 7 版本删除swap分区后需要做的操作,本来想着在8 版本上也能通用但失算了,所以来记录一下踩的坑。

    删除swap分区

    先检查一下swap内存,

    [root@template-rocky8 ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1722         187        1289           8         245        1377
    Swap:          1639           0        1639
    
    • 1
    • 2
    • 3
    • 4

    找到对应的分区

    从下面能看到是/dev/mapper/rl-swap硬盘分区(顺带提一嘴,/dev/mapper/ 这个开头的都是LVM管理的硬盘,好处可以自行了解。)

    [root@template-rocky8 ~]# cat /etc/fstab | grep -v "#"
    
    /dev/mapper/rl-root     /                       xfs     defaults        0 0
    UUID=1636f04f-505e-458c-b46d-b8719d16bac3 /boot                   xfs     defaults        0 0
    UUID=B056-5CAB          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
    /dev/mapper/rl-swap     none                    swap    defaults        0 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    临时禁用swap

    [root@template-rocky8 ~]# swapoff -v /dev/mapper/rl-swap 
    swapoff /dev/mapper/rl-swap
    [root@template-rocky8 ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1722         186        1268           8         266        1377
    Swap:             0           0           0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    删除LVM的Logical Volume,LV(逻辑卷)

    检查一下lv的名称,你会发现有多个名称,如/dev/mapper、/dev/rl,下面命令查看,发现是通过软连接实现,都指向了/dev/dm-1、/dev/dm-0上

    [root@template-rocky8 ~]# lvdisplay 
      --- Logical volume ---
      LV Path                /dev/rl/swap
      LV Name                swap
      VG Name                rl
     .........
       
      --- Logical volume ---
      LV Path                /dev/rl/root
      LV Name                root
      VG Name                rl
     .........
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    [root@template-rocky8 ~]# ls -lht /dev/mapper/
    total 0
    lrwxrwxrwx. 1 root root       7 Oct 21 16:08 rl-swap -> ../dm-1
    lrwxrwxrwx. 1 root root       7 Oct 21 15:17 rl-root -> ../dm-0
    crw-------. 1 root root 10, 236 Oct 21 15:17 control
    [root@template-rocky8 ~]# ls -lht /dev/rl/
    total 0
    lrwxrwxrwx. 1 root root 7 Oct 21 16:08 swap -> ../dm-1
    lrwxrwxrwx. 1 root root 7 Oct 21 15:17 root -> ../dm-0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    删除swap分区

    [root@template-rocky8 ~]# lvremove /dev/rl/swap 
    Do you really want to remove active logical volume rl/swap? [y/n]: y
      Logical volume "swap" successfully removed.
    
    • 1
    • 2
    • 3

    更新/etc/fstab文件

    更新后的文件,如需对比请看前文。

    [root@template-rocky8 ~]# cat /etc/fstab  | grep -v "#"
    /dev/mapper/rl-root     /                       xfs     defaults        0 0
    UUID=1636f04f-505e-458c-b46d-b8719d16bac3 /boot                   xfs     defaults        0 0
    UUID=B056-5CAB          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
    
    [root@template-rocky8 ~]# systemctl daemon-reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    grub 更新

    修改 /etc/default/grub

    更改前

    [root@template-rocky8 ~]# cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap"
    GRUB_DISABLE_RECOVERY="true"
    GRUB_ENABLE_BLSCFG=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    更改后,删除了于swap分区相关的路径(/dev/mapper/rl-swap、rd.lvm.lv=rl/swap)。

    [root@template-rocky8 ~]# cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR=“ ( s e d ′ s , r e l e a s e . ∗ (sed 's, release .* (seds,release.,g’ /etc/system-release)”
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT=“console”
    GRUB_CMDLINE_LINUX=“crashkernel=auto resume=rd.lvm.lv=rl/root”
    GRUB_DISABLE_RECOVERY=“true”
    GRUB_ENABLE_BLSCFG=true

    发现bug,更新一下grub,如果不将resume删除每次重启都会检查硬盘。

    [root@template-rocky8 ~]# cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rl/root"
    GRUB_DISABLE_RECOVERY="true"
    GRUB_ENABLE_BLSCFG=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    重建grub配置

    如何区分区是legacy 模式还是UEFI,具体看/sys/firmware/efi 这个目录是否存在,如果不存在则是legacy,反之则是UEFI。

    检查系统安装模式
    [root@template-rocky8 ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
    UEFI
    
    • 1
    • 2
    legacy BIOS mode(传统模式安装的系统)
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
    • 1
    UEFI BIOS mode(UEFI安装的系统)

    本文中为UEFI,注意不同发行版在/…/EFI/这个目录名称是不同的,若是redhat则是/boot/efi/EFI/redhat/grub.cfg

    [root@template-rocky8 ~]# grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
    Generating grub configuration file ...
    Adding boot menu entry for EFI firmware configuration
    done
    
    • 1
    • 2
    • 3
    • 4

    验证

    重启验证

    [root@template-rocky8 ~]# init6
    
    • 1

    选择对应的内核
    查看启动时grub配置
    中间可能会检查一下硬盘,需要一定时间。
    正常进入系统

    参考资料

    redhat 8.0 产品文档 14.7章节,为swap删除LVM2逻辑卷 ,吐槽一下8的文档还没更新完成,里面缺少了更新grub的配置
    redhat 7.0 产品文档 15.2章节,删除交换空间

  • 相关阅读:
    【JMeter】JMeter压测过程中遇到Non HTTP response code错误解决方案
    Keras中reset_states对stateful的影响探究
    MIUI13 USB调试Android应用失败INSTALL_FAILED_USER_RESTRICTED
    SQL及数据库基础知识点总结
    冲量在线出席2022第五届中国信息技术应用创新大会,同与会嘉宾分享基于信创隐私计算一体机促进数据要素市场化的解决方案
    ORACLE游标详解
    单片机进阶---PCB开发之照葫芦画瓢(二)
    频域分析实践介绍
    c语言 2.0
    docker容器健康状态健康脚本
  • 原文地址:https://blog.csdn.net/chinazzb/article/details/127448909