小女巫 发表于 2015-1-18 11:18:11

Linux编程:挂载 (mount) 深切了解仓酷云

在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
起首援用一句wiki上的界说来开篇:
Mountingtakesplacebeforeacomputercanuseanykindofstoragedevice(suchasaharddrive,CD-ROM,ornetworkshare).Theuserortheiroperatingsystemmustmakeitaccessiblethroughthecomputer’sfilesystem.Ausercanonlyaccessfilesonmountedmedia.
意义是说,“挂载”产生在盘算机想要利用任何范例的存储设备(如硬盘,CD-ROM,收集设备)之前.操纵体系必需将这个设备归入本人的文件体系中往.
要注重的是,这里的存储设备纷歧定必需是内部的存储设备,也能够是你安装体系的硬盘上的分区.
例子先

光看下面说的还不敷,先看个例子吧,这个例子摘自manmount,在man手册中这个例子下的一句话十分好的注释了mount究竟是甚么.
mount-ttypedevicedir在这个例子上面有这么一句话:
Thistellsthekerneltoattchthefilesystemfountondevice(whichisoftypetype)atthedirectorydir.
这句话十分主要,我们必定要分明,挂载操纵,实践上是把设备device中的文件体系附加到dir上,然后我们就能够经由过程会见dir来会见这个设备.
分明了这一点,我们就可以分明“挂载”的实质了,挂载的实质就是针对某一设备,剖析出其文件体系布局,并依据其文件体系范例挪用linux中响应的驱动,处置其的元数据,将这些信息附加到linux的目次树上出现出来.
分明这一点以后,前面的bindmount,loopmount和remount的区分就可以够很分明了.
挂载点

甚么是挂载点呢?仍是先借用Wiki上的一句话:
Amountpointisaphysicallocationinthepartitionusedasarootfilesystem.
不幸的是,Wiki上的这句话其实不正确,这句话的意义也就是说“挂载点就是root分区中的一个地位”,这句话错在“root分区”上.
我们晓得在安装Linux体系时大概会为磁盘分多个区,最广泛的情形就是良多用户会给/home目次独自分一个区.并且有一部分用户还会在/home/username目次下创建一个专门用来挂载各类设备的目次(如/home/username/mnt-point)而不利用体系的/mnt目次.那末这时候候,岂非说/home/username/mnt-point这个目次就不是挂载点了吗?明显它也是挂载点,但它确并非位于root分区(即/分区).
外洋有一篇文章,用绝不装逼的体例说出了”挂载点”的实质:
Insimplewordsamountpointisadirectorytoaccessyourdata(filesandfolders)whichisstoredinyourdisks.
以是说白了,挂载点就是一个目次.以是下文中当我应当说”挂载到某一挂载点”的时分我都间接说”挂载到某一目次”.
假定备挂载(loopmount)

loopdevice

分明loopmount之前,最好先扫除甚么是loopdevice,有耐烦的话能够拜见维基百科中的条目,对照长,没耐烦的话能够间接看我上面的形貌,简便些.
复杂来讲,loopdevice可以供应将一个档案挂载到某一目次的功效.这和bindmount(下文会先容)有些相似,但其实不不异.原始的mount只是为了将一般的设备挂载,bindmount使得能够挂载目次,而loopdevice使得能够挂载档案.
在linux中,loopdevice就是指/dev/loop0,/dev/loop1,/dev/loop2…这些设备,它们是子虚的设备(pseudodevice),不像/dev/sda在你的主机里物理存在.loopdevice必要你在编译内核的时分将其静态编译大概编译为静态模块,然后必要利用modprobe加载其模块(这个模块包括了loopdevice的驱动程序和losetup这类供应给用户来操纵loopdevice的程序),这时候其驱动程序就回创立/dev/loop0,/dev/loop1…这几个设备文件.
档案

注重,我在说档案的时分,指的是英文中的archive,它和文件file是分歧的工具,档案archive是一个打包的文件集,内里一样平常包括很多文件,好比tar,jar,iso就是罕见的档案格局.
用过dd的人应当晓得,这个壮大的命令能够将全部磁盘大概磁盘分区克隆上去,放到一个文件里,一样平常,如许的文件我们都以.img后缀为其定名并称如许的文件为镜像文件.我所说的档案也包括这类情形.
loopmount

ok,分明了甚么是loopdevice,也分明了档案是甚么,那末究竟怎样把一个档案挂载到某个目次下呢?
实践上loopmount接纳了一个瞒天过海的体例,它先将这个档案映照到某个loopdevice上,像如许:
#losetup/dev/loop0xxxx.iso经由过程这类体例来棍骗mount命令,让mount命令觉得/dev/loop0下面真的有设备.这时候运转mount就好了:
#mount-tiso9660/dev/loop0/path/to/mount/point这么看起来,当你想挂载某一个档案的时分(好比某个iso),你起首得把这个档案和某一个loopdevice联系关系起来,利用losetup命令.然后利用mount命令将这个loopdevice设备挂载到某个目次上.实践上不用如许,mount命令本身实在就有一个能把这两步兼并的功效,那就是如许:
#mount-tiso9660-oloop/dev/loop0/path/to/mount/point最初我们再来想想,是否是一切的档案都能够用这类体例挂载?明显不是的,依据mount命令有个-t参数来看,在挂载的时分是必要指定文件体系的范例的(不指定的话mount命令会主动辨认),还记得下面说的挂载的实质吗?
"挂载操纵,实践上是把设备_device_中的**文件体系**附加到_dir_上,".不被辨认的文件体系是不克不及被挂载的,假如你没有加载ReiserFS模块,那末挂载具有ReiserFS文件体系的设备时就会报“unknownfilesystem”毛病.像下面说的tar,jar,zip如许的档案,它们只是一种打包/紧缩格局,自己就不是一种文件体系格局,固然是不克不及被linux辨认的.它们固然能够映照到某一个loopdevice,但其实不能被挂载.
可是像.iso文件,它一样平常包括iso9660文件体系,都晓得这是一种CD上接纳的文件体系.另有就是你可使用dd,mkfs命令来创立一个ext2,ext3等文件体系的档案.如许的档案才是能够被挂载的.
loopmount一向以来是Unix-like体系下很有效的特征,能匡助你当你拿到一个iso文件后,不用将其刻录到CD/DVD里就可以检察内里的内容.windows下直到windows7才撑持这一特征,在此之前都必要借助第三方软件如DaemonTools来完成假造光驱的功效.
绑定式挂载(bindmount)

下面所说的“挂载”都是指让你将某个设备挂载到某一目次,不论这个设备是实在的物理设备,仍是假的loop设备,它都是设备.而“绑定式挂载”可以同意你将已的存在目次挂载到另外一目次.好比:
#mount--bind//home/username/mnt-point如许,你的mnt-point目次下也会有etc,opt,usr等目次,这一历程我们称作“将根目次绑定到/home/username/mnt-point上”,以是,你在一处改动目次下的内容的话,在另外一处也可以看到改动.
必要注重的一点是假如根目次树下有某个目次是挂载到另外一个磁盘分区的话,那末它大概不会被绑定到新的目次下.好比说假如/usr和/处于分歧的磁盘分区(/在sda1,/usr在sda2),那末你大概会发明/home/username/mnt-point/usr是空的,那末这时候能够分外挂载一次来使得/usr也呈现在/home/username/mnt-point/usr:
#mount--bind/usr/home/username/mnt-point/usr不外你也能够在一入手下手就实行:
#mount--rbind//home/username/mnt-point关于绑定式挂载,man2mount中的形貌是“使一个文件,大概一个目次树在另外一个目次上可见”.这中央不太了解,就我所知,只能将目次绑定到目次,不克不及将文件绑定到目次的.我实验过将一个一般的文件绑定到目次,但报错了.不晓得man手册里这个说法是甚么意义.我只能这么了解:目次也是文件,以是这类说法没错吧….
从头挂载(remount)

借助于绑定式挂载,能够完成风趣的效果,好比说,你能够将/绑定到/,将/tmp/test/绑定到/tmp/test/(运转mount命令就可以看到效果).不外…这么干有个鸟用啊!!谁这么无聊会往这么干啊!!
这就是remount存在的缘故原由,我们固然能够经由过程绑定式挂载耍点小伶俐,将本人绑定到本人上,但这与没绑定没有任何区分啊;但是借助remount,我们就能够在从头挂载的时分修正挂载的参数.
remount最经常使用的情形就是将一个文件体系由只读从头挂载为读写,大概相反.好比:
#mount-oremount,rw/关于remount的概况,能够看一下man手册,这里就未几先容了.
supermount

“超等挂载”,这个项目标目标是让你可以免除手动mount/umount的历程,到达“插上U盘就入手下手拷文件”和“拷完文件就拔失落U盘”的效果.
Update:

经Ubuntu中文论坛@astolia年夜侠斧正,关于“绑定式挂载”,固然不克不及将一个文件挂载到目次,但确是能够将一个文件挂载到另外一个文件的!好比说如许:
#touch/tmp/test#touch/tmp/test2#echo"hellomount">/tmp/test#mount--bind/tmp/test/tmp/test2然后你再往检察/tmp/test2,会发明它也有“hellomount”这个内容.以是如许一入手下手说的“挂载点就是目次”这个说法也不太对了…..再次感激@astolia~~~

常用的linux命令,尤其是一些能帮你提高开发效率的命令,(eg:grep,awk,sed,split等);

莫相离 发表于 2015-1-20 19:51:47

在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。

飘灵儿 发表于 2015-1-29 18:40:07

Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。

小妖女 发表于 2015-2-6 03:14:01

我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。

蒙在股里 发表于 2015-2-6 18:35:48

甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。

小女巫 发表于 2015-2-7 13:10:17

说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?

只想知道 发表于 2015-2-7 16:30:41

随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).

分手快乐 发表于 2015-2-11 16:30:02

即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。

老尸 发表于 2015-3-2 20:06:01

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。

深爱那片海 发表于 2015-3-11 02:47:24

眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。

透明 发表于 2015-3-17 19:09:41

让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?

活着的死人 发表于 2015-3-24 20:54:31

可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
页: [1]
查看完整版本: Linux编程:挂载 (mount) 深切了解仓酷云