Automount mini-Howto 文件系統(tǒng)自動(dòng)掛載程序
2024-07-26 00:31:29
供稿:網(wǎng)友
v0.3, 22 October 1998
--------------------------------------------------------------------------------
這份文件在描述自動(dòng)檔案系統(tǒng)的自動(dòng)掛載程式,如何設(shè)定并指出一些應(yīng)該避免的問題?!?
--------------------------------------------------------------------------------
1. 簡介
1.1 檔案系統(tǒng)自動(dòng)掛載 - 是什麼及為什麼
檔案系統(tǒng)自動(dòng)掛載是一個(gè)可針對(duì)特定檔案系統(tǒng)自動(dòng)掛載(卸載)檔案系統(tǒng)的 daemon。假如檔案系統(tǒng)已經(jīng)卸下了,而一個(gè)使用者嘗試去使用它,那麼檔案系統(tǒng)會(huì)自動(dòng)的再掛載上去。這在大型的網(wǎng)路環(huán)境里,以及一些在機(jī)器之間相互掛載檔案系統(tǒng)的時(shí)候特別有用 (尤其是那些不是一直開機(jī)的機(jī)器)。對(duì)一些可移式的裝置或一些其他用途都很有用,像是可以很容易的在 DOS 檔案系統(tǒng)上做一些強(qiáng)制的 ascii 的轉(zhuǎn)換?!?
1.2 檔案系統(tǒng)自動(dòng)掛載程式的種類
在 linux 上有兩種檔案系統(tǒng)自動(dòng)掛載程式; AMD 和 autofs?!MD 是檔案系統(tǒng)自動(dòng)掛載程式的 daemon ,而且功能就像 SunOS 上的 AMD 一樣。它是在 User space 中實(shí)作的,就是說它不是核心的一部份。它也不需要核心知道檔案系統(tǒng)自動(dòng)掛載是怎麼一回事,假如你用 NFS 掛上本機(jī)的檔案系統(tǒng),透過 AMD ,它幫你處理了所有透過 NFS 系統(tǒng)的檔案系統(tǒng)自動(dòng)掛載時(shí)的網(wǎng)路訊息交換?!utofs 是一個(gè)用以輔助核心的新系統(tǒng),也就是說核心的檔案系統(tǒng)程式碼知道自動(dòng)掛載點(diǎn)在哪,以及它底層所使用的檔案系統(tǒng)是什麼,然後自動(dòng)掛載程式便可以開始運(yùn)作。在這份文件中只會(huì)談到 autofs。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 安裝
因?yàn)椤utofs 是實(shí)作在核心空間,你的核心一定要加入 autofs 支援。在 2.0.xx 版,它還是一個(gè)實(shí)驗(yàn)性選項(xiàng),但是已經(jīng)相當(dāng)穩(wěn)定。在版本 2.1.xx (和 2.2.xx) 就不再是實(shí)驗(yàn)性的了?!?
檔案系統(tǒng)自動(dòng)掛載程式和它的設(shè)定檔都是必備的,用 rpms (在 RedHat 里,是安裝的一部份) 是很好的方法。檔案系統(tǒng)自動(dòng)掛載程式應(yīng)該由 /etc/rc.d/init.d 目錄下的RC檔啟動(dòng)?!pm 會(huì)替你安裝這些程式及設(shè)定檔,但是你應(yīng)該去確定它被啟動(dòng)了沒,不管是用 RedHat 的 control-panel 或是其他 Linux 套件的任何方式。非 rpm 的套件也會(huì)有適合他們自己系統(tǒng)的那一套。假如你正在讀這份文件,表示你可能不想知道 rc 做些什麼,所以不必花太多功夫在研究 rc 描述檔在做些什麼事?!?
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 設(shè)定
利用 RPM 安裝 autofs 將會(huì)很輕松地把你帶到這個(gè)步驟,但是現(xiàn)在的這個(gè)部分你可能無法確定你是否曾經(jīng)做過。
在 /etc 下面有兩個(gè)檔案,一個(gè)是 auto.master 而另外一個(gè)是 auto.misc 。我的 auto.master 看起來像這樣:
/auto /etc/auto.misc --timeout 60
第一個(gè)欄位不是掛載點(diǎn),它是掛載點(diǎn)的集合(在第二個(gè)欄位可以找到)所在的地方。第三個(gè)選項(xiàng)是說自動(dòng)掛載的檔案系統(tǒng)在使用後的 60 秒後會(huì)試著卸載下來。當(dāng)然,如果正在使用中是不能卸下的?!?
Auto.misc 是一個(gè) “映射檔“?!《鄠€(gè)映射檔可以在 auto.master 中被定義。我的 auto.misc 看起來像是這樣:
kernel -ro,soft,intr ftp.kernel.org:/pub/linux
cd -fstype=iso9660,ro :/dev/cdrom
zip -fstype=auto :/dev/hdd4
floppy -fstype=vfat :/dev/fd0
第一個(gè)欄位是掛載點(diǎn)。在這個(gè)例子它可能是 /auto/floppy 什麼的。中間欄位是選項(xiàng);你可以在 mount 的線上使用說明中找到相關(guān)的資訊。最後一個(gè)欄位指出檔案系統(tǒng)的來源。寫著 "kernel" 的那一行表示用 NFS 來掛載檔案系統(tǒng)。其他行的冒號(hào)表示這是本機(jī)的裝置?!?
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 等待卸下檔案系統(tǒng)可真是漫長
有些人可能眼睜睜等著 60 秒的 timeout 時(shí)間到并且想著 如果要退出磁片這可真是太久了.. 也許我可以直接對(duì)磁碟下 sync 然後拿出磁片而且沒有人會(huì)注意到?!∽屛襾斫ㄗh一個(gè) 比較理智的替代方案。首先呢,你可以改變 timeout 的值,但是在使用後的15秒或其他秒數(shù)就讓系統(tǒng)卸下檔案系統(tǒng)似乎有點(diǎn)沒效率。實(shí)際上有一個(gè)方法可以讓檔案系統(tǒng)自動(dòng)掛載程式卸下檔案系統(tǒng)。如果你送一個(gè)(用 kill 程式) 訊號(hào) SIGUSR1 給檔案系統(tǒng)自動(dòng)掛載程序,它會(huì)卸下任何它可以卸下的。但是人們開始在他們的視窗管理程式上做一個(gè)卸下檔案系統(tǒng)的按鈕之前,還有一個(gè)小問題?!?
檔案系統(tǒng)自動(dòng)掛載程序是被 root 所執(zhí)行的,所以它只能接受 root 的訊號(hào)。你想用檔案系統(tǒng)自動(dòng)掛載程式可能有半數(shù)以上的理由是因?yàn)槟悴皇窍到y(tǒng)管理員卻想要掛入和卸下檔案系統(tǒng)。寫一個(gè)可以設(shè)定使用者身份識(shí)別碼的C程式可以輕易達(dá)成,但這樣的方法并不好。不管怎樣,藉由 sudo 程式也可以允許使用者送出一些適當(dāng)?shù)摹ill 訊號(hào)。唯一的問題是 sudo 并不允許你以 ` 來執(zhí)行次命令,所以你必須自己找出 autofs 的程序識(shí)別碼。你應(yīng)該有一個(gè)程式叫做 killall,這可以讓你做到這些: (幸好有這些個(gè)建議)
ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount
否則,你要允許你的使用者送 -SIGUSR1 給所有的程序。這對(duì)一些程式有不同的影響;它可能會(huì)使某些視窗管理器重新啟動(dòng),而且終止 xemacs。所以在這兒希望 killall 沒有緩沖區(qū)溢出的問題...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5. 問題
5.1 我找不到 /auto/floppy ,或任何我要找的掛載點(diǎn)?!?
如果 automount 正確的安裝,即使沒用到時(shí)看不到這些掛載點(diǎn),當(dāng)你試著用它時(shí),任何你要的掛載點(diǎn)都會(huì)在那兒。如果你用圖形界面的目錄瀏覽程式,你可能要手動(dòng)打入掛載點(diǎn)的名字。不幸的是,無法從看不見的這些掛載點(diǎn)中選出所要用的,正是 autofs 的主要缺點(diǎn)。如果這造成你的問題,去編輯設(shè)定檔案?!?提示,就是那些結(jié)尾是 .c 的檔)
5.2 我怎麼看到已經(jīng)掛載哪些東西?
用 df 命令。 mount 不加任何的選項(xiàng)也有同樣的功能,并且秀出它所掛上的一些選項(xiàng)?!?
5.3 我放進(jìn)一片 win95 的磁片 ("vfat") 而它卻自動(dòng)偵測到它只是一片一般的 FAT 磁片?!?
這不是檔案系統(tǒng)自動(dòng)掛載程式的問題。當(dāng)這份文件正在寫的時(shí)候, "auto" 這種檔案種類在成功的掛載一個(gè) msdos 檔案系統(tǒng)之前并不會(huì)嘗試 vfat 的掛載?!FAT 就是把 Win95 和 WinNT 的長檔名擠進(jìn) FAT/MSDOS 檔案系統(tǒng)。
根據(jù) mount 的其中一個(gè)作者說,因?yàn)椤ount 只是包裝了一個(gè)必須指定檔案系統(tǒng)種類的系統(tǒng)呼叫,把檔案系統(tǒng)種類弄清楚仍然是使用者的責(zé)任。讓 mount 照著列表的順序,去一種一種的檔案系統(tǒng)去試,而不是用目前仍在考慮的啟發(fā)式的方法。我確定如果有任何人想要努力找出 mount 程式的作者(們),他們將會(huì)歡迎你的建議。所以現(xiàn)在呢,這表示你不能掛載 vfat 除非你放棄自動(dòng)偵測其他檔案系統(tǒng)的能力。希望這很快就能改進(jìn)。在此同時(shí),你已經(jīng)可以很自由的建立多個(gè)掛載點(diǎn)并指定不同的檔案系統(tǒng)。
5.4 我的檔案系統(tǒng) /grumblesmurf 已經(jīng)掛上但是用 kill -SIGUSR1 卻無法卸載?!?
這表示它正在使用中。可能連系統(tǒng)管理員都不能用手動(dòng)的卸載它。如果你是讓它自動(dòng)掛載的的人(也就是說,不可能是別人正在用它)看看是不是有一個(gè) shell 是在那個(gè)目錄中。假如沒有的話,找找看其他東西(特別像是目錄瀏覽器之類的)可能留下什麼看不見的東西在里面。假如你放棄尋找,你可以試試 fuser 程式?!?
5.5 有 autofs 這樣的好東西,我應(yīng)該感謝誰呢?
決不會(huì)是我。這跟我一點(diǎn)關(guān)系也沒有。我只是要讓大家注意到 autofs 有多棒,有多麼的容易使用. 比起 AMD 的原創(chuàng)的那些人(提示,他們賣一個(gè)超額的單功能產(chǎn)品和太古時(shí)代版的免費(fèi)工具) autofs 有很清楚的文件并且我由衷的感謝實(shí)作的這些人。每樣?xùn)|西都有版權(quán)聲明,很抱歉我不能提供一個(gè)感謝清單?!?
5.6 我可以到哪里學(xué)更多關(guān)於檔案系統(tǒng)自動(dòng)掛載的資訊?
有一個(gè) autofs 的入門手冊在 url url=" http://www.linuxhq.com/lg/issue24/nielsen.html">。也可以參考 am-utils 在 http://www.cs.columbia.edu/~ezk/am-utils
(感謝這些 URL)
--------------------------------------------------------------------------------