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 1
LABEL=/boot /boot ext3 defaults 1 2
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
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开机引导的时候,按键盘上的e 就可以进入进入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也无法挂载根目录。。。
任何操作都是无效。。
方法一:使用单用户模式
单用户下执行mount -o remount,rw / 不行。因为这个方法是要加载fstab文件的,而我那个文件被我改名了,所有这个系统中根本不存在这个文件。。
可见第一种使用单用户模式的方法是行不通的。
方法二:使用救援模式
①将boot修改成光盘启动,直接按esc键到boot:界面输入linux rescue 回车进入救援模式。
注:centos 6 内存至少要1G,如果是虚拟机选择rescue也要将内存加至1G以上
②选择语言为默认english即可
③选择默认键盘为us
④默认即可(什么类型的媒体包含救援镜像)本地DVD
⑤网络设置选择no
按照以下的图操作即可,我怀疑是因为我两块磁盘的原因,有些差异,具体我再做实验。
进入rescue模式后,创建一个test目录,将/目录的设备挂载,我这系统默认为/sda3,将文件修改回来后,重启。注意修改下boot启动项哦!
OK,复活啦!!这是我的宝贝机器哦,死了可得惨了。。
转载于:https://blog.51cto.com/chocolee/1392229