mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
功能
挂载文件系统。
描述
所的文件在unix系统中用树状的方式组织, mount
命令用于把从 device
上面发现的文件系统挂载到这个树状组织中,这样就可以访问设备中的文件系统了。
标准的格式是: mount -t type device dir
这样会把设备上指定格式(type
)的文件系统挂到 dir
目录上面。
常用操作
打印帮助信息
#mount -h
打印版本信息
#mount -V
列出所有被挂载的文件系统
#mount [-l] [-t type]
这里, -l
列出所有被挂载的指定类型的文件系统。
将文件系统中的一部分重新挂载
#mount -bind olddir newdir
这个功能在2.4的内核中支持,也可在 fstab
中添加:
/olddir /newdir none bind
进行这步后同样的内容可以在两个地方被访问。也可 remount
单个的文件。据说这只能够挂一种文件系统,即不能挂载 submount
。
把整个的文件系统(包括 submount
)挂载到第二个地方
#mount --rbind olddir newdir
注意,文件系统上面的挂载项将会保持和原来挂载点上面的项一样,并且不能通过和 --bind/--rbind
一起的 -o
选项来改变。
内核 2.5
以后的版本支持把被挂在的树挂载到另一个位置
#mount --move olddir newdir
mount
标记
内核 2.6
以后的版本支持给 mount
以及子 mount
进行标记,标记为: shared
, private
, slave
或者 unbindable
。 shared
提供 mount
的镜像功能,这样当在任何一个镜像中进行 mount
或者 umount
的时候都会传递给其他的镜像,在其他的镜像中反应出来。 slave
的 mount
会从它的 master
接收传递过来的变化但是反过来的方向的传播却不行。 private
的 mount
不会做任何传递。 unbindable
是一个 private
的 mount
,并且它不能够通过 bind
的操作来进行克隆。具体可以参见内核源代码中的文档: Documentation/sharedsubtree.txt
。
标记的操作类似如下:
mount --make-shared mountpoint
mount --make-slave mountpoint
mount --make-private mountpoint
mount --make-unbindable mountpoint
下面的操作可以递归地改变给定的 mountpoint
下面的所有 mount
:
mount --make-rshared mountpoint
mount --make-rslave mountpoint
mount --make-rprivate mountpoint
mount --make-runbindable mountpoint
特殊文件系统
proc
文件系统没有与之相关的设备,当挂载它的时候可以在指定设备的地方指定任何的关键字例如 proc
,最好不要指定 none
,因为 umount
的时候 none busy
这个提示很让人迷惑。
大多数设备都是通过文件名字来指定的类似 /dev/sda1
,但是也有其他的可能。例如在挂载 nfs
文件系统的时候设备的文件名称看起来可能会类似: knuth.cwi.nl:/dir
,可以使用卷标或者 UUID
(参考 -L
和 -U
选项)来标记一个块设备文件。
mount
配置
文件 /etc/fstab
里面的每一行用来描述设备如何挂载(例如使用什么选项等等).这个文件的使用有如下几种方法:
1)如下的命令:
mount -a [-t type] [-O optlist]
会把 fstab
中指定的没有 noauto
关键字的所有文件系统都挂载上,(一般它都在启动脚本中被调用)如果加一个 -F
选项会让 mount
进行 fork
,导致并行地挂载每个文件系统。
2)当挂载 fstab
中指定的文件系统的时候,只指定设备或者只指定挂载点就够了。
3)一般来说,只有超级用户才能够挂载文件系统。然而,如果 fstab
中的某一行如果包含了 user
选项的时候,任何用户就可以挂载相应的文件系统了。
例如,假设 /etc/fstab
中有如下行:
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
任何用户都可以用如下的命令挂载他的 CDROM
上面的 iso9660
文件系统:
#mount /dev/cdrom
或者
#mount /cd
更多的细节参考 fstab(5)
.只有 mount
了一个文件系统的用户才能够 umount
它。如果想要任何人都能够 umount
,那么使用 users
选项来替代 user
。 owner
选项和 user
类似,不过,它要求 user
必须是相应的设备文件的拥有者。 group
选项也类似,不过, user
必须属于相应的设备文件的组的成员。
mount
和 umount
程序维护当前挂载的文件系统,可以在 /etc/mtab
中看到。如果运行了没有任何选项的 mount
,那么这个列表中的内容会被打印出来。
当 proc
文件系统被挂载的时候(对应 /proc
目录),文件 /etc/mtab
和 /proc/mounts
中的内容很类似。前者包含的信息更多,甚至包含了 mount
时的选项,但是却不是特别的实时更新的,可以参考 -n
选项。当你有许多挂载的东西的时候,将 /etc/mtab
替换为指向 /proc/mounts
的链接将会快很多,但是也会丢失也些信息,以及使用 loop
设备的时候会有很多不方便的地方,同时使用 user
选项也会失败。
举例
挂载基本命令
打印帮助信息
#mount -h
打印版本信息
#mount -V
挂载当前机器上面的一个盘分区到指定的挂载点 dir
#mount -t vfat /dev/sda2 /mnt
这里,假设我的磁盘第二个分区中是 vfat
文件系统,实际 -t vfat
可以省略,因为一般 linux 会自动识别的。这个命令会把相应分区挂到 /mnt
中去,通过访问 /mnt
目录就可实现访问 /dev/sda2
对应的分区。 sda
是 SATA
磁盘设备名称,如果磁盘有分区,就另有 sda1
, sda2...
,如果有第二个磁盘那么就 sdb
。如果是 ide
硬盘,一般是 hda
, hdb
等。
指定 gb2312
字符集的挂载
#mount -t vfat -o iocharset=gb2312 /dev/sda7 /mnt/win
这样的挂载的时候,指定使用 gb2312
字符集,这样就可能没有乱码了。其他常用的字符包括 cp936
, utf8
等等( ntfs
的一般用 utf8
挂载)。必须是超级用户才能执行。
挂载自己制作的文件系统
1)制作镜像文件:
#dd if=/dev/zero of=/root/filesys_ebook bs=10M count=35
这里,将会制作一个全0的350M的镜像文件。
2)格式化镜像文件:
#mkfs.ext3 /root/filesys_ebook
这样会把刚才制作的镜像文件格式化为 ext3
格式的文件系统。至此,镜像文件 filesys_ebook
就是一个独立的 ext3
文件系统的镜像了。
3)挂载镜像文件系统:
#mount -o loop /root/filesys_ebook /mnt
这样,就把自己制作的镜像文件系统挂载到/mnt下面了,可以向里面写入数据了。
挂 nfs
系统
#$sudo mount -t nfs ip:path mountPoint
这里 ip:path
例如 10.1.14.122:/home/quietheart
, mountPoint
就是你的本地目录,有时候挂载不上去可以试试: mount -t nfs -o nolock ......
利用 mount
挂载光盘镜
#sudo mount -o loop image.iso /mnt
这样就把镜像 image.iso
挂到 /mnt
目录下面了。
开机自动挂载文件系统
修改 /etc/fstab
,添加如下行:
/dev/sda5 /mnt vfat defaults,rw,umask=0000 0 0
查看当前挂载的所有文件系统
#$mount
输入之后,输出如下:
/dev/sda8 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
lrm on /lib/modules/2.6.27-7-generic/volatile type tmpfs (rw,mode=755)
/dev/sda6 on /boot type ext3 (rw,relatime)
/dev/sda9 on /home type ext3 (rw,relatime)
/dev/sda5 on /mnt type vfat (rw,umask=0000)
securityfs on /sys/kernel/security type securityfs (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/quietheart/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=quietheart)
/dev/loop0 on /home/quietheart/桌面/tmp/K1_ROM1_v0.1.3_image/tmpMnt type ext3 (rw)
这里,显示了各个挂载的系统的详细情况。
列出指定类型的被挂载的文件系统
#mount -l -t tmpfs
这里, -l
可以省略。这样会列出所有挂载的 tmpfs
的文件系统。
卸载文件系统
卸载文件系统1
#$sudo umount /dev/sda2
这里会卸载挂在 /dev/sda2
上面的文件系统。
卸载文件系统2
#$sudo umount /mnt
这里根据安装点卸载相应的文件系统。
具体参见 umount
的文档。
绑定挂载
将文件系统中的一部分绑定挂载
#mount --bind olddir newdir
这里, olddir
是一个已经挂载的挂载点中的某个子目录。这样操作之后,对于这个 olddir
,可以从挂载点的 olddir
进行访问,也可以从 newdir
进行访问,如果卸载了 olddir
的挂载点, newdir
仍旧可以访问原来 olddir
的内容,想要恢复 newdir
原来的内容,那么就 umount newdir
.
将文件系统中的某个单个文件帮定挂载
#mount --bind oldfile newfile
这里, oldfile
是一个已经挂载的挂载点中的某个文件。这样操作之后,对于这个 oldfile
,可以从挂载点的 oldfile
进行访问,也可以从 newfile
进行访问,如果卸载了 oldfile
的挂载点, newfile
仍旧可以访问原来 oldfile
的内容,想要恢复 newfile
原来的内容,那么就 umount newfile
.
将挂载点位置移动
#mount --move olddir newdir
这里,原来的挂载点是 olddir
,我想要把挂载点更换到 newdir
的话,就用这个命令,这样旧有的挂载点就没有了。另外我实践插入 sd
卡的时候,一般linux会自动在 /media/
下创建一个 disk
目录,然后挂载上去,当卸载的时候会自动删除这个目录;但是如果使用 move
的话这个目录会遗留下来。
挂载临时文件系统
#mount -t tmpfs tmpfs tmpfsTest/
这里, tmpfs
是一个在内存中开辟空间的一种文件系统。这里的第2个 tmpfs
处实际可以是任意字符串。例如: mount -t tmpfs tmphahaha tmpfsTest/
之后,我用 mount |grep Test
,会输出:
tmphahaha on /home/quietheart/test/tmpfsTest type tmpfs (rw)
其他
常见问题
挂载磁盘之后无法写挂载之后的文件分区:
$sudo mount -o rw,umask=0000 /dev/sda5 /mnt
这里假设将 /dev/sda5
挂到 /mnt
上面。
挂载 /etc/fstab
下面不含 noauto
选项的文件系统:
#mount -a
杂乱
mount
的 -n
选项表示挂载之后不写文件 /etc/mtab
。
mount
的 --move
表示移动挂载点。
问题: 重复挂载同一个目录会怎么样? remount