
在 Proxmox VE 建立 VM 虛擬機完成後安裝系統,需要先掛載安裝 ISO 檔開機後開始進行安裝程序,有那些方法可以讓我們把手上的 ISO 檔案放進 PVE 的放置區呢?
備註:
- 預設路徑 /var/lib/vz/tmplate/iso/
- 本文範例 /vmimage/template/iso/
方法一
第一種方法,就是最為容易使用,在 WebUI 上簡單點選即可操作。

如圖所示,點選 Storage 儲存區後,進入 Content 內容,再按下 Upload 上傳按鈕即可進入上傳介面,非常容易。
對於經常使用此功能的使用者,應該會發現有幾個問題,雖然不是大問題,但可能造成困擾。
缺點一:介面等待
開始上傳進度以後,使用者會發現這個介面是強制等待的,不像其它 PVE 的作業可以把視窗關閉後會在 Task 作業區繼續進行,而是結束正在進行的上傳作業。
缺點二:搬移等待
當上傳完成以後,我們一般會認為可以開始使用這個 ISO 檔了,但曾經在某一台比較慢的伺服器上發現,明明上傳完成了,怎麼 ISO 檔還不能用?或是掛起來開機了,但是啟動失敗或是安裝時發生錯誤。
仔細看看下方的 Task 作業視窗,就會發現多了一項作業正在進行。

其實,上傳完成不代表真的完成了,PVE 在 WebUI 接受的上傳檔案作業,實際上是先寫入 /var/tmp 內的暫存檔,當上傳完成後才把這個 ISO 檔放置到實際上應該的位置去,所以我們上傳有兩段等待時間,一是上傳,二是複製。
我們可以點選這個項目兩下觀看細節。

所以這項 Copy data 作業未完成之前,任何使用此 ISO 檔的動作都會有問題。
另外,如果 /var/tmp 所在的磁區容量不夠大,當上傳的 ISO 檔超過此區大小時就會造成上傳失敗。
方法二
前面提到,方法一的上傳會有兩個等待階段,若 ISO 檔案很大,那麼等待的時間將會很久,有沒有更快的辦法呢?
有的,我們可以利用 SFTP 工具上傳 ISO 檔案,直接把檔案放到存放 ISO 的專用位置去。

可以利用指令列的 SCP、SFTP 等指令進行上傳,或者使用圖形介面的 FileZilla 動手拖曳,即可完成上傳。
缺點:預先下載
好了,方法一的缺點已經解決,但又想到了一個問題。
既然要用軟體把 ISO 映像檔給丟進去,這表示已經預先下載好了,也就是說還是有兩段作業時間,第一是先下載到工作用電腦,第二是用軟體上傳到 PVE 伺服器。
還有沒有更快的方法?有。
方法三
為了節省先下載到電腦再上傳進 PVE 的時間,我們應該要讓 PVE 直接去抓取所需 ISO 映像檔。
首先,在介面上開啟 Node 節點的 Shell 命令列,或是用 SSH 登入 PVE。

接下來,請準備 ISO 的來源下載位址,以 FreeNAS 為例:

有了下載位址以後,就可以利用指令讓 PVE 直接下載該檔案到指定位置。
下載 ISO 映像檔到指定位置
wget https://download.freenas.org/11.2/STABLE/U1/x64/FreeNAS-11.2-RELEASE-U1.iso
-O /vmimage/template/iso/FreeNAS-11.2-U1.iso
執行以後,就可放著讓 PVE 自己下載了,這個小技巧直接又方便。

參考
- FileZilla - The free FTP solution
https://filezilla-project.org/ - scp(1): secure copy - Linux man page
https://linux.die.net/man/1/scp - wget(1): non-interactive network downloader - Linux man page
https://linux.die.net/man/1/wget

