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來引導系統啓動


[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配置文件

#設置爲光盤啓動,進行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

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

插入光盤進入急救模式

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

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扇區損壞

[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扇區恢復過來

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節點的異常

[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  #現在可以創建

  作爲一個合格的運維人員,系統的關鍵文件要提前先做好備份操作,以免發生“亡羊補牢,爲時已晚”的情況發生。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章