Linux命令学习手册-mount

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 或者 unbindableshared 提供 mount 的镜像功能,这样当在任何一个镜像中进行 mount 或者 umount 的时候都会传递给其他的镜像,在其他的镜像中反应出来。 slavemount 会从它的 master 接收传递过来的变化但是反过来的方向的传播却不行。 privatemount 不会做任何传递。 unbindable 是一个 privatemount ,并且它不能够通过 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 选项来替代 userowner 选项和 user 类似,不过,它要求 user 必须是相应的设备文件的拥有者。 group 选项也类似,不过, user 必须属于相应的设备文件的组的成员。

mountumount 程序维护当前挂载的文件系统,可以在 /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 对应的分区。 sdaSATA 磁盘设备名称,如果磁盘有分区,就另有 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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容