现在,文件系统已经创建成功,您应该挂载分区了。挂载文件系统的命令是 mount,其语法是:

mount [选项] <-t 类型> [-o 挂载选项] <设备> <挂载点>


在本例中,我们首先会将分区临时挂载在 /mnt (或您选择的任何其它挂载点:请记住,挂载点必须已经存在)。挂载我们新创建的分区的命令是:

$ mount -t ext3 /dev/hdb1 /mnt


-t 选项用于指定分区上文件系统的类型。您最常遇到的文件系统应该是 ext2FS(GNU/Linux 文件系统)或 ext3FS(改进了日志性能的 ext2FS),VFAT(适用于所有 DOS/Windows® 分区:FAT 12, 16 or 32)以及 ISO9660(CD-ROM 文件系统)。如果您不指定任何类型,mount 将会试着读取分区中的超块来猜测文件系统。

-o 选项用于指定一个或多个挂载选项。可供选择的选项视文件系统类型不同而有所不同。请参看 mount(8) 手册页中的细节。

现在,您已经挂载了您的新分区,现在该将整个 /usr 目录复制到新分区了:

$ (cd /usr && tar cf - .) | (cd /mnt && tar xpvf -)


文件都已经复制完了,现在可以卸下分区了。要卸下分区,请使用 umount 命令。语法很简单:

umount <挂载点|设备>


所以,要卸下我们的新分区,应该输入:

$ umount /mnt


或者:

$ umount /dev/hdb1




由于分区即将成为我们的 /usr 目录,我们现在需要通知系统。要完成这一操作,我们应该编辑 /etc/fstab 文件。该文件可使得系统在启动时自动挂载特定的文件系统。组成该文件的每一行分别描述了一组挂载关系,这其中包括文件系统、挂载点以及其它选项。这里是该文件的一个例子:

/dev/hda1   /           ext2    defaults        1 1
/dev/hda5 /home ext2 defaults 1 2
/dev/hda6 swap swap defaults 0 0
none /mnt/cdrom supermount dev=/dev/scd0,fs=udf:iso9660,ro,-- 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,sync,umask=0 0 0
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0


每行都由以下内容组成:



  • 文件系统所在的设备;
  • 挂载点;
  • 文件系统类型;
  • 挂载选项;
  • dump 工具备份标志
  • fsck(文件系统检查(FileSystem ChecK))的检查顺序。


总是有一行说明了根文件系统。swap 分区是一种特殊的分区,因为您无法在树形结构中找到其对应位置,而且这些分区的挂载点域只写着 swap 关键字。至于 /proc 文件系统,我们会在第 10 章 /proc 文件系统中有更详细的描述。另外一种特殊的文件系统是 /dev/pts。

在这里,我们需要将整个 /usr 层次移至 /dev/hdb1,并且想要在启动时将此分区挂载为 /usr。要达到这一目的,应该在 /etc/fstab 文件中添加下面一行:

/dev/hdb1        /usr         ext2    defaults  1 2


现在,分区将会在每次启动时自动挂载,并且必要时检查错误。

现在我们来介绍两个特殊选项:noauto 和 user。noauto 选项指定了文件系统不应该在启动时挂载,而只应该在您想要挂载的时候才挂载。而 user 选项指定了任何用户都可以挂载或卸下文件系统。这两个选项通常用于 CD-ROM 和软盘驱动器。有关 /etc/fstab 中其它选项的详情,请您查看 fstab(5) 手册页。

使用 /etc/fstab 的好处在于,它将极大简化 mount 命令的语法。要挂载文件中描述的文件系统,您只需要引用挂载点或设备。要挂载软盘,您可以只输入:

$ mount /mnt/floppy


或:

$ mount /dev/fd0


在分区转移这个例子的最后,我们来看看我们都做了什么。我们将 /usr 层次复制到了新分区,然后修改了 /etc/fstab,这样新分区就会在启动时自动挂载。这样似乎已经大功告成了。且慢,还有一个问题。老 /usr 中的文件仍然留在驱动器中原来的地方,我们还需要将它们删除以便腾出空间(这个才是我们最初的目标)。在执行接下来的命令之前,您需要先切换到单用户模式,请在命令行上执行 telinit 1 命令。



  • 接下来,我们将会删除 /usr 目录中的全部文件。请记住,我们仍然是指“老”目录,因为新的大目录尚未挂载。rm -Rf /usr/*
  • 最后,我们需要挂载新的 /usr 目录:mount /usr/


这样才是真正完成了我们最初的目标。现在,让我们回到多用户模式中(telinit 3 代表标准的文本模式,telinit 5 代表 X Window 系统)。如果没有后续的管理工作要做的话,您就可以从 root 账户注销了。

 

 

功能说明:卸除文件系统。


语  法:umount [-ahnrvV][-t <文件系统类型>][文件系统]


补充说明:umount可卸除目前挂在Linux目录中的文件系统。


参  数:

  -a   卸除/etc/mtab中记录的所有文件系统。

  -h   显示帮助。

  -n   卸除时不要将信息存入/etc/mtab文件中。

  -r   若无法成功卸除,则尝试以只读的方式重新挂入文件系统。

  -t<文件系统类型>   仅卸除选项中所指定的文件系统。

  -v   执行时显示详细的信息。

  -V   显示版本信息。

  [文件系统]   除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。

使用umount命令可以卸载文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:

 


 1.# umount -v /dev/sda1          通过设备名卸载 

2./dev/sda1 umounted 

3.# umount -v /mnt/mymount/      通过挂载点卸载 

4./tmp/diskboot.img umounted
 


如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:

 

 

  1. # umount -v /mnt/mymount/  
  2. umount: /mnt/mymount: device is busy  
  3. umount: /mnt/mymount: device is busy 


 

有时,导致设备忙的原因并不好找。碰到这种情况时,可以用lsof列出已打开文件,然后搜索列表查找待卸载的挂载点:

 

 

  1. # lsof | grep mymount         查找mymount分区里打开的文件  
  2. bash   9341  fra​​nc​​ois  cwd   DIR   8,1   1024    2 /mnt/mymount 


 

从上面的输出可知,mymount分区无法卸载的原因在于,francois运行的PID为9341的bash进程。

对付系统文件正忙的另一种方法是执行延迟卸载:

 

 # umount -vl /mnt/mymount/     执行延迟卸载 

延迟卸载(lazy unmount)会立即卸载目录树里的文件系统,等到设备不再繁忙时才清理所有相关资源。卸载可移动存储介质还可以用eject命令。下面这条命令会卸载CD并弹出CD:

 

 # eject /dev/cdrom      卸载并弹出CD