• Linux 常见的trouble shooting故障排错


    Linux 常见的trouble shooting故障排错

    备份开机所必须运行的程序对一个运维人员来说是非常有必要的。在实际生产环境中,系统和数据基本都是安装在不同的硬盘上面,因为企业最关心的还是数据,系统崩溃了,最坏的方法就是重新安装系统,但是数据丢失了,那会直接给企业带来损失,如果系统和数据都放在同一个硬盘上面,那系统都进不去了,何谈数据。解决常见的trouble shooting,不要在系统出现故障的时候,想到的第一个就是重装系统。为解决常见的trouble shooting,首先必须先了解系统的启动流程。

    常见的trouble shooting:

    1.关于grub的故障

    a)grub.conf的配置文件的丢失

              故障系统信息

    系统开机时,直接出现grub提示符,表示你的grub的配置文件损坏或者已经丢失。

    思路:这种情况下,直接在grub提示符下,重新grub配置文件即可。

    怎样获知系统根的挂载点,一般用于RHEL6.x版本上面,5.x版本不需要指定根的路径。

    插入光盘选择第三个 Rescue,急救模式,或者连续按Esc键两次,在boot:提示符下面输入 linux rescue然后按Enter键。

    选择本地光盘

    选择Continue,继续。

    进入急救模式之后,系统会把你的真正的根系统挂载到/mnt/sysimage目录下面,如果你想进入真正的根choot /mnt/sysimage切换你真正的根目录

    2)boot分区损坏

    当系统的boot分区损坏时,系统也无法正常进入

    思路1:用一块新硬盘去接入到能进入系统的主机,且主机的内核版本信息,必须和坏掉系统boot分区的一样,为这块新的硬盘安装grub,且复制vmlinuz内核文件,initramfs内核镜像文件,然后建立grub的配置文件,在把这个新的硬盘接入到损坏boot分区的主机上面,用这个新硬盘的boot来引导系统启动

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    [root@Redhat6 boot]# fdisk  /dev/sdb  #为新添加的磁盘分区
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-2610, default 1314):
    Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):+50M
    Command (m for help): w
    [root@Redhat6 ~]# partprobe
    [root@Redhat6 ~]#mkfs -t ext4 /dev/sdb1  #格式化分区
    [root@Redhat6 ~]# mkdir /mnt/boot  #为新添加磁盘的分区建立一个挂载点
    [root@Redhat6 ~]# mount /dev/sdb1 /mnt/boot/
    [root@Redhat6 ~]# cd /mnt/boot/
    [root@Redhat6 boot]# ls
    lost+found
    [root@Redhat6 boot]# grub-install --root-directory=/mnt /dev/sdb #为新添加的硬盘安装grub
    Probing devices to guess BIOS drives. This may take a long time.
    Installation finished. No error reported.
    This is the contents of the device map /mnt/boot/grub/device.map.
    Check if this is correct or not. If any of the lines is incorrect,
    fix it and re-run the script `grub-install'.
    (fd0)   /dev/fd0
    (hd0)   /dev/sda
    (hd1)   /dev/sdb
    [root@Redhat6 boot]# ls
    grub  lost+found
    [root@Redhat6 boot]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/  #复制系统盘的内核文件到新添加的盘
    [root@Redhat6 boot]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img  /mnt/boot/ #复制系统盘的内核镜像文件到新添加的盘
    [root@Redhat6 boot]# ls
    grub                                 lost+found
    initramfs-2.6.32-358.el6.x86_64.img  vmlinuz-2.6.32-358.el6.x86_64

    把新的硬盘安装好grub分区后,接入到无法启动的主机上,作boot引导。

    思路2:进入急救模式,为系统安装grub,然后挂载光盘,把光盘里面的vmlinuz内核文件和initrd.img内核的镜像文件拷贝到boot目录下面,然后手动编辑grub配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #设置为光盘启动,进行Rescue模式
    bash-4.1#chroot /mnt/sysimage
    sh-4.1#mount /dev/cdrom /media
    sh-4.1#cd boot
    sh-4.1#grub-install --root-directory=/ /dev/sda  #为硬盘安装grub
    sh-4.1#cp /media/isolinux/vmlinuz /boot/vmlinuz-2.6.32-358.el6.x86_64 #复制光盘的内核文件,并改名
    sh-4.1#cp /media/isolinux/initrd.img /boot/initramfs-2.6.32-358.el6.x86_64.img #复制光盘的内核镜像文件,并改名
    sh-4.1#cat >> /boot/grub/grub.conf << EOF    #手动建立grub配置文件
    > default=0
    > timeout=5
    > title CentOS (2.6.32-358.el6.x86_64)
    > root (hd0,0)
    > kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root
    > initrd /initramfs-2.6.32-358.el6.x86_64.img
    > EOF
    sh-4.1#exit
    bash-4.1#reboot
    #然后更改启动项,设置为本地硬盘启动

    2、/etc/inittab文件丢失

    思路:查看inittab文件是由那个rpm包安装的,然后进入急救模式,挂载光盘重新安装rpm

    1
    2
    [root@Redhat5 ~]# rpm -qf /etc/inittab #查看RHEL5.x版本的inittab文件是由那个软件包安装的
    initscripts-8.45.42-1.el5

    插入光盘进入急救模式

    1
    2
    3
    4
    5
    6
    bash-4.1#chroot /mnt/sysimage
    sh-4.1#mount /dev/cdrom /media
    sh-4.1#cd /media/Packages/
    sh-4.1#rpm -ivh --replacepkgs initscripts-8.45.42-1.el5.rpm
    sh-4.1#exit
    bash-4.1#reboot

    3、bash损坏无法进入登录界面

    思路:查看bash命令是由那个rpm包安装的,然后进入急救模式,挂载光盘重新安装rpm

    1
    2
    3
    4
    5
    6
    bash-4.1#chroot /mnt/sysimage
    sh-4.1#mount /dev/cdrom /media
    sh-4.1#cd /media/Packages/
    sh-4.1#rpm -ivh --replacepkgs bash-4.1.2-14.el6.x86_64.rpm
    sh-4.1#exit
    bash-4.1#reboot

     

    4、遗忘root密码

    1)grub没有加密,修改root密码

              进入单用户模式设置密码即可

    2)、把密码添加到grub的配置文件启用内核镜像保护,修改root的密码

    3)、启用grub编辑保护,修改root的密码

     

    5、MBR扇区故障

      系统启动盘的MBR扇区损坏

    1
    2
    3
    [root@Redhat6 ~]# mkdir /mnt/backup
    [root@Redhat6 ~]# mount /dev/sdb1  /mnt/backup/
    [root@Redhat6 ~]# dd if=/dev/sda of=/mnt/backup/sda.mbr.bak bs=512 count=1 #备份系统盘的MBR扇区,一定是备份到另外的一块盘上面

    思路:进入急救模式,把之前备份的系统盘的MBR扇区恢复过来

    1
    2
    3
    4
    5
    6
    bash-4.1#chroot /mnt/sysimage
    sh-4.1#mkdir /dir #为备份有系统盘的MBR新建一个目录用于挂载
    sh-4.1#mount /dev/sdb1 /dir  #挂载带有备份文件的分区
    sh-4.1#dd if=/dir/sda.mbr.bak of=/dev/sda bs=512 count=1 #恢复备份数据
    sh-4.1#exit
    bash-4.1#reboot

    6、修复文件系统,修复inode节点的异常

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@Redhat6  /]# touch /mnt/backup/myfile
    touch: cannot touch "/mnt/backup/myfile" :device does not have space  #创建文件显示没有可用空间
    [root@Redhat6 /]# df -lh /dev/sdb1  #查看磁盘显示还有空间
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sdb1             9.9G  780M  8.9G   9% /mnt/backup
    [root@Redhat6  /]# df -i /dev/sdb1 #查看inode节点,发现以没有可用inode节点
    Filesystem            Inodes   IUsed   IFree IUse% Mounted on
    /dev/sdb1             655776   655776    0    100% /mnt/backup
    [root@Redhat6  /]#  find /mnt/backup/ -empty -a -type f -exec rm -rf {} ; #删除该分区为空的文件
    [root@Redhat6 /]# df -lh /dev/sdb1
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sdb1             9.9G  780M  8.9G   9% /mnt/backup
    [root@Redhat6  /]# touch /mnt/backup/myfile  #现在可以创建

      作为一个合格的运维人员,系统的关键文件要提前先做好备份操作,以免发生“亡羊补牢,为时已晚”的情况发生。

     

  • 相关阅读:
    Guava教程
    Spring Aop基于注解的实现
    简单易懂设计模式——策略模式
    Hibernate入门总结
    mybatis入门详解
    Mybatis【入门总结】
    手把手教你做一个缓存工具
    超简洁!利用easyExcel导出,读入Excel
    飞越面试官(四)--类加载过程
    飞越面试官(三)--JVM
  • 原文地址:https://www.cnblogs.com/sysk/p/4878069.html
Copyright © 2020-2023  润新知