Linux fstab文件问题解决(百分百解决)

更新时间:2023-05-23 10:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux fstab文件问题解决(百分百解决)

fstab文件详解

1 fstab文件的作用

文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过mount

/directoryname命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。 2. fstab文件格式

下面是/etc/fatab文件的一个示例行:

fs_spec fs_file fs_type fs_options fs_dump fs_pass /dev/hda1 / ext2 defaults 1 1

fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdaXN,X是IDE设备通道(a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN。对于NFS情况,格式一般为:

,例如:`knuth.aeb.nl:/。对于procfs,使用`proc来定义。

fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。

fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。 codepage国家语言代码页 iocharset字符集 fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用defaults就可以满足需要。其他常见的选项包括: 选项 含义

ro 以只读模式加载该文件系统

sync 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度

user 允许普通用户加载该文件系统

quota 强制在该文件系统上进行磁盘定额限制

noauto 不再使用mount -a命令(例如系统启动时)加载该文件系统 fs_dump - 该选项被dump命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0

3. 示例文件 # /etc/fstab

/dev/hda8 swap swap defaults 0 0 /dev/hda9 / ext2 defaults 1 1

/dev/hda6 /wine vfat defaults,codepage=936,iocharset=cp936 0 0 /dev/hda7 /winf vfat defaults,codepage=936,iocharset=cp936 0 0 /dev/hdb /cdrom iso9660 noauto,user 0 0 none /proc proc defaults 0 0

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

fstab中存放了与分区有关的重要信息,其中每一行为一个分区记录,每一行又可分为六个部份,下面以/dev/hda7 / ext2 defaults 1 1为例逐个说明:

1. 第一项是您想要mount的储存装置的实体位置,如hdb或/dev/hda6。

Linux fstab文件问题解决(百分百解决)

2. 第二项就是您想要将其加入至哪个目录位置,如/home或/,这其实就是在安装时提示的挂入点。 3. 第三项就是所谓的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如ext2,可以参见/prco/filesystems说明。 4. 第四项就是您mount时,所要设定的状态,如ro(只读)或defaults(包括了其它参数如rw、suid、exec、auto、nouser、async),可以参见「mount nfs」。

5. 第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。

6. 第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它皆可视需要设定,内定值是0。

/etc/fstab内容主要包括六项: 例如:打印出中间的两行内容,如下 LABEL=/ / ext3 defaults 1 1

/dev/sda2 /mnt/D/ vfat defaults 0 0

第一列:设备名或者设备卷标名,(/dev/sda10 或者 LABEL=/) 第二列:设备挂载目录 (例如上面的“/”或者“/mnt/D/”) 第三列:设备文件系统 (例如上面的“ext3”或者“vfat”) 第四列:挂载参数 (看帮助man mount)

对于已经挂载好的设备,例如上面的/dev/sda2,现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设备,remount 这个参数无效) #mount /mnt/D/ -o remount,ro (改defaults为ro) 为了安全起见,可以指明其他挂载参数,例如:

noexec(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了! nodev(不允许挂载设备文件)

nosuid,nosgid(不允许有suid和sgid属性) nouser(不允许普通用户挂载)

第五列:指明是否要备份,(0为不备份,1为要备份,一般根分区要备份)

第六列:指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)

如果想开机就自动挂载(mount)上,可以在/etc/fstab上添加如下几行:

/dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 同时也解决了中文文件名的乱码问题,我的fstab文件如下,仅供参考: LABEL=/12 / ext3 defaults 1 1

none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda4 swap swap defaults 0 0

/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

/dev/hda1 /mnt/c vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 /dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 /dev/hda6 /mnt/e vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 /dev/hda7 /mnt/f vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 /dev/hda8 /mnt/g vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0 fstab解读

Linux fstab文件问题解决(百分百解决)

从做到右:

/dev/device mount-point type rules dump fsck

1. /dev/device: 不用说了吧?例如,/dev/hda1 为M$-Win9x下的c:盘。 2. mount-point: 挂载点。例如,把/dev/hda1挂到/mnt/mywinc下。 3. type: ext3, vfat, ......就是要挂上的文件系统类型。 4. rules:

auto: 开机自动挂接;

default, noauto: 开机不自动挂接; nouser: 只有root可挂; ro: 只读挂接;

rw: 可读可写挂接;

user: 任何用户都可以挂接;

5. dump: 备份;0为从不备份,或显示上次至今备份之天数; 6. fsck: 启动时fsck检查顺序,0为不检查, “/”永远为1; 我的就是:

/dev/hda1 /mnt/mywinc vfat default 0 0 在fstab中加载分区 mkdir /mnt/win_c vi /etc/fstab :::::add:::::

/dev/hda1 /mnt/win_c vfat default,pagecode=936,iocharset=cp936 0 0 /etc/fastab释疑 1. fstab文件的作用

文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount

/directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。 2. fstab文件格式

下面是/etc/fatab文件的一个示例行:

fs_spec fs_file fs_type fs_options fs_dump fs_pass /dev/hda1 / ext2 defaults 1 1

fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdaXN,X是IDE设备通道(a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN。对于NFS情况,格式一般为:,例如:`knuth.aeb.nl:/'。对于procfs,使用`proc'来定义。 fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。

fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。 fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用"defaults"就可以满足需要。其他常见的选项包括: 选项 含义

ro 以只读模式加载该文件系统

sync 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度

user 允许普通用户加载该文件系统

quota 强制在该文件系统上进行磁盘定额限制

noauto 不再使用mount -a命令(例如系统启动时)加载该文件系统

fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置

Linux fstab文件问题解决(百分百解决)

该字段为0

fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 3. 示例文件 # /etc/fstab

/dev/hda9 swap swap defaults 0 0 /dev/hda1 / ext2 defaults 1 1 /dev/hda5 /home ext2 defaults 1 1 /dev/hda6 /usr ext2 defaults 1 1

/dev/hda7 /usr/local ext2 defaults 1 1 /dev/hda8 /var ext2 defaults 1 1

/dev/hdb /cdrom iso9660 noauto,user 0 0 none /proc proc defaults 0 0

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

fstab文件丢失或内容被清空问题解决

环境:redhat 4

1、将fstab文件备份为fstab-bak,然后直接删除fstab文件,并重启机器,命令如下图

2、重启过程中报如下错误,大概意思是fstab文件丢失,系统进入到修复模式,按ctrl+D重启,直接输入密码则进入修复模式,改模式内很多命令无法使用

Linux fstab文件问题解决(百分百解决)

3、检查发现fstab文件不存在,这个情况下系统文件系统还是没问题的,挂载正常

4、使用fdisk -l查看详细的文件系统分区情况,并通过e2label命令来检查各个分区所对应挂在的目录,这点非常重要

Linux fstab文件问题解决(百分百解决)

从上面的命令得出/dev/sda1挂载在/boot目录 /dev/sda2,/dev/sdb1都是LVM类型的卷管理形式,所以他们俩是无法通过e2label 来了解挂载在哪个目录的,继续往下看

5、先尝试在/etc/目录下建立fstab文件,出现一点小错误,文件系统为只读,需要重新挂载根分区,使其可读写,同事将上图步骤中发现 查到的 /dev/sda1挂载到/boot目录

6、由于一些其他的像swap暂时还不知道对应的文件系统,所以在重新编辑fstab文件的时候,把能了解到的先写进去,以下两条是必须得写,最

好不能少,否则系统启动还是会出问题的,下面第一条是通过步骤3得知的,第二条是步骤4得知,这里需要纠正一点,第二条应该是:

Linux fstab文件问题解决(百分百解决)

LABEL=/boot /boot 最后重新启动系统

ext3 defaults 1 2, 以下步骤中的第二条都要改成这样的

7、启动过程会有如下提示,不要管它,让其自行启动

8、最后系统能正常进入,但是打开终端时报错:There was an error creating the child process for this terminal

Linux fstab文件问题解决(百分百解决)

9、进入到系统桌面,打开/etc/fstab文件(按打开WINDOWS的某个盘文件一样),对该文件进行编辑,加入下面三,四两行(两个none这里) 注意,这里系统启动完后自动添加了/dev/hdc和/dev/fd0,一个是光驱,一个是软驱,不用理会,编辑完后保存,再次重启系统

如下是启动过程

Linux fstab文件问题解决(百分百解决)

10、启动完成,系统和终端都能成功进入

Linux fstab文件问题解决(百分百解决)

11、现在需要做的是把swap交换分区给添加到fstab文件里,但是偶找了好久也无法查询到各个逻辑卷对应的是哪个目录,为保险起见,我通过

LINUX自带的Logic manager来检查,果然可以查到

Applications--System settings--Logical Volume Management--Volume Groups--VolGroup00--VolGroup00 Logical view--LogVol01--Edit properties

就可以出现如下图的情况,发现这个逻辑卷对应的就是swap分区,这里因为前面df -h就能看出 LogVol00对应的是/,所以直接能判断剩下的这个应该就是对应 swap了

Linux fstab文件问题解决(百分百解决)

12、重新编辑在第二行和第三行间插入如下三行内容 /dev/mapper/VolGroup00-LogVol01 .... none /proc proc ....

none /sys sysfs .... 这个要看自己的系统是否有这个目录,若没有则可以不用添加

13、系统重启后,正常进入系统,问题搞定。

Linux fstab文件问题解决(百分百解决)

说明;上面fstab文件里的LABEL=/boot / ext3 defaults 1 2中的 “/”应该改成/boot 若之前有备份fstab文件则可以直接拷贝成fstab,然后重启系统即可解决问题

本文来源:https://www.bwwdw.com/article/1md4.html

Top