趁著有空,慢慢把一些文章補齊,這篇要記錄可以掛載遠端空間的方法,很簡單也很實用,小蛙目前的主機上也都有這些設定。

關於掛載(Mount)

有使用過網路芳鄰的網友應該都知道,可以把網芳空間掛載成像是 Z 槽;或是大家都使用過隨身碟吧!插上隨身碟的時候,OS 把這個外來裝置掛載在系統上(也許是 F 槽),讓主要的系統可以存取這個裝置中的東西,今天要講的是在 Ubuntu 上透過網路來掛載遠端空間。

小蛙主機的硬碟只有少得可憐的 20GB ,如果多放幾個檔案跟圖片,加上備份檔案,很快就面臨到硬碟炸裂的狀況,因此小蛙將上述這些東西擺在另外一台主機上,這樣一來主要主機可以使用到這些檔案,但是又不會占用到少少的 20GB SSD,就有點上面提到的,把 USB 隨身碟插進電腦,差別是一個掛載是直接連結本機,另一個則是透過網路掛載。

使用 sshfs

在 Ubuntu 要使用 sshfs 相當簡單,只需要 apt-get 就可以直接使用(更多參數看這裡),因為透過 SSH 連到遠端主機,如果沒有設定金鑰的話,總不可能每次連線都要輸入密碼吧!請先參考登入 Ssh 免輸入帳號密碼,設定完成並且確認 ssh 到遠端主機不用輸入密碼後,再繼續往下走喔!

# 安裝 sshfs
apt-get install sshfs

# 掛載遠端空間
# sshfs -o nonempty -o allow_other 帳號@主機:要掛載的遠端資料夾 掛載到本機的資料夾
# 以 nginx 帳號透過 ssh 遠端連線到 abc.com.tw 並將 /root/images 掛載到本機的 /root/remote_folder 下使用
sshfs -o nonempty -o allow_other [email protected]:/root/images /root/remote_folder

# -o 是增加的屬性,後面接屬性
# nonempty : 如果掛載的本機磁碟非空也沒關係
# allow_other : 預設掛載後只有 root 可以存取,增加這個選項讓其他使用者也可以存取

小蛙一開始傻傻的,就這樣設定上去,直到有一天要用的時候發現,奇怪,裝置不見了,再掛載一次又好了,才發現還有「斷線」這件事情,當時 Google 出一個方法,可以寫腳本放在 crontab 來做這項檢查(這裡看看就好,先不要照著做)

if mount | grep "/root/images" > /dev/null; then
        echo "/root/images already mounted";
else
        echo "mount /root/images now";
        umount [email protected]:/root/images
        sshfs -o nonempty -o allow_other [email protected]:/root/images /root/remote_folder
fi

首先我們知道在 command line 下mount可以看到目前所有已掛載的裝置(也可以用df來看目前有哪些裝置),上面這段腳本在做的事情很簡單,就是檢查mount輸出的文字中有沒有包含我們掛載的字串,如果有的話就寫 log 然後什麼事都不做,如果沒有掛載的話先做 umount 解除掛載,做這件事的原因是為了避免掛載兩次發生問題,之後再做 mount。

小蛙剛剛 google 了一下發現,sshfs 有一個參數就是 reconnect 啊啊啊!!!根據 SSHFS – auto reconnect 提到的方法,斷線的時候 sshfs 就會自己重連囉!真的很方便。

sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 server:/path/to/mount

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *