Linux 常見的trouble shooting故障排錯node
備份開機所必須運行的程序對一個運維人員來講是很是有必要的。在實際生產環境中,系統和數據基本都是安裝在不一樣的硬盤上面,由於企業最關心的仍是數據,系統崩潰了,最壞的方法就是從新安裝系統,可是數據丟失了,那會直接給企業帶來損失,若是系統和數據都放在同一個硬盤上面,那系統都進不去了,何談數據。解決常見的trouble shooting,不要在系統出現故障的時候,想到的第一個就是重裝系統。爲解決常見的trouble shooting,首先必須先了解系統的啓動流程。
linux
常見的trouble shooting:bash
1.關於grub的故障app
a)grub.conf的配置文件的丟失運維
故障系統信息ide
系統開機時,直接出現grub提示符,表示你的grub的配置文件損壞或者已經丟失。this
思路:這種狀況下,直接在grub提示符下,從新grub配置文件便可。加密
怎樣獲知系統根的掛載點,通常用於RHEL6.x版本上面,5.x版本不須要指定根的路徑。spa
插入光盤選擇第三個 Rescue,急救模式,或者連續按Esc鍵兩次,在boot:提示符下面輸入 linux rescue而後按Enter鍵。3d
選擇本地光盤
選擇Continue,繼續。
進入急救模式以後,系統會把你的真正的根系統掛載到/mnt/sysp_w_picpath目錄下面,若是你想進入真正的根choot /mnt/sysp_w_picpath切換你真正的根目錄
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/sysp_w_picpath 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 #而後更改啓動項,設置爲本地硬盤啓動
二、/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/sysp_w_picpath 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
三、bash損壞沒法進入登陸界面
思路:查看bash命令是由那個rpm包安裝的,而後進入急救模式,掛載光盤從新安裝rpm
bash-4.1#chroot /mnt/sysp_w_picpath 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
四、遺忘root密碼
1)、grub沒有加密,修改root密碼
進入單用戶模式設置密碼便可
2)、把密碼添加到grub的配置文件啓用內核鏡像保護,修改root的密碼
3)、啓用grub編輯保護,修改root的密碼
五、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/sysp_w_picpath 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
六、修復文件系統,修復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 #如今能夠建立
做爲一個合格的運維人員,系統的關鍵文件要提早先作好備份操做,以避免發生「亡羊補牢,爲時已晚」的狀況發生。