1./etc/fstab 文件介绍

/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。
当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

2.fstab文件示例

以下是CentOS5.X fstab文件:

<fie sysytem><mount point><type><options><dump><pass>

LABEL=/                 /                 ext3    defaults        1

LABEL=/boot             /boot            ext3    defaults        1 2

tmpfs                   /dev/shm         tmpfs   defaults       0

devpts                  /dev/pts         devpts  gid=5,mode=620  0

sysfs                   /sys              sysfs   defaults        0

proc                    /proc             proc    defaults        0

LABEL=SWAP-sda2         swap            swap    defaults        0 0

注:CentOS6.X 的/ ,/boot  swap设备用的是UUID。

UUID=b735fb57-4fc6-49b7-8fe7-19942c7415ea /                       ext4    defaults        1 1

UUID=64e6944c-7d54-4b47-9204-db65df339281 /boot                   ext4    defaults        1 2

UUID=b0357f1c-15c6-47f4-9859-5a910eaabae6 swap                    swap    defaults        0 0

3.fstab文件字段详解

第一个字段<fie sysytem>。这里用来指定你要挂载的文件系统的设备名称或块信息,也可以是远程的文件系统。做过嵌入式linux开发的朋友都可能知道 mount 192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (可以是其他IP)命令所代表的意义。它的任务是把IP为192.168.1.56的远程主机上的/home/nfs/目录挂载到本机的/mnt/nfs /目录之下。如果要把它写进/etc/fstab文件中,file system这部分应填写为:/192.168.1.56:/home/nfs/。
   如果想把本机上的某个设备(device)挂载上来,写法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一个串口硬盘的第一个分区,也可以是第一个SCSI硬盘的第一个分区,/dev/hda1表示第一个IDE硬盘的第一个分区,/dev/cdrom 表示光驱。
此外,还可以label(卷标)或UUID(Universally Unique Identifier全局唯一标识符)来表示。用label表示之前,先要e2label创建卷标,如:e2label /dir_1 /dir_2,其意思是说用/dir_2来表示/dir_1的名称。然后,再在/etc/fstab下按如下形式添加:LABEL=/dir_2 /dir_2 <type>   <options> <dump> <pass>。重启后,系统就会将/dir_1挂载到/dir_2目录上。对于UUID,可以用vol_id -u /dev/sdax来获取。CentOS 用blkid -s UUID命令。比如我想挂载第一块硬盘的第十一个分区,先用命令vol_id -u /dev/sda11 来取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然后在<file system>这个域上填写: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般会使用label,而Ubuntu linux 一般会用UUID。

第二个字段<mount point>。挂载点,也就是自己找一个或创建一个dir(目录),然后把文件系统<fie sysytem>挂到这个目录上,然后就可以从这个目录中访问要挂载文件系统。对于swap分区,这个域应该填写:none,表示没有挂载点。

第三个字段<type>。这里用来指定文件系统的类型。下面的文件系统都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。可以查看/proc/filesystems。

第四个字段<options>。这里用来填写设置选项,各个选项用逗号隔开。由于选项非常多,而这里篇幅有限,所以不再作详细介绍,如需了解,请用 命令 man mount 来查看。但在这里有个非常重要的关键字需要了解一下:defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async。

对于大多数系统使用"defaults"就可以满足需要。其他常见的选项包括: 
选项              含义 
ro    以只读模式加载该文件系统 
sync   不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 
user   允许普通用户加载该文件系统 
quota   强制在该文件系统上进行磁盘定额限制 
noauto  不再使用mount -a命令(例如系统启动时)加载该文件系统

第五个字段<dump>。此处为1的话,表示要将整个<fie sysytem>里的内容备份;为0的话,表示不备份。现在很少用到dump这个工具,在这里一般选0。

第六个字段<pass>。这里用来指定如何使用fsck来检查硬盘。如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。比如第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个分区。

 

注:对于本地文件系统一般放在fstab里做挂载,并且结尾的两列必须是0 0,不然可能会导致系统无法正常启动。

 

 

4.fstab文件如何修复

 

 

网上修复fstab的方法有两种:

 

1。进入Linux单用户模式

centos怎么让进入GRUB 菜单界面?
 Linux开机引导的时候,按键盘上的就可以进入进入GRUB菜单界面。
在出现GRUB引导画面时(CentOS(2.6.18-274**)),按字母e键,进入GRUB编辑状态。
把光标移动到kernel ...那一行,再敲入“e”进入命令行编辑,
kernel 一行的最后加上空格single,回车
敲入“b”,启动系统,即进入单用户模式,

执行 root# mount -o remount,rw /

然后/etc/fstab就可以修改了

2。用光盘进入Linux修复模式 (光盘启动按F2 接着输入linux rescue回车进入)

系统在rescue mode下,会将找到的linux系统(包括根目录、/boot/home等)挂载在/mnt/sysp_w_picpath
fstab文件改正确就行了

 

 

灾难重现:

 

非常奇特,我CentOS6.4系统无论怎么玩fstab文件,系统都能正常起来。但似乎是单用户模式,文件系统是只读的。

 

[root@angelT ~]# mount

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

 

我把fstab改名了,重启机器虽然能起来,但。。

新问题出现了,虽然可以进入系统,但是是只读状态,mount也无法挂载根目录。。。

wKiom1NDmG2APJ-iAAEA-SuILFk171.jpg

任何操作都是无效。。

wKioL1NDmFahaCapAAI3tDRPtOI122.jpg

 

方法一:使用单用户模式

单用户下执行mount -o remount,rw /  不行。因为这个方法是要加载fstab文件的,而我那个文件被我改名了,所有这个系统中根本不存在这个文件。。

wKioL1NDmGnhNlEzAACexX7OkB4311.jpg

可见第一种使用单用户模式的方法是行不通的。

 

方法二:使用救援模式

①将boot修改成光盘启动,直接按esc键到boot:界面输入linux rescue 回车进入救援模式。

注:centos 6 内存至少要1G,如果是虚拟机选择rescue也要将内存加至1G以上

 

 

②选择语言为默认english即可

wKioL1NDmH6ArSl6AAC8XnEw4lQ916.jpg

③选择默认键盘为us

wKioL1NDmIvz8sVYAACr8jfP5Xo132.jpg

④默认即可(什么类型的媒体包含救援镜像)本地DVD

wKiom1NDmMGDZn1EAAC5be_wHdw351.jpg

 

⑤网络设置选择no

wKiom1NDmOvSrg5ZAAB6PJLzHi4059.jpg

 

 

按照以下的图操作即可,我怀疑是因为我两块磁盘的原因,有些差异,具体我再做实验。

wKioL1NDmP2Bi3CuAAIq86R18cU335.jpg

 

wKioL1NDmRCi-TBxAACDmg_NWqc731.jpg

进入rescue模式后,创建一个test目录,将/目录的设备挂载,我这系统默认为/sda3,将文件修改回来后,重启。注意修改下boot启动项哦!

wKiom1NDmbXz4fwFAAK6uxrpTLo712.jpg

 

OK,复活啦!!这是我的宝贝机器哦,死了可得惨了。。

wKioL1NDmaXw_D3CAADvkXZp8ug401.jpg