Automount mini-Howto 檔案系統自動掛載程式 don@sabotage.org v0.3, 22 October 1998 _________________________________________________________________ 這份文件在描述自動檔案系統的自動掛載程式,如何設定並指出一些應該避免的 問題。 _________________________________________________________________ 1. 簡介 * 1.1 檔案系統自動掛載 - 是什麼及為什麼 * 1.2 檔案系統自動掛載程式的種類 2. 安裝 3. 設定 4. 等待卸下檔案系統可真是漫長 5. 問題 * 5.1 我找不到 /auto/floppy ,或任何我要找的掛載點。 * 5.2 我怎麼看到已經掛載哪些東西? * 5.3 我放進一片 win95 的磁片 ("vfat") 而它卻自動偵測到它只是一片一般 的 FAT 磁片。 * 5.4 我的檔案系統 /grumblesmurf 已經掛上但是用 kill -SIGUSR1 卻無法 卸載。 * 5.5 有 autofs 這樣的好東西,我應該感謝誰呢? * 5.6 我可以到哪裡學更多關於檔案系統自動掛載的資訊? _________________________________________________________________ 1. 簡介 1.1 檔案系統自動掛載 - 是什麼及為什麼 檔案系統自動掛載是一個可針對特定檔案系統自動掛載(卸載)檔案系統的 daemon。 假如檔案系統已經卸下了,而一個使用者嘗試去使用它, 那麼檔案系 統會自動的再掛載上去。這在大型的網路環境裡, 以及一些在機器之間相互掛載 檔案系統的時候特別有用 (尤其是那些不是一直開機的機器)。 對一些可移式的 裝置或一些其他用途都很有用,像是可以很容易的在 DOS 檔案系統上做一些強制 的 ascii 的轉換。 1.2 檔案系統自動掛載程式的種類 在 Linux 上有兩種檔案系統自動掛載程式; AMD 和 autofs。 AMD 是檔案系統自 動掛載程式的 daemon ,而且功能就像 SunOS 上的 AMD 一樣。它是在 User space 中實作的,就是說它不是核心的一部份。 它也不需要核心知道檔案系統自 動掛載是怎麼一回事,假如你用 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 --timeout 60 第一個欄位不是掛載點,它是掛載點的集合(在第二個欄位可以找到)所在的地 方。 第三個選項是說自動掛載的檔案系統在使用後的 60 秒後會試著卸載下來。 當然,如果正在使用中是不能卸下的。 Auto.misc 是一個 “映射檔“。 多個映射檔可以在 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 第一個欄位是掛載點。在這個例子它可能是 /auto/floppy 什麼的。中間欄位是 選項; 你可以在 mount 的線上使用說明中找到相關的資訊。最後一個欄位指出 檔案系統的來源。 寫著 "kernel" 的那一行表示用 NFS 來掛載檔案系統。其他 行的冒號表示這是本機的裝置。 4. 等待卸下檔案系統可真是漫長 有些人可能眼睜睜等著 60 秒的 timeout 時間到並且想著 如果要退出磁片這可 真是太久了.. 也許我可以直接對磁碟下 sync 然後拿出磁片而且沒有人會注意到 。 讓我來建議一個 比較理智的替代方案。 首先呢,你可以改變 timeout 的值 ,但是在使用後的15秒或其他秒數就讓系統卸下檔案系統 似乎有點沒效率。 實 際上有一個方法可以讓檔案系統自動掛載程式卸下檔案系統。如果你送一個(用 kill 程式) 訊號 SIGUSR1 給檔案系統自動掛載程序, 它會卸下任何它可以卸下 的。但是人們開始在他們的視窗管理程式上做一個卸下檔案系統的按鈕之前,還 有一個小問題。 檔案系統自動掛載程序是被 root 所執行的,所以它只能接受 root 的訊號。 你 想用檔案系統自動掛載程式可能有半數以上的理由是因為你不是系統管理員卻想 要 掛入和卸下檔案系統。 寫一個可以設定使用者身份識別碼的C程式可以輕易 達成,但這樣的方法並不好。 不管怎樣,藉由 sudo 程式也可以允許使用者送出 一些適當的 kill 訊號。 唯一的問題是 sudo 並不允許你以 ` 來執行次命令, 所以你必須自己找出 autofs 的 程序識別碼。 你應該有一個程式叫做 killall ,這可以讓你做到這些: (幸好有這些個建議) ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount 否則,你要允許你的使用者送 -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 的入門手冊在 url url=" http://www.linuxhq.com/lg/issue24/nielsen.html">。 也可以參考 am-utils 在 [1]http://www.cs.columbia.edu/~ezk/am-utils (感謝這些 URL) References 1. http://www.cs.columbia.edu/~ezk/am-utils