在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了。