美文网首页
修改根目录所在VG名称

修改根目录所在VG名称

作者: 迷鹿milu | 来源:发表于2019-07-25 20:27 被阅读0次

    修改根目录所在VG名称

    1 情况描述

    1. 第三方工程师修改 vg 名称导致系统无法启动
    2. 检查结果为系统进入维护模式(当前模式下无网络连接,第三方无法远程连接)
    3. 通过云平台控制台登录,修改回 vg 名称,此时重启系统应当无问题
    4. 帮忙修改 vg 名称为 vgdata,直接使用了 vgrename 修改,同时修改了 /etc/fstab 文件 但是系统无法启动,报错如下:
    报错

    2 解决思路

    1. 根据报错可以看到,grub 引导的时候找不到引导的 lvm 卷导致启动失败,那么除了 /etc/fstab 配置文件外还需要修改 grub 的相关配置
    2. 系统目前进入了 dracut 工具的紧急 shell 界面
    3. 通过 livedvd chroot 到当前根目录,修改 grub 配置文件,重启

    dracut :

    1. dracut创建虚拟磁盘映像,提供给内核,预加载块设备模块(例如 IDE,SCSI或者RAID),通过加载这些设备模块访问根文件系统
    2. 紧急 shell 界面的操作 man -7 dracut.cmdline

    3 操作流程

    3.1 vgrename 正确操作流程

    3.1.1 使用 vgrename 修改 VG 名称

    # vgs 
    
    VG     #PV #LV #SN Attr   VSize   VFree
    centos   1   1   0 wz--n- <19.51g    0
    
    # vgrename centos vgtest
    

    3.1.2 修改 fstab 文件

    # grep -v \# /etc/fstab
    
    /dev/mapper/vgtest-root /                       xfs     defaults        0 0                                     UUID=6747911d-d990-4169-bc40-45ff91c9f3a0 /boot                   ext4    defaults        1 2    
    
    # sed 's/centos-root/vgtest-root/g' /etc/fstab | grep vgtest
    
    /dev/mapper/vgtest-root /                       xfs     defaults        0 0
    

    3.1.3 grub2 修改内容说明

    # vi /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="rd.lvm.lv=vgtest/root rhgb quiet"                       # 就是在 menuentry 括号内的 linux16 项目后续的核心参数
    GRUB_DISABLE_RECOVERY="true"                                                # 取消救援菜单的制作
    

      修改 GRUB_CMDLINE_LINUX="rd.lvm.lv=vgtest/root rhgb quiet" 行,系统重启后可以使用 grub2-mkconfig -o /boot/grub2/grub.cfg 重建引导程序。

    # vi /boot/grub2/grub.cfg
    
    #
    # DO NOT EDIT THIS FILE
    ……              ## 略
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.el7.x86_64-advanced-7513d5e4-7cf6-427b-be9b-6f5afdfc255d' {
            load_video
            set gfxpayload=keep
            insmod gzio
            insmod part_msdos
            insmod ext2
            set root='hd0,msdos1'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  6747911d-d990-4169-bc40-45ff91c9f3a0
            else
              search --no-floppy --fs-uuid --set=root 6747911d-d990-4169-bc40-45ff91c9f3a0
            fi
            linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/vgtest-root ro rd.lvm.lv=vgtest/root rhgb quiet         ## 修改此行
            initrd16 /initramfs-3.10.0-693.el7.x86_64.img
    }
    menuentry 'CentOS Linux (0-rescue-83251c6729fc4a02b763e39714c43a2d) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-83251c6729fc4a02b763e39714c43a2d-advanced-7513d5e4-7cf6-427b-be9b-6f5afdfc255d' {
            load_video
            insmod gzio
            insmod part_msdos
            insmod ext2
            set root='hd0,msdos1'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  6747911d-d990-4169-bc40-45ff91c9f3a0
            else
              search --no-floppy --fs-uuid --set=root 6747911d-d990-4169-bc40-45ff91c9f3a0
            fi
            linux16 /vmlinuz-0-rescue-83251c6729fc4a02b763e39714c43a2d root=/dev/mapper/vgtest-root ro rd.lvm.lv=vgtest/root rhgb quiet         ## 修改此行
            initrd16 /initramfs-0-rescue-83251c6729fc4a02b763e39714c43a2d.img
    }
    if [ "x$default" = 'CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)' ]; then default='Advanced options for CentOS Linux>CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)'; fi;
    ### END /etc/grub.d/10_linux ###
    ……              ## 略
    ### END /etc/grub.d/41_custom ###
    

    3.1.4 重启系统

      重建引导配置文件

    grub2-mkconfig -o /boot/grub2/grub.cfg
    

    3.2 生产环境问题重现

    3.2.1 修改 VG 名称

    # vgs
    
    VG     #PV #LV #SN Attr   VSize   VFree
    vgtest   1   1   0 wz--n- <19.51g    0 
    
    # vgrename vgtest newvg
    
    Volume group "vgtest" successfully renamed to "newvg"
    

    3.2.2 修改 fstab 文件

    # sed 's/vgtest-root/newvg-root/g' /etc/fstab | grep newvg
    
    /dev/mapper/newvg-root /                       xfs     defaults        0 0
    

    3.2.3 重启系统

      报错完全一致

    报错模拟

    3.3 问题修复

      对 dracut 紧急 shell 不是很了解,这里采用 livedvd 修改 grub.cfg 文件

      没有合适的 livedvd 直接下载了 archlinux 的安装镜像来用(体积较小)

      重启主机,从 archlinux 的安装镜像启动

      挂载系统分区,修改相文件(此处修改 /mnt/boot/grub/grub.cfg 文件和 /mnt/etc/default/grub),修改内容见 3.1

    挂载

      重启系统,重建 grub 引导 grub2-mkconfig -o /boot/grub2/grub.cfg

    相关文章

      网友评论

          本文标题:修改根目录所在VG名称

          本文链接:https://www.haomeiwen.com/subject/popkrctx.html