1. 程式人生 > >CentOS7啟動故障修復實驗

CentOS7啟動故障修復實驗

fstab systemd

故障詳情:/etc/fstab和/sbin/init以及/boot目錄(系統分區使用邏輯卷)
首先手動刪除/etc/fstab和/sbin/init文件以及/boot目錄下所有文件。
技術分享圖片
恢復思路:
1、由於/etc/fstab文件丟失會導致無法自動掛載分區,所以需要手動掛載,但是,由於使用了邏輯卷所以在掛載之前還要先加載邏輯卷。
2、掛載邏輯卷之後先手動修復/etc/fstab文件中的內容。並重啟
3、/sbin/init在Centos7中為/lib/systemd/systemd文件的軟鏈接,可以根據情況重建軟鏈接或修復systemd文件本身
4、恢復內核文件以及initramfsxxx.img文件
5、重建/boot目錄下文件
6、重建/boot/grub2/grub2.cfg
7、重啟測試
恢復過程。
以下操作全部都在救援模式
1./etc/fstab文件損壞進入救援模式的故障信息
技術分享圖片
先使用lvscan查看邏輯卷信息然後使用vgchange -ay啟用邏輯卷,然後使用mount 掛載根分區如下:
技術分享圖片

2.手動創建fstab文件。請確保目錄正確,參照以下內容:
技術分享圖片
其中
第一個字段為需要掛載的分區的設備路徑。通常lv設備的路徑在/dev/mapper下,可以通過文件名判斷是哪個分區,比如通常centos-root為根分區設備文件(是個軟鏈接)
第二個字段為掛載點
第三個字段為文件系統類型,後面的不用變動即可。各字段可以使用空格或者tab分割。
文件創建完成之後重啟繼續進入救援模式,如果在進入之後看到以下內容則表示fstab文件沒有問題

技術分享圖片
3.如果在centos7中只是/sbin/init文件損壞,只需要執行
ln /mnt/sysimage/lib/systemd/systemd /mnt/sysimage/sbin/init
重新建立軟鏈接即可,如果是Centos6或者Centos7中的systemd文件損壞可以通過安裝upstart-xxx.rpm或者systemd-xxx.rpm包進行修復,安裝之前需要先掛載光盤,註意關盤路徑,安裝命令如下:

rpm -ivh /mnt/cdrom/Packages/upstart-xxx.rpm --root=/mnt/sysimage/ --force
或者
rpm -ivh /mnt/cdrom/Packages/systemd-xxx.rpm --root=/mnt/sysimage/ --force


4.內核文件和initramfs-xxx.img可以通過安裝kernel包重建
rpm -ivh /mnt/cdrom/Packages/kernel-xxx.rpm --root=/mnt/sysimage/ --force

註意以上操作全部都沒有使用chroot進行切根操作。

5./boot目錄下的文件大多數都可以通過一條命令解決除了grub.cfg,在Centos6中更可以手寫該文件,不過7中提供了對應的命令可以直接生成grub.cfg文件內容。
首先使用chroot /mnt/sysimage進行切根
然後使用grub2-install /dev/sda安裝grub2
使用grub2-mkconfig > /boot/grub2/grub.cfg生成grub.cfg
技術分享圖片

重啟,看看成果吧

CentOS7啟動故障修復實驗