一天一点学习Linux之文件系统的开机挂载

来源:岁月联盟 编辑:exp 时间:2011-10-24

 

昨天,我们介绍的都是手动执行命令来实现挂载,如果你常常需要挂载某些文件系统,那么我如何让系统在启动时就自动挂载,应该怎样做呢?下面介绍两种方法:

方法1.

把挂载的命令放在/etc/rc.d/rc.local中。

这个虽然是一种方法,但不建议这么做,因为我们的系统中有统一规划的解决方案,所以建议用第二种方法。

 

 

方法2.

修改配置文件/etc/fstab,这个文件就是设置在启动时加挂的文件系统,下面我们就一起来研究一下/etc/fstab

 

[root@yufei ~]# cat /etc/fstab

此处省略多行无用信息

UUID=8e4f6141-20f9-4f5a-aad4-bac048374152 /                       ext4    defaults        1 1

UUID=c70cd6a4-09cd-4aea-ba94-f3641df4e981 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

这个内容和您的系统有关系,最上面两行的是我们磁盘文件系统,而后面的四行是虚拟文件系统,我们不关心这个。

 

这个文件里面分成六个字段。这六个字段是很重要的,所以我们要带大家一起来认识一下。

 

第一栏:磁盘设备的文件名或设备的卷标或者是设备的UUID。#关于这些信息的查询可以通过tune2fs 或者是dumpe2fs来查询。

 

[root@yufei ~]# tune2fs -l /dev/sdb1 |more

[root@yufei ~]# dumpe2fs /dev/sdb1 |more

只显示有用信息

Filesystem volume name:   opsers_tech

Last mounted on:          /mnt

Filesystem UUID:          994ae2b7-d28a-4f7c-9464-c1763860378b

所以这一栏可以有下面三种表示方法,效果都是一样的,都是表示的是同一个设备。

/dev/sdb1

LABEL=opsers_tech

UUID=994ae2b7-d28a-4f7c-9464-c1763860378b

第二栏:挂载点。#强烈建议用一个空目录

 

第三栏:文件系统类型。#在手动挂载时可以让系统自动测试挂载,但在这个文件中必须要手动写入文件系统的类型。文件系统类型主要有:ext3、ext4、vfat、ntfs、nfs、smbfs、swap等等。

 

第四栏:文件系统参数。#这个和我们前面介绍的mount是一样的,在这里再做一个简单的介绍,因为这个很重要。

 

async/sync 异步/同步:设定磁盘的运作方式,预设为async(效能较佳),是把内容写入日志,然后保存到磁盘。

 

auto/noauto 自动/非自动:当下达mount -a 时,此文件系统是否会被主动测试挂载。预设为auto。

 

rw/ro 读写/只读:如果你想要分享的数据是不给用户随意变更的,就可以设置成ro的,无论在此文件系统的文件是否有w 权限,都是无法写入内容。

 

exec/noexec 可被执行/不可被执行:限制在此文件系统内是否可以进行执行的操作,如果此文件系统是纯粹用来储存资料的,那么可以设定为noexec 会比较安全。

 

user/nouser 允许/不允许其他用户挂载:正常情况下,系统为了安全,不希望一般身份的用户能使用mount命令的,因为太不安全了,默认是设定为nouser。

 

suid/nosuid 具有/不具有suid权限:该文件系统是否允许SUID的存在。因为这个也和系统的安全相关。如果不是执行文件存放的目录,可以设定为nosuid来取消这个功能。

 

usrquota 注意不要拼错了。这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。

 

grpquota 和上面一样,支持用户组的磁盘配额。

 

defaults 同时具有rw, suid, dev, exec, acl, async参数。

 

而我们基本上预设使用defaults即可。

 

第五栏:能否被dump备份指令使用。#dump是一个用来备份的命令,我们可以通过fstab指定哪个文件系统必须要进行dump备份。0代表不要做dump备份,1代表要每天进行dump的动作,2也代表其他不定日期的dump备份。通常这个数值不是0就是1。

 

第六栏:是否用fsck 检验扇区:#开机的过程中,系统默认会用fsck检验文件系统是否完整。不过,某些文件系统是不需要检验的,例如swap以及特殊文件系统/proc、/sys等等。0是不要检验,1表示最先检验(一般只有根目录会设定为1),2也是要检验,只是1是最先,2是其次才进行检验。这一项只针对操作系统的分区有效果,其他的文件系统根据需要来设置,因为他不影响系统的引导。

 

特别提醒1:因为/etc/fstab这个文件和系统启动有很大的关系,如果你一不小心,把里面的内容写错了,可能导致系统无法启动。为了防止这个问题的发现,当你增加了相应的挂载内容后,最好用

 

mount -a命令进行一下测试,在没有错误的情况,才能保证下次在系统启动的时候是正常的。

 

特别提醒2:如果我在此文件中修改了相应的挂载参数的话,你需要用mount -o remount来重新使新的参数生效。而mount -a则是加载不了已经挂载了文件系统的参数信息。可以用mount命令查看到参数的信息。

最后我们把昨天格式化出来的分区写到/etc/fstab文件中。在开始编辑文件前,我再给大家介绍一个很实用的工具blkid,他会显示出系统中所有的文件系统的信息,包括设备名、卷标、UUID以及文件系统类型。下面的看效果

 

 

 

[root@yufei ~]# blkid

/dev/sda1: UUID="8e4f6141-20f9-4f5a-aad4-bac048374152" TYPE="ext4"

/dev/sda2: UUID="c70cd6a4-09cd-4aea-ba94-f3641df4e981" TYPE="swap"

/dev/sdb1: LABEL="opsers_tech" UUID="994ae2b7-d28a-4f7c-9464-c1763860378b" TYPE="ext4"

/dev/sdb2: SEC_TYPE="msdos" UUID="7F29-8A7A" TYPE="vfat"

 

[root@yufei ~]# vim /etc/fstab

/dev/sdb1               /mnt                    ext4    defaults        0 0

UUID=7F29-8A7A          /test                   vfat    defaults        0 0

 

[root@yufei ~]# mount -a

[root@yufei ~]# mount -a

没有错误提示,说明我们的配置是没有错误的,那么在下次系统启动后就不会有错误了,而导致系统启动不了。

 

启动系统后,用df -T来查看挂载在系统中的磁盘信息情况

 

 

 

[root@yufei ~]# df -T

Filesystem    Type   1K-blocks      Used Available Use% Mounted on

/dev/sda1     ext4    15118728   6980432   7370296  49% /

tmpfs        tmpfs      255784         0    255784   0% /dev/shm

/dev/sdb1     ext4     1033560     40980    939568   5% /mnt

/dev/sdb2     vfat      409424         0    409424   0% /test

用mount命令可以查看系统中的挂载情况

 

[root@yufei ~]# mount

/dev/sda1 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sdb1 on /mnt type ext4 (rw)

/dev/sdb2 on /test type vfat (rw)

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

none on /proc/fs/vmblock/mountPoint type vmblock (rw)

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

/etc/fstab 是开机时的配置文件,实际上文件系统的挂载是记录在/etc/mtab 与/proc/mounts 这两个文件中的。如果万一在/etc/fstab中写入的数据错误时候,会导致无法顺利开机成功,而进入单人维护模式,而这时候/ 是只读的状态,要想修改/etc/fstab,就要用到下面这个常用的系统修复命令了。

 

mount -o remount,rw /

摘自 羽飞博客