上面多次提到配置文件 /etc/fstab,系统启动时会挂载分区,就是通过这个配置文件配置的。

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

#

# /etc/fstab

# Created by anaconda on Mon Dec 12 03:18:03 2016

#

# 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=51a8587e-7445-4ea8-85ef-bad6a1336748 /                       ext4    defaults        1 1

UUID=37d8fe31-1cd8-4179-9aaa-1ee58284891d /boot                   ext4    defaults        1 2

UUID=1ac357d6-a735-468f-ba6c-1eabad6aa0f2 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

第一列是分区的标识,可以写分区的LABEL,也可以写分区的UUID,当然也可以写分区名(/dev/sda1);

第二列挂载点

第三列分区的格式

第四列mount的一些挂载参数,一般情况下,直接写defaults即可;

第五列数字表示是否被dump备份,是的话,这里就是1,否则就是0;

第六列开机时是否自检磁盘。1,2表示检测,0表示不检测。在Redhat/centos中,这个1,2还有个说法,/分区必须设为1,而且整个fstab中只允许出现一个1,这里有一个优先级说法。1比2优先级高,所以先检测1,然后再检测2,如果有多个分区需要开机检测那么都设置成2,1检测完了后会同时去检测2。

列常用的选项:

async/sync:async表示和磁盘和内存不同步,系统每隔一段时间把内存数据写入磁盘中,而sync则会实时同步内存和磁盘中数据;

auto/noauto:开机自动挂载/不自动挂载;

default:按照大多数永久文件系统的缺省值设置挂载定义,它包含了rw,suid,dev,exec,auto,nouser,async

ro:按只读权限挂载;

rw:按可读可写权限挂载;

exec/noexec:允许/不允许可执行文件执行,但前五不要把根分区挂在为noexec,那就无法使用系统了,连mount命令都无法使用了,这是只有重新做系统了;

user/Nouser:允许/不允许root外的其他用户挂载分区,为了安全考虑请使用Nouser;

suid/nosuid:允许/不允许分区有suid属性,一般设置为nosuid;

usrquota:启动使用者磁盘配额模式,磁盘配额会针对用户限定他们使用的磁盘额度;

grquota:启动群组磁盘配额模式;

学完/etc/fstab后,我们就可以自己修改这个文件,增加一行来挂载新增分区。

例如,增加这一行:

LABEL=TEST        /newdir            ext4         defaults            0 0

然后卸载掉已经挂载的/dev/sdb5

[root@qiangzi ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

使用df -h命令查看已经成功卸载 /dev/sdb5 下面执行命令 mount -a

[root@qiangzi ~]# mount -a

[root@qiangzi ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

/dev/sdb5       989M   18M  921M   2% /newdir

此时多出来一个/dev/sdb5挂载到了/needir下。这就是mount -a 命令执行的结果,这个-a选项会把/etc/fstao中出现的所有磁盘分区挂载上。

[root@qiangzi ~]# umount /newdir

[root@qiangzi ~]# mount -t ext4 /dev/sdb5 /newdir

[root@qiangzi ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

/dev/sdb5       989M   18M  921M   2% /newdir

-t:选项用来指定挂载的分区类型,默认不指定的会自动识别。

-o:选项用来指定挂载的分区有哪些特性,即上面“/etc/ftab”配置文件中第四列的那些。我们经常这样使用-o选项:

[root@qiangzi ~]# mkdir /newdir/dir1

[root@qiangzi ~]# mount -o remount,ro,sync,noauto /dev/sdb5 /newdir

[root@qiangzi ~]# mkdir /newdir/dir2

mkdir: 无法创建目录"/newdir/dir2": 只读文件系统

由于指定了ro参数,所以该分区只读了。通过mount命令也可以看到/dev/sdb5有ro选项:

[root@qiangzi ~]# mount

/dev/sda3 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)

/dev/sda1 on /boot type ext4 (rw)

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

/dev/sdb5 on /newdir type ext4 (ro,sync)

下面重新挂载,让它回复读写。

[root@qiangzi ~]# mount -o remount /dev/sdb5 /newdir

[root@qiangzi ~]# mkdir /newdir/dir2

[root@qiangzi ~]# ls /newdir/

dir1  dir2  lost+found