Automount mini-Howto 文件系统自动挂载程序
v0.3,22October1998
--------------------------------------------------------------------------------
这份文件在描述自动档案系统的自动挂载程式,如何设定并指出一些应该避免的问题。
--------------------------------------------------------------------------------
1.简介
1.1档案系统自动挂载-是什麽及为什麽
档案系统自动挂载是一个可针对特定档案系统自动挂载(卸载)档案系统的daemon。假如档案系统已经卸下了,而一个使用者尝试去使用它,那麽档案系统会自动的再挂载上去。这在大型的网路环境里,以及一些在机器之间相互挂载档案系统的时候特别有用(尤其是那些不是一直开机的机器)。对一些可移式的装置或一些其他用途都很有用,像是可以很容易的在DOS档案系统上做一些强制的ascii的转换。
1.2档案系统自动挂载程式的种类
在Linux上有两种档案系统自动挂载程式;AMD和autofs。AMD是档案系统自动挂载程式的daemon,而且功能就像SunOS上的AMD一样。它是在Userspace中实作的,就是说它不是核心的一部份。它也不需要核心知道档案系统自动挂载是怎麽一回事,假如你用NFS挂上本机的档案系统,透过AMD,它帮你处理了所有透过NFS系统的档案系统自动挂载时的网路讯息交换。Autofs是一个用以辅助核心的新系统,也就是说核心的档案系统程式码知道自动挂载点在哪,以及它底层所使用的档案系统是什麽,然後自动挂载程式便可以开始运作。在这份文件中只会谈到autofs。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2.安装
因为autofs是实作在核心空间,你的核心一定要加入autofs支援。在2.0.xx版,它还是一个实验性选项,但是已经相当稳定。在版本2.1.xx(和2.2.xx)就不再是实验性的了。
档案系统自动挂载程式和它的设定档都是必备的,用rpms(在RedHat里,是安装的一部份)是很好的方法。档案系统自动挂载程式应该由/etc/rc.d/init.d目录下的RC档启动。rpm会替你安装这些程式及设定档,但是你应该去确定它被启动了没,不管是用RedHat的control-panel或是其他Linux套件的任何方式。非rpm的套件也会有适合他们自己系统的那一套。假如你正在读这份文件,表示你可能不想知道rc做些什麽,所以不必花太多功夫在研究rc描述档在做些什麽事。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3.设定
利用RPM安装autofs将会很轻松地把你带到这个步骤,但是现在的这个部分你可能无法确定你是否曾经做过。
在/etc下面有两个档案,一个是auto.master而另外一个是auto.misc。我的auto.master看起来像这样:
/auto/etc/auto.misc--timeout60
第一个栏位不是挂载点,它是挂载点的集合(在第二个栏位可以找到)所在的地方。第三个选项是说自动挂载的档案系统在使用後的60秒後会试著卸载下来。当然,如果正在使用中是不能卸下的。
Auto.misc是一个“映射档“。多个映射档可以在auto.master中被定义。我的auto.misc看起来像是这样:
kernel-ro,soft,intrftp.kernel.org:/pub/linux
cd-fstype=iso9660,ro:/dev/cdrom
zip-fstype=auto:/dev/hdd4
floppy-fstype=vfat:/dev/fd0
第一个栏位是挂载点。在这个例子它可能是/auto/floppy什麽的。中间栏位是选项;你可以在mount的线上使用说明中找到相关的资讯。最後一个栏位指出档案系统的来源。写著"kernel"的那一行表示用NFS来挂载档案系统。其他行的冒号表示这是本机的装置。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4.等待卸下档案系统可真是漫长
有些人可能眼睁睁等著60秒的timeout时间到并且想著如果要退出磁片这可真是太久了..也许我可以直接对磁碟下sync然後拿出磁片而且没有人会注意到。让我来建议一个比较理智的替代方案。首先呢,你可以改变timeout的值,但是在使用後的15秒或其他秒数就让系统卸下档案系统似乎有点没效率。实际上有一个方法可以让档案系统自动挂载程式卸下档案系统。如果你送一个(用kill程式)讯号SIGUSR1给档案系统自动挂载程序,它会卸下任何它可以卸下的。但是人们开始在他们的视窗管理程式上做一个卸下档案系统的按钮之前,还有一个小问题。
档案系统自动挂载程序是被root所执行的,所以它只能接受root的讯号。你想用档案系统自动挂载程式可能有半数以上的理由是因为你不是系统管理员却想要挂入和卸下档案系统。写一个可以设定使用者身份识别码的C程式可以轻易达成,但这样的方法并不好。不管怎样,藉由sudo程式也可以允许使用者送出一些适当的kill讯号。唯一的问题是sudo并不允许你以`来执行次命令,所以你必须自己找出autofs的程序识别码。你应该有一个程式叫做killall,这可以让你做到这些:(幸好有这些个建议)
ALLALL=NOPASSWD:/usr/bin/killall-USR1automount
否则,你要允许你的使用者送-SIGUSR1给所有的程序。这对一些程式有不同的影响;它可能会使某些视窗管理器重新启动,而且终止xemacs。所以在这儿希望killall没有缓冲区溢出的问题...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5.问题
5.1我找不到/auto/floppy,或任何我要找的挂载点。
如果automount正确的安装,即使没用到时看不到这些挂载点,当你试著用它时,任何你要的挂载点都会在那儿。如果你用图形界面的目录浏览程式,你可能要手动打入挂载点的名字。不幸的是,无法从看不见的这些挂载点中选出所要用的,正是autofs的主要缺点。如果这造成你的问题,去编辑设定档案。(提示,就是那些结尾是.c的档)
5.2我怎麽看到已经挂载哪些东西?
用df命令。mount不加任何的选项也有同样的功能,并且秀出它所挂上的一些选项。
5.3我放进一片win95的磁片("vfat")而它却自动侦测到它只是一片一般的FAT磁片。
这不是档案系统自动挂载程式的问题。当这份文件正在写的时候,"auto"这种档案种类在成功的挂载一个msdos档案系统之前并不会尝试vfat的挂载。VFAT就是把Win95和WinNT的长档名挤进FAT/MSDOS档案系统。
根据mount的其中一个作者说,因为mount只是包装了一个必须指定档案系统种类的系统呼叫,把档案系统种类弄清楚仍然是使用者的责任。让mount照著列表的顺序,去一种一种的档案系统去试,而不是用目前仍在考虑的启发式的方法。我确定如果有任何人想要努力找出mount程式的作者(们),他们将会欢迎你的建议。所以现在呢,这表示你不能挂载vfat除非你放弃自动侦测其他档案系统的能力。希望这很快就能改进。在此同时,你已经可以很自由的建立多个挂载点并指定不同的档案系统。
5.4我的档案系统/grumblesmurf已经挂上但是用kill-SIGUSR1却无法卸载。
这表示它正在使用中。可能连系统管理员都不能用手动的卸载它。如果你是让它自动挂载的的人(也就是说,不可能是别人正在用它)看看是不是有一个shell是在那个目录中。假如没有的话,找找看其他东西(特别像是目录浏览器之类的)可能留下什麽看不见的东西在里面。假如你放弃寻找,你可以试试fuser程式。
5.5有autofs这样的好东西,我应该感谢谁呢?
决不会是我。这跟我一点关系也没有。我只是要让大家注意到autofs有多棒,有多麽的容易使用.比起AMD的原创的那些人(提示,他们卖一个超额的单功能产品和太古时代版的免费工具)autofs有很清楚的文件并且我由衷的感谢实作的这些人。每样东西都有版权声明,很抱歉我不能提供一个感谢清单。
5.6我可以到哪里学更多关於档案系统自动挂载的资讯?
有一个autofs的入门手册在urlurl="http://www.linuxhq.com/lg/issue24/nielsen.html">。也可以参考am-utils在http://www.cs.columbia.edu/~ezk/am-utils
(感谢这些URL)
--------------------------------------------------------------------------------