<< Back to man.ChinaUnix.net

Enghish Version

MandrakeUser.Org - Your Mandrake-Linux Knowledge Base!

* DocIndex - Basics

挂载 第一篇

* Linux 对不同介质的处理方式
* Mandrake Linux 中默认挂载的安装
* 挂载细节

相关资源:

Filesystems HOWTO
man mount
man 8 umount
man fstab

Revision / Modified: Sept. 19, 2001
Author: Tom Berger
Translator: Wu XiaoGuang

* Linux 对不同介质的处理方式

如果您是从非 UNIX 操作系统,比如 MS Windows 9.x 或“经典的” Mac OS ,过来的,就会发现一个古怪的地方 —— Linux 对于分区、可移动介质(media)及网络共享(以后这些都统称为介质 media)的处理方式。

在那些操作系统中,对于涉及到文件或目录的任务,分区扮演了重要的角色。Windows 下,您有好几个“盘”(drives),比如 A: 、C: 、D: 等等;而 Mac OS 中,相应的则是“卷”(Volumes)。应用程序安装在他们独自的文件夹内,同时也在“系统目录”下放若干文件。新分区、外介质或网络共享以新的“盘”或“卷”的形式出现。

在 Unix 及 Linux 中,事情就完全不同了。这是因为与后来的 Mac OS 、Windows 系统相比,Unix 是真正的多用户操作系统:通常有多位用户在通过终端访问中心服务器。目录经常也是分散的:用户的 home 目录在机器 A ,而执行的程序、库可能在机器 B ,等等。用户一般不可以自己安装软件,而只能请求系统管理员帮他们在服务器上完成安装。
Mac OS 和 Windows 中的文件系统,由于那些随意的“卷”、“盘”的命名, 独立的应用程序目录,和不连续的目录结构,在管理员看来,那简直就是一场恶梦。

Linux 继承了 Unix 文件系统的特性:

  • 所有分区、外介质和网络共享都是唯一系统目录树(即根目录‘/’)的一部分;
  • 没有单独的“应用程序目录”,文件根据他们的类型(比如可执行文件、文档等等),而不是所属的应用程序进行安装。

* section index * top

* Mandrake Linux 中默认挂载的安装

和 Red Hat 有点不同,Mandrake Linux 尽量简化用户对介质的访问。老早以前,您得用‘root’才能挂载(mount)介质,而看似简单地从 CD 中安装一个 RPM 包,实际操作起来却着实有些繁琐:先切换到‘root’帐号、插入 CD 、挂载 CD 、安装软件包、卸载 CD 、切换回用户帐号。感觉就象在开一部老爷车。

当然,这些限制对于有系统管理员的多用户环境确实有意义,这样就能使系统保持干净,但对于单用户的机器而言,未免有些累赘。
因此,Mandrake Linux 下的所有可移动介质都被设置成可被用户挂载/卸载。从 Mandrake 7.2 起引入的‘supermount’(下面会介绍),甚至能自动挂载介质(如果您正使用 8.1 ,请阅读 有关‘supermount’的提示。而且所有本地可用的 Windows 9.x 的分区在启动时就被挂载,用户可以直接访问(包括读、写)

KDE 和 GNOME 的桌面上都有可移动盘的图标,要挂载的话,只要点击相应图标。如果您没有用‘supermount’,最后要记得用鼠标右击该图标的内容菜单,以卸载该介质。

Mandrake Linux 还提供了 DiskDrake ,可以用来配置本地、网络的挂载,并且还能改变分区大小。DiskDrake 在 Mandrake 控制中心(载入点,Mount Points),并且也可以在控制台(console)下运行。

如果您想继续了解一些细节,那请继续阅读 ;-) 。

* section index * top

* 挂载细节

“挂载”的观念其实很简单:我们用命令告诉系统,哪个介质应该整合到目录树中,或哪些该被移去。这样,系统就可以知道哪些介质可用,哪些不可用。

简单地

$ mount

将列出当前挂载的介质。如果您系统中有 Windows 9.x 的分区,可能已经被挂载了(目录‘/mnt/win_drive’)

为了挂载某个介质(使其成为本地目录树的一部分),您得切换成‘root’,并提供一些信息,比如,是什么介质、通过哪个目录访问:

# mount device_name mount_point

要卸载的话,得用‘umount’命令:

# umount mount_point

例子,挂载位于第一块 IDE 硬盘中第一个分区上的 MS-Windows 分区(vfat),以‘root’身份键入:

# mount /dev/hda1 /mnt/disk

卸载:

# umount /mnt/disk

是不是太 easy 了?别急,我们一步一步来。

设备名

在 Unix 及 Linux 中,每样东东都被看作文件。所有的文件、输入输出操作都要通过文件来处理,设备(硬盘、键盘、显卡、打印机等等)也以文件的形式来工作。这些设备文件(device files)位于‘/dev’目录,所有针对设备的读写都要通过这些文件。如果您想打印一份文档,数据将被送到‘/dev’下打印机的设备文件;如果您要保存内容,数据也将被送到目标文件中。

设备名有严格的约定,这意味着所有 Linux 系统中的特定设备都用相同的设备文件。
在‘/usr/src/linux/Documentation/devices.txt’(在线版) 中列出了允许的设备文件名。
常见设备名有:

/dev/hda-h 1-63

这些是通过 IDE 连接的设备(硬盘及其分区、CD-R 、internal ZIP 等)。字母标识了设备在总线上的位置(a=master on first IDE channel ,b=slave on first IDE channel ,c=master on second channel ,依此类推)
数字表示分区的位置,当然如果没有分区(例如 CD-R 、DVD),就不需要这些数字。位于 master on the second IDE channel 的光驱的设备名就是‘/dev/hdc’(或是指向‘/dev/hdc’的‘/dev/cdrom’)

但如果是安装在同一块硬盘上的 Windows 就有点不同了。Windows 9.x 基于 MS-DOS ,因而只能处理多达四个的主分区(primary) 。所以在主分区中,又建立了所谓的扩展分区(extended partition) 。对于 Linux 而言,第一个扩展分区总是标记为‘5’,即使前面主分区空缺:


                /dev/hda1 (...) b Win95 FAT32
                /dev/hda2 (...) f Win95 Ext'd (LBA)
                /dev/hda5 (...) b Win95 FAT32
                /dev/hda6 (...) 83 Linux
              

如您所见,由于 Windows 9x 的分区必须安装在主分区,因而就位于第一分区。第二个主分区提供了扩展分区的结构,本身没有用处。‘/dev/hda5’是第二个 Windows 分区,也就是 D 盘。Linux 分区在‘/dev/hda6’。实际上,硬盘中只有三个分区。

为什么这样做呢?因为这样如果新添主分区的话,设备名也不需变动。新添分区的设备名将会是‘/dev/hda3’。

一块硬盘最多可有 63 个分区。

/dev/fd0-7

这是软驱设备,‘0’代表第一个软驱,‘7’是第八个。

/dev/sda-p 0-15

SCSI 硬盘设备,后面的序号表示和 IDE 相似,每块最多有 15 个分区。请注意,USB 及 IEEE1394 硬盘也是通过这样的设备文件来处理的。

/dev/sr0-15

SCSI CD-Rom 设备,现在经常用‘/dev/scdx’来表示。0=第一个设备,1=第二个设备,依此类推。IDE CD-Roms 通过‘/dev/hd’来处理。请注意,IDE 刻录机(CD burners)USB 、IEEE1394 CD/DVD/CD-R 一样,也通过这些设备文件来处理。

/dev/pda-d

并行端口(parallel port)的 IDE 设备,分区和 IDE 类似,最多可有 15 个分区。

/dev/pf0-3

并行端口的 ATAPI 磁盘设备。

要询问某设备上有哪些分区,可以用 Mandrake 控制中心的‘diskdrake’,或者以‘root’身份键入

# cfdisk -P s /dev/device_name

比如,要看看系统中第一块 IDE 硬盘的情况,您可用 cfdisk -P s /dev/hda

注意到 Mandarke Linux 设置了一些助记链接,比如‘/dev/cdrom’就指向真正的 CD-R 设备文件。需要的话,您也可以设类似的链接。如果您在‘/dev/sda4’有 ZIP ,可用‘root’新建一个链接:

# ln -s /dev/sda4 /dev/zip

现在,‘/dev/zip’就成了可用的 ZIP 设备文件名。

可选项:文件系统类型

许多关于‘mount’的介绍中都提到了用来指定介质中文件系统类型的 -t type 可选项。您将发现,当挂载本地文件系统时,其实不需要这个可选项。‘mount’可以自动侦测大多数被支持的本地文件系统。

# mount /dev/hda1 -t vfat /mnt/disk

将第一块硬盘的第一个分区挂载到‘/mnt/disk’,并告诉‘mount’用何种文件系统(‘vfat’是用于 Windows 9x 的文件系统)

当一次挂载/卸载多个介质时,‘-a’可选项就显得很有用,例如

# umount -a -t vfat

将卸载系统中所有 Windows FAT 文件系统的介质。

载入点

这就是介质的挂载目录。如果某个介质被挂载,就可以和其他目录一样,通过挂载目录访问介质中的内容。如果介质尚未挂载,这个目录就相当于普通的空目录,您甚至可以将文件复制到这个空目录中。当介质被挂载后,目录中的原来文件就消失了,介质卸载后,原来文件又得以恢复。因此,在任何时刻,一个目录只能挂载一个介质,但您可以将介质挂载到已载入介质中的某个目录。
请注意,原来文件的访问权限不会影响到被挂载的介质。

如果看一下‘diskdrake’模块或文件‘/etc/fstab’, 您会注意到根据载入点的不同,有两种挂载类型:一种是挂载到系统级的目录(‘/’、‘/home’、‘/usr’、‘/dev’等等),另一种的载入点在‘/mnt’的某个目录。因而第一种属于系统,而第二种是临时的(比如,可移动介质、Windows 分区、网络共享)

两者不同的原因很容易能联想到:这样就利于减少备份量、方便系统的维护工作,例如更新‘locate’命令的资料库。

通常您不需要给挂载命令加 -o options 参数,因为默认可选项就已经够了,详情您可以看‘/etc/fstab’文件(以后会讨论到)

基本上‘mount’对每个挂载命令有两类可选项:一类是对全部文件系统都适用的常规可选项(比如 -o ro 用于挂载只读介质),另一类是特殊可选项(比如 -o codepage=850 将对挂载的 Windows 分区启用一种特殊的字符转换方式)。可选项以逗号(comma)作分隔,其间没有空格。详细内容请看 man mount

和可选项‘-t’类似,‘-O’(大写的 O)也可以用于一次挂载/卸载多个介质,例如

# mount -a -O umask=0

‘/etc/fstab’中含有‘umask=0’可选项的条目所对应的介质都将被挂载。‘-t’、‘-O’也可以和‘-a’连用:

# umount -a -t vfat -O ro

Windows FAT 文件系统所在的介质,如果是以只读方式挂载,则将被全部卸载。

载下一篇中,我们将用漂亮的配置文件对挂载方式进行整理,并看一下‘supermount’。

* section index * top

* 配置挂载,‘supermount’


Legal: All texts on this site are covered by the GNU Free Documentation License.
Standard disclaimers of warranty apply.