天天看點

Autofs自動挂在實作

Autofs介紹:

<code>mount是用來挂載檔案系統的,可以在系統啟動的時候挂載也可以在系統啟動後挂載。對于本地固定設</code>

<code>備,如硬碟可以使用mount挂載;而CD光牒、軟碟、NFS、SMB等檔案系統具有動态性,即需要的時候才有</code>

<code>必要挂載。光驅和軟碟我們一般知道什麼時候需要挂載,但NFS和SMB共享等就不一定知道了,即我們</code>

<code>一般不能及時知道NFS共享和SMB什麼時候可以挂載。而autofs服務就提供這種功能,好像windows中的</code>

<code>光驅自動打開功能,能夠及時挂載動态加載的檔案系統。免去我們手動挂載的麻煩。要實作光驅,軟碟</code>

<code>等的動态自動挂載,需要進行相關的配置。</code>

Autofs特點:

<code> </code><code>Autofs與Mount/Umount的不同之處在于,它是一種看守程式。如果它檢測到使用者正試圖通路一個尚未</code>

<code> </code><code>挂接的檔案系統,它就會自動檢測該檔案系統,如果存在,那麼Autofs會自動将其挂接。另一方面,</code>

<code> </code><code>如果它檢測到某個已挂接的檔案系統在一段時間内沒有被使用,那麼Autofs會自動将其解除安裝。是以一</code>

<code> </code><code>旦運作了Autofs後,使用者就不再需要手動完成檔案系統的挂接和解除安裝。</code>

Autofs常用配置:

<code>Autofs需要從/etc/auto.master檔案中讀取配置資訊。該檔案中可以同時指定多個挂接點,由Autofs</code>

<code>來挂接檔案系統。檔案中的每個挂接點單獨用一行來定義,每一行可包括3個部分,分别用于指定挂接</code>

<code>點位置,挂接時需使用的配置檔案及所挂接檔案系統在空閑多長時間後自動被解除安裝。例如在檔案中包括</code>

<code>了如下一行:  </code>

<code>  /auto /etc/auto.misc --timeout 60</code>

<code>  </code>

<code>  其中第一部分指定一個安裝點為/auto,第二部分指定該挂接點的配置檔案為/etc/auto.misc,</code>

<code>  第三部分指定所挂接的檔案系統在空閑60秒後自動被解除安裝。 </code>

<code>  檔案/etc/auto.misc的示例如下:</code>

<code>  cd -fstype=iSO9660,ro :/dev/cdrom</code>

<code>  fd -fstype=msdos :/dev/fd0</code>

<code>  檔案每一行都說明某一個檔案系統如何被挂接。其中第一行指定将/dev/cdrom挂接在/auto/cd中,</code>

<code>  第二行指定将/dev/fd0挂接在/auto/fd中。每一行的第二個值-fstype是一個可選項,用來表明所</code>

<code>  挂接的檔案系統的類型和挂接選項,在mount指令中能使用的挂接選項同樣适用于-fstype。</code>

廢話不多說了,下面直接給出實戰示範步驟

實驗環境:

NFS 伺服器:

IP:192.168.112.130

<code>[root@node03 ~]</code><code># cat /etc/redhat-release </code>

<code>CentOS release 6.6 (Final)</code>

<code>[root@node03 ~]</code><code># uname -r</code>

<code>2.6.32-504.el6.x86_64</code>

<code>[root@node03 ~]</code><code>#</code>

<code>[root@node03 ~]</code><code># getenforce</code>

<code>Disabled</code>

<code>[root@node03 ~]</code><code># service iptables status</code>

<code>iptables: Firewall is not running.</code>

用戶端:

IP:192.168.112.129

<code>[root@node02 ~]</code><code># cat /etc/redhat-release </code>

<code>[root@node02 ~]</code><code># uname -r</code>

<code>[root@node02 ~]</code><code>#</code>

<code>[root@node02 ~]</code><code># getenforce</code>

<code>[root@node02 ~]</code><code># service iptables status</code>

1、NFS伺服器安裝nfs服務:

<code>[root@node03 ~]</code><code># yum install rpcbind nfs nfs-utils</code>

<code>[root@node03 ~]</code><code># service rpcbind start</code>

<code>Starting rpcbind: [  OK  ]</code>

<code>[root@node03 ~]</code><code># service nfs start</code>

<code>Starting NFS services:  [  OK  ]</code>

<code>Starting NFS quotas: [  OK  ]</code>

<code>Starting NFS mountd: [  OK  ]</code>

<code>Starting NFS daemon: [  OK  ]</code>

<code>Starting RPC idmapd: [  OK  ]</code>

建立兩個共享目錄:cvxtmp和cvxtmp2

<code>[root@node03 ~]</code><code># mkdir -p /cvxtmp</code>

<code>[root@node03 ~]</code><code># mkdir -p /cvxtmp2</code>

将磁盤/dev/sdb和/dev/sdc分别挂在到cvxtmp和cvxtmp2

<code>[root@node03 ~]</code><code># df -Th</code>

<code>Filesystem     Type   Size  Used Avail Use% Mounted on</code>

<code>/dev/sda2</code>      <code>ext4    97G  3.3G   89G   4% /</code>

<code>tmpfs          tmpfs  236M   12K  236M   1% </code><code>/dev/shm</code>

<code>/dev/sda1</code>      <code>ext4   976M   27M  898M   3% </code><code>/boot</code>

<code>/dev/sdb</code>       <code>ext4    50G   94M   47G   1% </code><code>/cvxtmp2</code>

<code>/dev/sdc</code>       <code>ext4   4.9T  8.4G  4.6T   1% </code><code>/cvxtmp</code>

2、修改nfs配置檔案,将cvxtmp和cvxtmp2共享出去

<code>[root@node03 ~]</code><code># cat /etc/exports </code>

<code>/cvxtmp</code>   <code>*(rw,no_all_squash,no_subtree_check,</code><code>sync</code><code>)</code>

<code>/cvxtmp2</code>  <code>*(rw,no_all_squash,no_subtree_check,</code><code>sync</code><code>)</code>

<code>[root@node03 ~]</code><code># </code>

<code>[root@node03 ~]</code><code># showmount -e 192.168.112.130</code>

<code>Export list </code><code>for</code> <code>192.168.112.130:</code>

<code>/cvxtmp2</code> <code>*</code>

<code>/cvxtmp</code>  <code>*</code>

3、安裝autofs服務

[root@node02 ~]# yum install autofs -y

安裝完成之後,在/etc/下會有幾個檔案,如下所示:

<code>[root@node02 ~]</code><code># ls -l /etc/auto.*</code>

<code>-rw-r--r-- 1 root root   78 Aug  3 16:49 </code><code>/etc/auto</code><code>.home</code>

<code>-rw-r--r-- 1 root root  690 Aug  3 17:09 </code><code>/etc/auto</code><code>.master</code>

<code>-rw-r--r-- 1 root root  524 Mar 23 05:59 </code><code>/etc/auto</code><code>.misc</code>

<code>-rwxr-xr-x 1 root root 1260 Mar 23 05:59 </code><code>/etc/auto</code><code>.net</code>

<code>-rwxr-xr-x 1 root root  687 Mar 23 05:59 </code><code>/etc/auto</code><code>.smb</code>

<code>You have new mail </code><code>in</code> <code>/var/spool/mail/root</code>

其中auto.master是主配置檔案,之後我們要建立一個檔案auto.home,然後将要挂載到本地的

分區的目錄寫入其中:

<code>[root@node02 ~]</code><code># cat /etc/auto.home </code>

<code>/cvxtmp</code>  <code>-rw,soft,intr node03:</code><code>/cvxtmp</code>

<code>/cvxtmp2</code>  <code>-rw,soft,intr node03:</code><code>/cvxtmp2</code>

此時編輯/etc/auto.master,将auto.home檔案添加進去,autofs在啟動時加載auto.home,"/-    /etc/auto.home"

<code>[root@node02 ~]</code><code># cat /etc/auto.master </code>

<code>#</code>

<code># Sample auto.master file</code>

<code># This is a 'master' automounter map and it has the following format:</code>

<code># mount-point [map-type[,format]:]map [options]</code>

<code># For details of the format look at auto.master(5).</code>

<code>/misc</code>   <code>/etc/auto</code><code>.misc</code>

<code># NOTE: mounts done from a hosts map will be mounted with the</code>

<code>#       "nosuid" and "nodev" options unless the "suid" and "dev"</code>

<code>#       options are explicitly given.</code>

<code>/net</code>    <code>-hosts</code>

<code>/-</code>      <code>/etc/auto</code><code>.home</code>

<code># Include central master map if it can be found using</code>

<code># nsswitch sources.</code>

<code># Note that if there are entries for /net or /misc (as</code>

<code># above) in the included master map any keys that are the</code>

<code># same will not be seen as the first read key seen takes</code>

<code># precedence.</code>

<code>+auto.master</code>

然後重新開機autofs服務:

<code>[root@node02 ~]</code><code># service autofs restart</code>

<code>Stopping automount: [  OK  ]</code>

<code>Starting automount: [  OK  ]</code>

檢視挂在情況,結果發現我們配置的挂在分區居然沒有挂在過來,難道配置錯誤?

<code>[root@node02 ~]</code><code># df -Th</code>

<code>/dev/sda2</code>      <code>ext4    97G  3.4G   89G   4% /</code>

<code>[root@node02 ~]</code><code># </code>

<code>接下來我們進入挂在的目錄cvxtmp和cvxtmp2</code>

<code>[root@node02 ~]</code><code># cd /cvxtmp</code>

<code>[root@node02 cvxtmp]</code><code># cd ..</code>

<code>[root@node02 /]</code><code># cd cvxtmp2</code>

<code>[root@node02 cvxtmp2]</code><code>#</code>

然後再檢視挂在情況:

<code>[root@node02 cvxtmp2]</code><code># df -Th</code>

<code>Filesystem      Type   Size  Used Avail Use% Mounted on</code>

<code>/dev/sda2</code>       <code>ext4    97G  3.4G   89G   4% /</code>

<code>tmpfs           tmpfs  236M   12K  236M   1% </code><code>/dev/shm</code>

<code>/dev/sda1</code>       <code>ext4   976M   27M  898M   3% </code><code>/boot</code>

<code>node03:</code><code>/cvxtmp</code>  <code>nfs    4.9T  8.4G  4.6T   1% </code><code>/cvxtmp</code>

<code>node03:</code><code>/cvxtmp2</code> <code>nfs     50G   94M   47G   1% </code><code>/cvxtmp2</code>

發現挂在居然已經生效。此時到NFS服務端向這裡兩個目錄分别寫入檔案cvxtmp.txt和cvxtmp2.txt

<code>[root@node03 /]</code><code># echo cvxtmp &gt; /cvxtmp/cvxtmp.txt</code>

<code>[root@node03 /]</code><code># echo cvxtmp2 &gt; /cvxtmp2/cvxtmp2.txt</code>

<code>[root@node03 /]</code><code># cat /cvxtmp/cvxtmp.txt </code>

<code>cvxtmp</code>

<code>[root@node03 /]</code><code># cat /cvxtmp2/cvxtmp2.txt </code>

<code>cvxtmp2</code>

<code>[root@node03 /]</code><code>#</code>

然後再切換到挂載端檢視。

<code>[root@node02 ~]</code><code># cat /cvxtmp/cvxtmp.txt </code>

<code>[root@node02 ~]</code><code># cat /cvxtmp2/cvxtmp2.txt </code>

發現挂在确實生效,至此autofs自動挂在功能已經實作。

      本文轉自027ryan  51CTO部落格,原文連結:http://blog.51cto.com/ucode/1953389,如需轉載請自行聯系原作者

繼續閱讀