Linux常見故障及修復方法


一:MBR扇區故障修復

【root@www~】#mkdir  /backup

【root@www~】#mount  /dev/sdb1  /backup /    ##新建個硬盤分區,並掛載到新建文件夾內

【root@www~】#dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1  ##備份MBR扇區512字節

【root@www~】#dd if=/dev/zero of=/dev/sda bs=512 count=1   ##往MBR扇區內覆蓋,模擬MBR故障

【root@www~】#reboot            //提前設置光盤引導重啟

進入緊急救援模式

Bash-4.1#mkdir  /backup     ##掛載點名字可以隨便起名,不做要求

Bash-4.1#mount /dev/sdb1  /backup  ##因為sda 是內核啟動的地方無法讀取

Bash-4.1#ls  /backup

Lost+found   sda.mbr.bak

Bash-4.1#dd if=/backup/sda.mbr.bak of=/dev/sda bs=512  count=1  ##寫入扇區,完成修復

Bash-4.1#reboot

 

二.GRUB引導故障

1.MBR中的grub引導程序遭到丟失,重啟顯示“grub>”提示符

方法一:嘗試手動輸入(不建議)

【root@www~】#mount /dev/sdb1 /backup/

【root@www~】# cd /boot/grub2/

【root@www~】#cp grub.cfg  /backup/

【root@www~】#mv grub.cfg grub.cfg.bak   ##模擬丟失

【root@www~】#cat /boot/grub2/grub.cfg    ##查看內核版本等,並記下來

【root@www~】#reboot

Greb>省略

2 MBR中的grub引導程序遭到破壞,重啟顯示

 

三.遺忘root密碼 並修改

方法一。

進入緊急救援模式

Bash-4.1#passwd root 

即可修改密碼

方法二

按e  進入

 

按下 ctrl+x  進入單用戶模式

輸入  passwd root  即可修改

exec  /sbin/init 退出單用戶模式

方法三

進入單用戶模式

輸入  vim /etc/shadow   把密文 全刪了  沒有  密碼  登錄設置

 

四,誤刪/root目錄 恢復方法

root@www~】#rm -rf /boot/       ##模擬實況

進入緊急救援模式

Bash-4.1#chroot /mnt/sysimage    ##切換硬盤

Bash-4.1#mkdir /media/

Bash-4.1#mount /dev/sr0  /media

Bash-4.1# rpm -ivh  /media/Packages/kernel-3.10.0.229.e17.x86 64.rpm  --force(看情況加)

Bash-4.1#ls boot 

Bash-4.1# grub2-install /dev/sda

Bash-4.1# grub2-mkconfig -o /boot/grub2/grub.cfg(grub2 mkconfig>/boot/grub2/grub.cfg也可以用這個)

Bash-4.1#sync

Bash-4.1#reboot

五.文件系統修復

[root@localhost ~]# fdisk  /dev/sdb

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4  ##模擬損壞

[root@localhost ~]# mount /dev/sdb1 /data/

mount: /dev/sdb1 寫保護,將以只讀方式掛載

mount: 文件系統類型錯誤、選項錯誤、/dev/sdb1 上有壞超級塊、

       缺少代碼頁或助手程序,或其他錯誤

 

       有些情況下在 syslog 中可以找到一些有用信息- 請嘗試

       dmesg | tail  這樣的命令看看。

(若是沒損壞則成功掛載,損壞則出現以上情況)

[root@localhost ~]# fsck -y -t ext4 /dev/sdb1 (這是ext4文件系統恢復,若是xfs則命令:xfs_repair /dev/sdb1)

fsck,來自 util-linux 2.23.2

e2fsck 1.42.9 (28-Dec-2013)

ext2fs_open2: Bad magic number in super-block

fsck.ext4: 超級塊無效, trying backup blocks...

超級塊沒有needs_recovery標志,但是日志中沒有數據。

Recovery flag not set in backup 超級塊, so running 日志 anyway.

/dev/sdb1: 正在修復日志

第一步: 檢查inode,塊,和大小

第二步: 檢查目錄結構

第3步: 檢查目錄連接性

Pass 4: Checking reference counts

第5步: 檢查簇概要信息

 

/dev/sdb1: ***** 文件系統已修改 *****

/dev/sdb1: 11/655360 files (0.0% non-contiguous), 83137/2621440 blocks

[root@localhost ~]# mount /dev/sdb1 /data/  ##掛載成功

六.空間耗盡故障

[root@localhost ~]# fdisk /dev/sdb

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkdir /disk

[root@localhost ~]# mount /dev/sdb1  /maomao/

[root@localhost maomao]# df -i

文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點

/dev/sdb1                 655360      10   655350       1% /data

第二,創建多個文件,耗盡容量

[root@localhost ~]# cd /maomao/

[root@localhost maomao]# touch {1..115360} ##由於數量太大 就不創建滿了

[root@localhost maomao]# df -i

文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點

/dev/sdb1                 655360  115370   539990      18% /data

第四,修復磁盤耗盡故障

[root@localhost maomao]# sudo find /maomao -type f -size 0 -exec rm {} \;

(遍歷尋找0字節的文件,並刪除)

也可以格式化

[root@localhost maomao]# df -i

文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點

/dev/sdb1                 655360      10   655350       1% /data

 

也可以改變inode大小

[root@localhost ~]# fdisk /dev/sdb

[root@localhost ~]# mkfs.ext3 /dev/sdb1 -N 500000
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
501760 inodes, 4194304 blocks
209715 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=4294967296
128 block groups
32768 blocks per group, 32768 fragments per group
3920 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@localhost ~]# mkdir /aa
[root@localhost ~]# mount /dev/sdb1 /aa
[root@localhost ~]# df -i
文件系統 Inode 已用(I) 可用(I) 已用(I)% 掛載點

/dev/sdb1 501760 11 501749 1% /aa

七.磁盤壞道故障修復

[root@localhost ~]# badblocks -sv /dev/sdb    (檢查是否有壞道)

正在檢查從 0 到 41943039的塊

Checking for bad blocks (read-only test): done                                                

Pass completed, 0 bad blocks found. (0/0/0 errors)

(當有硬盤壞道時,通常在dmesg輸出的信息中會有 Buffer I/O error,)

2. 邏輯壞道修復方法

①、badblocks -s -w /dev/sda END START (END代表需要修復的扇區末端,START代表需要修復的扇區起始端)
②、fsck -a /dev/sda

修復后再用badblocks -s -v -o /root/bb.log /dev/sda監測看是否還有壞道存在,如果壞道還是存在的話說明壞道屬於硬盤壞道。硬盤壞道要用隔離方法,首先記錄監測出的硬盤壞道然后分區的時候把硬盤壞道所在的扇區分在一個分區(大小一般大於壞扇區大小),划分出的壞道分區不使用即可達到隔離的目的

3. 0磁道壞道和硬盤壞道(准備換硬盤)

0磁道壞道的修復方法是隔離0磁道,使用fdsk划分區的時候從1磁道開始划分區。

如果是硬盤壞道的話,只能隔離不能修復

 方法二

檢查命令:

[root@localhost ~]# badblocks -s -v -o /root/bb.log /dev/sda

檢查 /home 是否有壞道,則命令如下:

[root@localhost ~]# badblocks -s -v -o /root/bb-home.log /dev/mapper/centos-home

邏輯壞道修復方式

下面是badblocks在/dev/mapper/ centos-home e分區檢查出的壞道列表:

217874591

217874592

217874593

217874594

217874595

先備份數據

[root@localhost ~]# dd if=/dev/mapper/centos-home 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM