在上篇博文中,我们将系统中新增加的第2块硬盘分成了4个分区:/dev/sdb1、/dev/sdb4、/dev/sdb5、/dev/sdb6,其中/dev/sdb4作为扩展分区是无法实际使用的,可用的实际分区只有3个。
要想使用这些分区,还必须要经过最后一步操作——挂载。挂载是Linux系统与Windows系统在存储设备操作方式上的一个非常重要的区别,也是今天要学习的主要内容。
在Linux中,整个系统只有一个根目录,不允许有第二个以外的根目录,因此在Linux系统中要访问某个存储设备,就必须先将该设备挂载到根文件系统的某个目录下,然后才能像正常访问目录一样访问存储设备中的资源。

RHEL6入门系列之二十,文件系统的挂载_第1张图片

 在安装Linux系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载,如“/”分区、“boot”分区等,对于后来新增加的硬盘分区、优盘、光盘等设备,就必须由管理员手动进行挂载。挂载一个分区时,必须为其指定一个目录作为挂载点,用户通过这个目录就可以访问设备中的文件、目录数据。

一、 挂载文件系统

挂载文件系统使用命令mount,该命令的格式如下:

mount [-t 文件系统类型] 存储设备 挂载点

其中,文件系统类型通常可以省略(由系统自动识别),存储设备对应分区的设备文件名(如“/dev/sdb1”)或网络资源路径,挂载点为用户指定用于挂载的目录。

挂载点必须是一个已经存在的目录,一般在挂载之前使用mkdir命令先创建一个新的目录,如果把现有的目录当做挂载点,则这个目录最好为空目录。

 

1、挂载硬盘分区

 

例:将“/dev/sdb1”挂载到“/data”目录下。

RHEL6入门系列之二十,文件系统的挂载_第2张图片

这里用到了一个df命令,顺便将这个命令介绍一下。df命令主要用来了解系统中已经挂载的各个文件系统的磁盘使用情况,它的常用选项有“-h”、“-T”,使用“-h”选项将显示更易读的容量单位,“-T”选项用于显示文件系统的类型。这个命令在磁盘管理中是要经常用到的。

下面再继续将/dev/sdb5这个已经被格式化成FAT32文件系统的分区挂载到/mailbox目录下。

RHEL6入门系列之二十,文件系统的挂载_第3张图片

2、挂载光盘

在挂载外围设备时一般习惯性地将挂载点放在/mnt目录下。

例:挂载光盘。光盘对应的设备文件通常为“/dev/cdrom”,下面将光盘挂载到“/mnt/cdrom”目录。

RHEL6入门系列之二十,文件系统的挂载_第4张图片

 由于光盘是只读的存储介质,因此在挂载时系统会出现“mounting read-only”的提示信息。

另外,在df命令显示的结果中可以发现,光盘(光驱)的实际设备文件是/dev/sr0,/dev/cdrom其实只是一个符号链接,不过我们一般都习惯用/dev/cdrom这个更容易记忆的名字。光盘的文件系统是iso9660,这个了解即可。再是可以看到光盘其实被挂载了两次,这是由于我们在图形界面下操作,而图形界面会将系统中接入的这些移动设备自动挂载,系统将光盘自动挂载到了“/media/RHEL_6.3 x86_64 Disc 1”目录下。Linux允许同一个存储设备同时被挂载到多个挂载点,这并不影响我们使用。
此时执行“ls /mnt/cdrom”命令,查看到的就是光盘中的内容。

RHEL6入门系列之二十,文件系统的挂载_第5张图片

3、挂载优盘

由于是在虚拟机中进行操作,所以首先我们需要将优盘接入到虚拟机中。在虚拟机上点击右键,在“可移动设备”中找到自己的优盘,然后点击“与主机连接或断开连接”,就可以将优盘转接到虚拟机中。

RHEL6入门系列之二十,文件系统的挂载_第6张图片

在上篇博文中曾介绍过,优盘也是使用“/dev/sdxx”的设备文件名。优盘现在相当于是系统中的第3块SCSI接口设备,所以它对应的设备文件为“/dev/sdc”。可以用“fdisk -l”命令查看。[root@localhost ~]# fdisk -l

Disk /dev/sdc: 7784 MB, 7784628224 bytes

109 heads, 58 sectors/track, 2404 cylinders

Units = cylinders of 6322 * 512 = 3236864 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x868c868c

   Device Boot      Start         End      Blocks   Id System

/dev/sdc1   *          68        2405     7389184    c W95 FAT32 (LBA)

 

优盘只有一个分区/dev/sdc1,下面将它挂载到“/mnt/usb”目录。

[root@localhost ~]# mkdir /mnt/usb

[root@localhost ~]# mount /dev/sdc1 /mnt/usb

 

4、挂载iso镜像

 

如今iso镜像使用的是越来越多,光驱逐渐有淘汰之势,在Windows中使用iso镜像需要安装Daemon Tools之类的虚拟光驱软件,而在Linux系统中可以将ISO镜像直接挂载使用。

Linux将iso镜像视为一种特殊的“回环”文件系统,因此在挂载时需要添加“-o loop”选项。

下面将我优盘中准备好的的winbaicai_xpsp3ghost_2012_6_v5.8.iso镜像挂载到“/mnt/xp”目录中。

[root@localhost ~]# mkdir /mnt/xp

[root@localhost ~]# cd /mnt/usb

[root@localhost usb]# mount -o loop winbaicai_xpsp3ghost_2012_6_v5.8.iso /mnt/xp

注意,在写这类很长的文件名时要善于使用Tab键补全。

 

二、 永久挂载文件系统

 

刚才我们所挂载的这些文件系统在Linux系统关机或重启时都会自动被卸载掉,这样每次开机后管理员都需要将它们手工再挂载一遍,如果在挂载的文件系统里存放了一些开机要自动运行的程序数据,就可能会导致程序出现错误。

在Linux系统中可以通过修改/etc/fstab文件来完成文件系统的自动挂载。/etc/fstab称为文件系统数据表(File System Table),Linux在每次开机的时候都会按照这个文件中的配置来自动挂载相应的文件系统。

我们先来查看一下/etc/fstab文件中的内容。

RHEL6入门系列之二十,文件系统的挂载_第7张图片

文件中的每一行对应了一个自动挂载的设备,每行包括了6个字段,每个字段的含义如下:

  • 第1字段:需要挂载的设备文件名。

  • 第2字段:挂载点,挂载点必须是一个目录,而且必须用绝对路径。对于交换分区,这个字段定义为swap。

  • 第3字段:文件系统的类型。如果是ext4文件系统,则写成ext4;如果是FAT32文件系统,则写成vfat;如果是光盘,可以写成auto,由系统自动检测,或者是iso9660这种标准格式。

  • 第4字段:挂载选项。一般都是采用“defaults”。

  • 第5字段:文件系统是否需要dump备份(dump是一个备份工具),一般为1时表示需要,为0设表示忽略。

  • 第6字段:表示在系统启动时是否检查这个文件系统以及检查的顺序,设为0表示不检查,设为1表示优先检查,2表示其次检查。对于根分区应设为1,其他分区设为2或者是0。

下面我们将/dev/sdb1永久挂载到/data目录。

利用vi编辑器修改/etc/fstab文件,在文件的最下方增加下面的一行:

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

/dev/sdb1               /data                   ext4    defaults        0 0

如果要将光盘永久挂载到/mnt/cdrom目录,可以这样进行修改:

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

/dev/cdrom             /mnt/cdrom              auto    defaults        0 0

设置完/etc/fstab之后,如果需要测试设置值是否正确,可以执行mount –a命令,自动挂载文件中所有的文件系统。

 

三、卸载文件系统

 

卸载文件系统使用的命令为umount,需要指定挂载点目录或对应设备文件名作为参数。因为同一设备可能被挂载到多个目录下,所以一般建议通过挂载点目录的位置来进行卸载。

例:卸载光盘。

[root@localhost ~]# umount /mnt/cdrom

在使用umount命令卸载文件系统时,必须保证此时文件系统不能处于busy状态,使文件系统处于busy状态的情况有:文件系统中有打开的文件,某个进程的工作目录在此系统中,文件系统的缓存文件正在被使用等。最常见的错误是在挂载点目录下进行卸载操作。