虽然有点儿老,但是学习下还是可以的……
本文出自ubuntu中文社区:http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=108475&start=0
MOUNT(8) Linux Programmer's Manual MOUNT(8)
NAME
mount - 挂载文件系统
SYNOPSIS B>8>
mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
DESCRIPTION F>0>
Unix
系统中,所有可以存取的文件都被组织为一个很大的树形结构,称为文件层次结构
(file hierarchy),以 / 为根。这些文件可以分布在多个设备上。 mount
命令用作将设备上的文件系统挂接到这个树形结构上。相反, umount(8)
命令用于将它分离。
mount 命令的标准格式,是
mount -t type device dir
这样做告诉内核将 device 中的文件系统 (文件系统类型是 type) 挂接到目录
dir 。目录 dir 中以前的内容 (如果有的话)
以及它的所有者和模式都不再可见,只要这个文件系统仍然处于挂载状态。路径名
dir 仅指向 device 中的文件系统的根。
有三种运行方式不会真正执行挂载动作:
mount -h
输出帮助信息;
mount -V
输出版本信息;以及只输入
mount [-l] [-t type]
列出所有已挂载的文件系统 (类型是 type)。 选项 -l 将在列表中加入 (ext2,
ext3 和 XFS) 卷标。参见下面。
从 Linux 2.4.0
开始,可以将文件层次的一部分重新挂载到其他地方。调用的方法是
mount --bind olddir newdir
运行之后,可以从两个位置访问到相同的内容。
这种方式只挂接单一的文件系统
(的一部分),在其中挂载的其他文件系统不会被挂接到新访问点。如果要在新访问点挂接完整的文件层次结构,使用
mount --rbind olddir newdir
注意文件系统挂载选项与初始挂载时相同,不能与 --bind/--rbind 同时使用 -o
选项来改变它们。
从 Linux 2.5.1 开始,可以完整地将一个子树移动到另一个位置。调用的方法是
mount --move olddir newdir
proc 文件系统不关联到特定的设备,在挂载的时候,可以使用任意的符号,例如
proc 来代替设备部分。(通常的选择是 none ,但这是不明智的: umount
的错误提示消息 ‘none busy' 可能带来迷惑。)
大多数设备以 (块设备的) 文件名指代,例如 /dev/sda1,
但是也有其他的可能,例如,在挂载 NFS 时, device 可能看上去像是
knuth.cwi.nl:/dir 。可以用块设备的卷标或 UUID 来指代设备 (参见下面的 -L
和 -U 选项)。
文件 /etc/fstab (参见 fstab(5)),
包含着描述哪些设备应当挂载到什么地方,使用哪些选项的行。这个文件有三种用法:
(i) 命令
mount -a [-t type] [-O optlist]
(通常在启动脚本中调用) 使得 fstab 中提到的所有文件系统
(只要有合适的类型和参数) 被按照指示挂载,除非行中包含了关键字
noauto2>2>0> -F 将使 mount 产生 (fork)
新进程,从而使得文件系统可以同时被挂载。
(ii) 当挂载 fstab
中提到的文件系统时,只要给出设备,或者只给出挂载点就可以了。
(iii) 通常,只有超级用户可以挂载文件系统。但是,如果 fstab
的行中包含选项 userC> 那么任何人都可以挂载相应的文件系统。
因此,假如有一行是
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
那么任何人都可以挂载 CDROM 中的 iso9660 文件系统,使用命令
mount /dev/cdrom
或
mount /cd
就可以了。要了解更多信息,参见 fstab(5)。
只有挂载某个文件系统的用户可以再卸载它。如果要让任何人都可以卸载,那么在
fstab 的行中使用 users 而不是 user2> 选项 owner 与选项 user
相似,但它限制用户必须是设备文件的拥有者。这种方式可能非常有用,例如对于
/dev/fdC> 如果一个登录脚本使得终端用户成为设备的所有者的话。(?)
程序 mount 和 umount 在文件 /etc/mtab
中维护一个当前已挂在的文件系统列表。如果调用 mount
时没有参数,将输出这个列表。
proc 文件系统被挂载后,(假设挂载点是 /proc), 文件 /etc/mtab 和
/proc/mounts
的内容是非常相似的。前者的信息要多一些,例如使用的挂载选项等等,但是不一定是最新的
(参见下面的 -n 选项)。可以用一个指向 /proc/mounts 的符号链接来代替
/etc/mtabC> 但是这样做会丢失一些信息,尤其是使用 loop
设备时将稍有不便,并且选项 "user" 将失效。
OPTIONS 9>9>
运行 mount 时的全部选项首先包括 fstab
表中为指定文件系统设定的选项,其次是通过 -o
参数指定的选项,最后还会添加一个 -r 或 -w 选项,如果有的话。
mount 命令可用的选项包括:
-V 输出版本信息
-h 输出帮助信息
-v 冗余输出模式
-a 挂载 fstab 中提到的 (指定类型的) 所有文件系统
-F (与 -a 联合使用)
为每个设备产生一个新进程来挂载。这样使得可以并行地挂载不同的设备或连接不同的
NFS 服务器。这样的好处是更快;同时 NFS
延时也是并行的。缺点是挂载顺序是不定的。因此,如果你想挂载 /usr
和 /usr/spoolC> 不能使用这个选项。
-f 做挂载过程中的所有事,除了实际的系统调用;如果不明白的话,它是在
"伪装" 挂载文件系统。这个选项在与 -v
标志联合使用时很有用,可以发现 mount
命令正在试图做什么。它也可以用来为早先以 -n
选项加载的设备添加记录。
-i 不调用 /sbin/mount.
-l 在 mount 的输出中添加 ext2,ext3 和 XFS 卷标。mount
必须有读取磁盘设备的权限 (例如,suid root)
才能这样做。用户可以用 e2label(8) 工具来为 ext2 或 ext3
设置卷标,对于 XFS 应当使用 xfs_admin(8)。
-n 挂载但是不写入 /etc/mtab。 有时这样做是必要的,例如当 /etc
是只读文件系统的时候。
-p num 如果要加载一个加密的环回设备,从文件描述符 num 中读取 passphrase
而不是从终端读。
-s 容忍误用的选项而不报错。如果使用了某个文件系统不支持的选项,它将被忽略。并不是所有文件系统都支持这个选项。这个选项的存在是为了支持
Linux 中基于 autofs 的自动挂载程序。
-r 只读地挂载文件系统。有一个同义词是 -o ro。
-w 挂载文件系统为可读/写。这是默认选项。有一个同义词是 -o rw。
-L label
挂载具有指定卷标 label 的分区。
-U uuid
挂载具有指定 uuid 的分区。这两个选项要求存在文件 /proc/parti‐
tions (这个文件自 Linux 2.1.116 开始出现)。
-t vfstype
跟随在 -t
的参数用于指示文件系统类型。当前支持的文件系统类型包括: adfs,
affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2,
ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4,
ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs,
udf, ufs, umsdos, vfat, xenix, xfs, xiafs. 注意 coherent,sysv
和 xenix 是等价的,并且 xenix 和 coherent 将在未来被移除 — 使用
sysv 代替它们。从 Linux 2.1.21 开始, ext 和 xiafs
类型不再存在。
对于大多数类型, mount 程序要做的事情就是发出一个简单的系统调用
mount(2), 不要求知道文件系统的细节知识。但是对于很少的一些类型
(例如 nfs,nfs4,smbfs,ncpfs),必须使用特别的代码。nfs
的特别代码是内嵌的,而 smbfs 和 ncpfs 有单独的 mount
程序。为了可以用统一的方式处理所有类型的文件,mount 在挂载 TYPE
类型的文件系统时,将执行程序 /sbin/mount.TYPE
(如果它存在的话)。由于 smbmount 程序的各种版本有不同的调用约定,
/sbin/mount.smbfs 可能不得不设计为一个 shell
脚本来设定需要的调用。
默认类型是 iso96602> 如果没有给出 -t 选项,或者给出的类型是
autoC> 将探测超块来判断文件系统类型 (可以支持 adfs, bfs, cramfs,
ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, ntfs, qnx4,
reiserfs, romfs, udf, ufs, vxfs, xfs, xiafs
等文件系统)。如果探测失败,mount 将试图读取文件 /etc/filesys‐
temsC> 如果不存在,就读取文件 /proc/filesystems2>
所有在文件中列出的文件系统类型都将被尝试,除了那些标记为 "nodev"
的类型 (例如, devpts, proc, nfs, 和 nfs4)。 如果 /etc/filesys‐
tems 以只包含单个 * 的一行结束的话,mount 将继续读取文件
/proc/filesystems2>
类型 auto 在用户挂载软驱设备时可能很有用。创建一个 /etc/filesys‐
tems 文件在改变探测顺序时很有用 (例如,在 msdos 之前先尝试
vfat),或者如果你使用内核模块自动挂载的话。 警告:探测过程是
"启发式" 的 (依赖于出现合适的
"魔数"),可能将文件系统类型识别错误,从而带来灾难性的后果。如果你的数据非常有价值,不要让
mount 去猜。
可以用逗号分隔的列表来指定多个类型。文件系统类型列表也可以前缀
no 来指示不对这样的文件系统进行任何操作。(这种做法对于选项 -a
十分有意义。)
例如,命令
mount -a -t nomsdos,ext
将挂载所有的文件系统,除了类型为 msdos 和 ext 的那一些。
-O 与 -a 联合使用,来限制 -a 处理的文件系统的集合。它与 -t
类似,但是在 -a 的上下文之外,它什么作用也没有。例如,命令
mount -a -O no_netdev
挂载所有文件系统,除了在 /etc/fstab 的选项域中指定了 _netdev
选项的文件系统。
它与 -t 的区别在于每个选项都被精确匹配;在一个选项开头前缀 no
不会影响其余选项。
选项 -t 和 -O 的效果是累积的,也就是说,命令
mount -a -t ext2 -O _netdev
挂载所有指定了 _netdev 选项的 ext2 文件系统,而不是或者为
ext2,或者为指定了 _netdev 选项的所有文件系统。
-o 指定挂载选项的办法是在 -o
标志后面跟随以逗号分隔的选项列表。某些选项只有在出现在文件
/etc/fstab 中时才有意义。下列选项可以用于任何要挂载的文件系统
(但是并非所有文件系统都关心它们,例如,选项 sync 在今天只对
ext2,ext3 和 ufs 有效):
async 所有对文件系统的 I/O 操作都必须是异步完成的。
atime 每次存取时更新 inode 存取时间。这是默认选项。
auto 可以在使用 -a 选项时被挂载。
defaults
使用默认选项: rw, suid, dev, exec, auto, nouser, 以及
async.
dev 解析文件系统中的字符设备或块设备。
exec 允许执行二进制文件。
_netdev
文件系统居于需要网络连接的设备上
(用于防止系统不断尝试挂载这些文件系统,直到系统中网络被启动)。
noatime
不更新文件系统的 inode 存取时间 (例如,可以更快地存取
news spool 从而提升新闻服务器的速度)。
noauto 只能被显式地挂载 (也就是说,选项 -a
不会使这个文件系统被挂载)。
nodev 不解析文件系统中的字符设备或块设备。
noexec 不允许执行被加载的文件系统中的任何二进制文件。这个选项对于需要加载包含不适于自己体系结构的二进制可执行文件的文件系统的服务器有用。
nosuid 不允许 set-user-identifier 或 set-group-identifier
位起作用。(这样看上去很安全,但是如果你安装了 suidperl(1)
那么是非常不安全的。)
nouser 禁止普通的 (即,非 root)
用户来挂载文件系统。这是默认选项。
remount
试图重新挂载一个已经挂载的文件系统。这个选项通常用于改变文件系统的挂载标志,尤其是使一个只读文件系统变为可读写。它不会改变设备或者挂载点。
ro 只读地挂载文件系统。
rw 挂载文件系统为可读/写。
suid 允许 set-user-identifier 或 set-group-identifier
位起作用。
sync 所有对文件系统的 I/O 操作都应当是同步完成的。
dirsync
所有对文件系统内目录的更新应当是同步完成的。这个选项影响下列系统调用:creat,
link, unlink, symlink, mkdir, rmdir, mknod 以及 rename。
user 允许普通的用户挂载文件系统。挂载者的用户名被写入
mtab,从而使他可以再次卸载文件系统。这个选项暗含了选项
noexec, nosuid, 以及 nodev (除非在后续选项中指定
user,exec,dev,suid)。
users 允许每个用户挂载和卸载文件系统你哦个。这个选项暗含了选项
noexec, nosuid, 以及 nodev (除非在后续选项中指定
users,exec,dev,suid)。
--bind 将一个子树重新挂载到其他地方
(从而使它的内容可以从两个地方同时获取)。参见上面。
--move 将一个子树移动到其他位置。参见上面。
FILESYSTEM SPECIFIC MOUNT OPTIONS 7>6>B>F>9>A>2>0>
下列参数只对特定的文件系统有效。我们按照文件系统来排列它们。它们都应该写在
-o 标志后面。
Mount options for adfs
uid=value 和 gid=value
设置文件系统中文件的属主和组 (默认值:uid=gid=0)。
ownmask=value 和 othmask=value
分别设置 ADFS 'owner' 和 'other' 权限的权限掩码 (默认分别是 0700
和 0077)。参见 /usr/src/linux/Documentation/filesys‐
tems/adfs.txt。
Mount options for affs
uid=value 和 gid=value
设置文件系统根的属主和组 (默认值:uid=gid=0,但是如果给出 uid 或
gid 选项而没有给出值,将使用当前进程的 uid 和 gid)。
setuid=value 和 setgid=value
设置所有文件的属主和组。
mode=value
设置所有文件的模式为 value & 0777C>
无论初始的权限是什么。为有读权限的目录添加搜索权限。值以八进制给出。
protect
不允许对文件系统中的保护位进行任何修改。
usemp 设置文件系统根的 uid 和 gid 为挂载点的值,直到第一次 sync 或
umount 为止,然后清除这个选项。奇怪……
verbose
为每次成功挂载输出一条消息。
prefix=string
当跟随链接时,在文件卷名前使用的前缀。
volume=string
当跟随符号链接时,在 ‘/' 前使用的前缀 (最多 30 个字符)。
reserved=value
(默认值: 2.) 在设备起始保留的块数。
root=value
显式地给出 root 块的位置。
bs=value
给出块大小。允许的值是 512, 1024, 2048, 4096。
grpquota / noquota / quota / usrquota
这些选项被接受,但是被忽略。 (但是, /etc/fstab 中的这些字符串对
quota 工具有效。)
Mount options for coherent
None.
Mount options for devpts
devpts 文件系统是一个伪文件系统,惯例是挂载到 /dev/pts。
为了获取一个伪终端,进程首先打开 /dev/ptmx; 然后可以从中获取伪终端号
number,最后就可以使用伪终端的从设备了,设备名是 /dev/pts/
uid=value 和 gid=value
设置新创建的 PTY
的属主和组为指定值。如果不指定任何东西,它们将被设置为创建它们的进程的值。例如,如果某个
tty 终端进程组的 GID 是 5,那么 gid=5 将使得新创建的 PTY
属于这个终端进程组。
mode=value
设置新创建的 PTY 的模式为指定值。默认是 0600 。 设置 mode=620 和
gid=5 将使新创建的 PTY 的默认行为是 ‘‘mesg y'' (用户可写)。
Mount options for ext
没有。注意 ‘ext' 文件系统已经过时了。不要使用它。从 Linux 2.1.21 开始
extfs 不再是内核源码的一部分。
Mount options for ext2
‘ext2' 文件系统是标准的 Linux 文件系统。由于内核的
bug,它挂载时的选项是随机的 (在 Linux 2.0.4 中已修复)。
bsddf / minixdf
设置系统调用 statfs 的行为。 minixdf 的行为是在 f_blocks
字段返回文件系统的总块数,而 bsddf 的行为 (这是默认值) 是减去被
ext2 文件系统所用,因此无法再存储文件的块数。因此会出现
% mount /k -o minixdf; df /k; umount /k
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda6 2630655 86954 2412169 3% /k
% mount /k -o bsddf; df /k; umount /k
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda6 2543714 13 2412169 0% /k
(注意这个例子显示出可以将命令行选项与 /etc/fstab 中的选项同时使用。)
check / check=normal / check=strict
设置检测级别。在至少其中一个被设置时 ( check=normal
是默认的设置),挂载时将检测 inodes 和块位图
(在大磁盘上这将花费超过半分钟时间,并且没什么用处)。 (? With
strict checking, block deallocation checks that the block to
free is in the da