linux中/etc/fstab文件刪除或修改了,導致系統無法啟動


  在linux中,/etc/fstab文件是磁盤掛載的問題,若該文件不小心給修改了,或者被刪除了,那么就會導致系統無法重啟。因為/etc/fstab文件是記錄磁盤掛載的信息,若該文件出現了問題,那么對應的主目錄(/)和(/boot)以及swap的磁盤將無法掛載,所以這個文件對於linux系統來說是相當重要的。

  我犯的錯誤是:我在對hadoop集群進行文件配置的時候,在一台主機上對/etc/fstab文件進行修改,修改好了之后,准備分發給其他主機,我開始以為fstab文件的內容是一樣的,於是我就該文件分發給其他主機上,並且覆蓋了其他主機原來的fstab,完了之后,我就重啟其他主機,發現其他主機無法掛載硬盤,導致系統無法重啟。於是就想到,每個主機里面的fstab文件內容是不一樣的。因此我將犯了致命的錯誤。於是我就得想辦法恢復這些主機上的fstab文件。網上google了一下。發現還是有辦法解決的。

在這里得說明一下,幸好我有一台主機是完好無損的,這樣子我可以參照這個完好無損的主機來修改其他主機的fstab文件。修改的方法如下:

1、網上搜了一下,大部分說是要進入BIOS后進行linux resuce模式。但我在這里介紹一下簡單的方式:那就是重新制作/etc/fstab文件。制作的方法就是里喲個完好無損主機的fstab文件。因此將完好無損主機上的fstab文件分發給所有的主機。

2、既然要重新制作fstab文件,那么需要對fstab文件的內容進行了解,我的fstab的問價內容如下:該文件可以分為三個部分。

  

#
# /etc/fstab
# Created by anaconda on Tue Jun 30 23:29:58 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#第一部分(這是關鍵部分)
UUID=16fef5b5-a9cc-4d6f-8d3f-0081546ffb04 /                       ext4    defaults        1 1
UUID=6f352ae4-e53a-4e32-8129-369c6ba24e9a /boot                   ext4    defaults        1 2
UUID=adf600ad-ab03-482f-ae6f-fb80e973da1e swap                    swap    defaults        0 0


#第二部分
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


#第三部分
//192.168.2.246/Share /mnt/share cifs  default,auto,username=administrator,password=Passw0rd!

/dev/sdb1  /mnt/hdb ext4 defaults 0 0
/dev/sdc1  /mnt/hdc ext4 defaults 0 0
/dev/sdd1  /mnt/hdd ext4 defaults 0 0
/dev/sde1  /mnt/hde ext4 defaults 0 0 
/dev/sdf1  /mnt/hdf ext4 defaults 0 0

 

  其中,第一部分最為關鍵,因為第一部分就是涉及到系統文件磁盤的掛在的問題,這就是我們需要修改的地方;第二部分和第三部分所有主機都一樣。

3、針對第一部分,我們首先可以通過命令:fdisk -l 查看系統中對應的是哪個磁盤掛載  / 、/boot 以及swap這三個目錄。

  3.1、我通過執行 fdisk -l 命令后可以看到如下內容:

  

  通過上圖我們可以明確看到 swap對應的是磁盤/dev/sda3,那么/dev/sda1和/dev/sda2與/和 /boot對應關系我們不清楚。於是我通過查看完好無損的主機上的對應關系,發現/dev/sda2對應的是 /   ;/dev/sda1對應的是/boot。

4、接下來我們需要知道的是/etc/fstab文件中UUID表示的是什么意思?通過網上搜索,答案如下:

  如果你有多塊硬盤,硬盤在電腦中的順序變化的時候,硬盤相同的名稱可能代表着不同的硬盤分區,如果你是從 USB 設備啟動,與其他 USB 設備的插入順序也會導致分區識別的困難。

  這個時候 UUID 就派上用場了,UUID 全稱是 Universally Unique Identifier,也就是說,每個分區有一個唯一的 UUID 值,這樣就不會發生分區識別混亂的問題了。

5、如何查看UUID呢?(紅色的表示的是UUID)

  通過瀏覽 /dev/disk/by-uuid/ 下的設備文件信息。執行如下命令:

  # ls -l /dev/disk/by-uuid/

  ------

  lrwxrwxrwx 1 root root 10 10-13 09:14 0909-090B -> ../../sdb5

  lrwxrwxrwx 1 root root 10 10-13 09:13 7c627a81-7a6b-4806-987b-b5a8a0a93645 -> ../../sda4

  .....

 6、那么接下來就是可以修改其他主機的fstab文件了:

  6.1、重啟之后會需要你輸入密碼進入root權限下的界面

  6.2、此時文件系統是只讀模式,若需要修改/etc/fstab文件,則需要執行:mount -o remount rw /   命令。

  6.3、此時就可以修改/etc/fstab文件了。執行: vi  /etc/fstab

  6.4、修改沒一個主機的UUID的值即可。

  6.5、reboot重啟,ok了。

 


免責聲明!

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



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