posted by tian on november 14, 2018
我的程式和資料都部署在103伺服器上,有一天,我終於實現了乙個想法,興沖沖地想執行看看,但是一看103顯示卡被佔滿了,而且同事要訓練很多天,那怎麼辦,等他訓練完?
等?等是不可能等的。我一看,102伺服器現在還空著,馬不停蹄地開始往102伺服器上拷貝資料和程式,因為資料量大,拷貝了幾個小時,等我終於把102的資料、環境、程式都除錯好,準備開始訓練,發現102顯示卡又被佔了。。。
發現了嗎,在這個過程中,有三點浪費:
1、 時間的浪費:我花費了大量的時間在傳資料、調程式、配環境等瑣事上;
2、精力的浪費:不得不承認,這些瑣事相當耗神,我得考慮路徑,得考慮資料傳輸的完整性,哪一點有問題都得慢慢排查解決;
3、磁碟空間的浪費:每個伺服器都有乙份資料和程式的備份,占用了大量硬碟空間,而且隨著專案的進行,有的備份是過時的,時間久了我自己都不清楚應該用哪個備份了。
所以我想要只保留乙份資料和程式,但是能夠快速掛載到任何伺服器上執行。
你應該想到了,只要把程式和資料放到「行動硬碟」上,用的時候插到對應伺服器上就行了,哈哈。
對於linux伺服器來說,掛載遠端目錄就是這個「行動硬碟」。
方案一 sshfs
ssh和scp大家都用過,sshfs也和他們是乙個「部門」的,他可以讓我們通過ss**件傳輸協議(sftp)掛載遠端的檔案系統並且在本地機器上和遠端的目錄進行互動。
使用方法很簡單:
123
4567
891011
1213
1415
1617
1819
2021
2223
24
# 客戶端安裝sshfs
sudo apt install sshfs
# 建立掛載目錄
mkdir -p ~/sshfs/103
# 用sshfs掛載遠端的檔案系統
sshfs tianws@103:/home/tianws ~/sshfs/103
# 驗證遠端檔案系統掛載成功
ls ~/sshfs/103
df -ht
# 永久掛載遠端檔案系統
sudo vim /etc/fstab
# 新增至最後一行,確保伺服器之間允許ssh無密碼登入
sshfs#tianws@103:/home/tianws ~/sshfs/103 fuse.sshfs defaults 0 0
# 如果伺服器配置為基於ssh秘鑰的認證方式,加入下行
sshfs#tianws@103:/home/tianws ~/sshfs/103 fuse.sshfs identityfile=~/.ssh/id_rsa defaults 0 0
# 更新fstab檔案使修改生效
sudo mount -a
# 解除安裝遠端的檔案系統
umount ~/sshfs/103
方案二 nfs
nfs(network file system)網路檔案系統工具,通過網路使不同機器或者作業系統之間分享部分檔案,用於宿主機和目標機之間的檔案共享。
123
4567
891011
1213
14
# 安裝nfs(兩台機器都需要安裝)
sudo apt install nfs-kernel-server
# 配置
## 服務端103
### (1)在/etc/exports檔案新增可以共享的資料夾和允許的客戶端位址
/home/tianws 172.22.52.120(rw,no_root_squash,async)
### (2)重啟nfs服務
sudo systemctl restart nfs-server.service
## 客戶端120
### (1)建立掛載的目錄
mkdir -p ~/sshfs/103
### (2)掛載遠端目錄
sudo mount -t nfs 103:/home/tianws ~/sshfs/103
因為方案二需要管理員許可權,所以我用的是方案一,通過一通操作,103伺服器上的家目錄被掛載到102上的~/sshfs/103
路徑下,將程式中路徑全部換為相對路徑,就可以直接在102上執行了。
方案二感覺是更通用的方案,服務端配置好後,客戶端不需要認證登入就可以掛載,更加的方便,適合伺服器的管理員做通用的管理。
(1)這一套流程我最擔心的是因為讀取資料方式由直接讀取本地硬碟變成了通過網路讀取遠端目錄,會不會導致資料讀取部分成為訓練的瓶頸。實踐下來,訓練表現良好,幾乎可以用滿gpu,和原來直接硬碟讀取沒有觀察到太大差別。這也可能是因為我的資料是放在103上的固態硬碟,伺服器之間的網路頻寬也足夠,所以沒有引起瓶頸,如果用機械硬碟,也許會降低訓練速度。
(2)在前一篇部落格linux自動監控目錄變化並同步中,我通過監控和同步兩個步驟滿足了需求,這樣其實也會導致產生兩份備份,而且那個方案指令碼略複雜,容易出么蛾子,如果用今天的遠端掛載的方法,可以更完美的解決問題。
系統運維-如何使用sshfs 通過ssh 掛載遠端的linux 檔案系統或者目錄
Linux永久掛載遠端網路目錄
一般我們不永久掛載可以這樣 mount t cifs o user administrator,password fjqx2012,codepage cp936,iocharset cp936 data micaps 從以上可以看出來,遠端主機的使用者名稱跟密碼,然後還有 頁和字符集,還有遠端主機的...
Linux永久掛載遠端網路目錄
一般我們不永久掛載可以這樣 mount t cifs o user administrator,password fjqx2012,codepage cp936,iocharset cp936 data micaps 從以上可以看出來,遠端主機的使用者名稱跟密碼,然後還有 頁和字符集,還有遠端主機的...
使用sshfs掛載遠端目錄
在linux下,有很多掛載遠端 別的機器 目錄的方法,例如nfs。之前一直在用nfs,但是配置起來比較麻煩 需要n個c乙個s 而且不太穩定 斷網後無法解除安裝!現在換sshfs,它基於linux內建的ssh協議,只要又fuse就能正常工作。2 編譯 安裝 相關 tar xzvf sshfs fuse...