Ubuntu 使用 SSHFS 掛載遠端空間
趁著有空,慢慢把一些文章補齊,這篇要記錄可以掛載遠端空間的方法,很簡單也很實用,小蛙目前的主機上也都有這些設定。
關於掛載(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 /path/to/mount
解除掛載 sshfs
這篇文章 建議使用 fusermount -u /temp/user/harddrive