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

linux中/etc/fstab文件删除或修改了,导致系统无法启动的更多相关文章

  1. Oracle修改系统参数导致系统无法启动对pfile文件恢复。

    1.当前现象:Oracle启动报错ORA-27102 [oracle@JYDB1 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Prod ...

  2. Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较 分区表位置

    本文主要讲解Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的作用以及不同之处. 转自http://haohaozhang.blog.51cto.com/917 ...

  3. Linux中环境变量文件及配置

    Linux中环境变量文件及配置   一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...

  4. Linux中环境变量文件及配置(转载)

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

  5. reinstall_xbt: Linux中如何查看文件的最初创建时间

    Linux中如何查看文件的最初创建时间 与文件相关的几个时间: 1.访问时间,读一次这个文件的内容,这个时间就会更新.比如对这个文件使用more命令.ls.stat命令都不会修改文件的访问时间.   ...

  6. Linux中如何查看文件的最初创建时间

    查看 一个文件的 最初创建时间: Linux中如何查看文件的最初创建时间  linux     目前Linux没有直接查看创建文件的命令,你只能通过文件是否被修改过来进行判断. //查看代码stat  ...

  7. Linux中/etc/passwd文件与/etc/shadow文件解析.

    此文章转载自"慧可",用来学习. 1. /etc/passwd文件 1.1 /etc/passwd文件内容格式 用户名: 密码 : uid  : gid :用户描述:主目录:登陆s ...

  8. Linux中加入用户、删除用户时新手可能遇到的问题

    Linux中加入用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     加入用户     #sudo us ...

  9. Linux中环境变量文件

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

随机推荐

  1. spring源码深度解析-2功能扩展

    容器功能的扩展ApplicationContext用于扩展BeanFactory中现有的功能.究竟多出了哪些功能,进一步探索.写法上:BeanFactory bf = new XmlBeanFacto ...

  2. 扩展Date的DateAdd方法--计算日期

    Date.prototype.DateAdd = function(strInterval, Number) { var dtTmp = this; switch (strInterval) { ca ...

  3. JAVA多线程和并发基础面试问答

    转载: JAVA多线程和并发基础面试问答 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对 ...

  4. js获取随机数

    js 获取随机数方法如下: 1.Math.random()表示 结果为0-1间的一个随机数(包括0,不包括1) : 返回指定范围的随机数(m-n之间)的公式 Math.random()*(n-m)+m ...

  5. CentOS 6.x启动时网卡eth0未激活

    简述 安装CentOS 6.x操作系统后,开机时发现没有网络,最后发现系统启动时未激活网卡 - 因为只有在激活状态的网卡才能去连接网络,进行网络通讯. 简述 激活网卡eth0 激活网卡eth0 执行& ...

  6. easyui的基本用法

    之前有用过extjs,最近发现easyui和fineui和extjs比较类似,并且稍微简单一点,所以考虑使用. 以下是项目中的具体简单应用 function callback2d(data) {//d ...

  7. 笔记5:QQ群聊天机器人

    之前经常在别人群里看到有自动回复消息的机器人. 功能有好多,可以玩各种游戏.觉得还蛮有意思的.. 于是就去请教别人怎么弄得,但是他们都说得好复杂,好高大上,无非就是不想让别人弄 本人是个不会轻易放弃的 ...

  8. Android客户端向服务器端发送数据的流程(1)

    原理: android客户端通过使用org.apache.http.impl.client.DefaultHttpClient类来发送数据; 方法介绍: HttpClient是android中提供的一 ...

  9. 开源牛人 zcbenz

    事情是这样的,微软推出了Visual Studio Code,我很好奇他怎么做跨平台的,所以就找找资料,在他的网站中是这么描述的: Architecturally, Visual Studio Cod ...

  10. python 将数据随机分为训练集和测试集

    # -*- coding: utf-8 -*- """ Created on Tue Jun 23 15:24:19 2015 @author: hd "&qu ...