TimTong@G 發表於 2018-8-18 21:54

(分享) 使用Synology NAS + iPXE建立遠端啟動系統 (Part II)

本帖最後由 TimTong@G 於 2018-8-19 23:55 編輯

看第一篇請按這裡
看第三篇請按這裡

簡介

      在第一部份裡,我們嘗試使用 Synology NAS 作為一台可遠端啟動系統工具的伺服器。作為一個「大肚量」的儲存裝置,光是裝幾個數百MB的工具程式 ISO 未免太小看一台 NAS 了。因此,這次我們打算給 Synology NAS 一個更大的挑戰 – 安裝一個完整的 Linux 系統。

      當然,對於一個完整的作業系統來說,光是用 HTTP 協定來存取檔案是不夠的 – 它可不像對 ISO 一樣作唯讀動作就好,。這次,我們必需使用一個類似本機磁碟的讀寫機制來存取 NAS 上的空間,亦即是 iSCSI 通訊協定。對於電腦來說,存取網路上的 iSCSI 磁碟是和存取本機磁碟是大同小異的,前提是作業系統本身要有 iSCSI 的驅動程式。幸運的是,近年多數的作業系統 (包括 Windows 及 Linux) 都已包含了 iSCSI 驅動程式,所以這不是問題了。

      和啟動工具程式不同,作業系統需要記載大量和電腦硬體有關的資訊,而不是開機之後再讀取了事。因此,絕大多數的情況下,裝有作業系統的 iSCSI 磁碟是不能共用的 (試想,如果一台裝了 Windows 的硬碟被裝到另一台電腦,它能成功啟用嗎?)。就算是沒有啟用機制的 Linux 作業系統,如果同時有兩台遠端啟動的電腦同時使用一個 iSCSI 硬碟並一起寫入系統設定檔,那我們就可以預期一場災難很快就會發生了。

      為了避免這些問題,我們得先讓 Synology NAS 「記著」我們的電腦,再分別派給它們不同的 iSCSI 硬碟。辦識一台電腦最簡單的方法,就是靠它的網路卡硬體位置 (MAC address) 了。

設定及安裝步驟

      建議各位先參考第一部份,之後再回來行動哦~

      1. 首先啟動我們的測試機器,在「藍色菜單」出現後,回到 Synology NAS 上的 DHCP 伺服器部份,選擇之前所設定的網路再按「編輯」。按一下「DHCP 用戶端清單」,就可以看到所有 Synology NAS已指派的 IP 及使用它們的電腦網路卡硬體位置。


      找到了我們親愛的電腦,當然就要幫它取個名字囉 ~ 按一下左邊相應的鎖使其變為藍色。然後按名單上的「編輯」。

https://i.imgur.com/8ZfcYkz.png

      輸入一個容易記的電腦名稱 (使用一般的 NetBIOS 命名規則)。既然是用 i7-860 的處理器,那就叫它 i7-860 吧(又偷懶 :D)!如果不喜歡已指派的 IP 位置,此時也可以重新打一個。

https://i.imgur.com/ycSwTOl.png
https://i.imgur.com/cXcdo0c.png


      什麼?電腦太多,不知道哪一台才是我們的測試電腦?只要看看哪一個網路卡硬體位置和「藍色菜單」正上方寫的一樣就可以了……

https://i.imgur.com/rOLUCn3.png


      為電腦取了個名字之後,接著當然就要告訴 Synology NAS,「看見」我們的電腦後應該做什麼動作了。

      2. 在 tftp 共用資料夾內新建一個叫 boot 的資料夾,接著在裡面新增一個叫 hostname-您的電腦名稱.ipxe 的檔案 (這些當然也可以叫其他名字,不過menu.ipxe 就要做其他修改了,建議就跟小弟的命名方式吧)。最後在檔案內添加以下內容:

#!ipxe
echo
echo Booting 您的電腦名稱
# set menu-default ubuntu
# set menu-timeout 30000
chain --replace --autofree ${menu-url}

在這裡,我們建立了一個叫hostname-i7-860.ipxe的設定檔。順便請各位留意一下,這裡有三行開頭為「#」的語句,第一行為 ipxe 設定檔的特別標記 (各位會發現每個 ipxe 檔案都是這句開頭的),別把它刪除掉了喔!另外兩行為註解,意思是暫時不起作用。以後我們設定好了之後,再將前面的 # 號移除。

      設定好這部份後,將測試電腦重新開機,各位可以發現原本生硬的「網路卡硬體位置」已經換成我們設定的電腦名稱了。

https://i.imgur.com/jAZUY8T.png

      可能各位會問,「i7-860」是電腦名稱,那前面 iqn 之類的東西又是什麼?其實那句的全名叫 iSCSI 啟動器名稱 (iSCSI initiator name)。簡單來說,它是一台電腦在連上 iSCSI 伺服器前所報上「獨一無二」的名字。其實 iSCSI 啟動器名稱不是隨便取的,但為了方便設定,我們就只把冒號後面的部更改成電腦名稱好了……

      在 Synology NAS 「認得」我們的電腦後,就可以幫它設定 iSCSI 磁碟了。iSCSI 磁碟的設定分為兩個部份:
      目標 (Target) – iSCSI 磁碟的相關資訊,如名稱、設定等
      邏輯單位 (Logical unit) – 真正存放資料的地方,每個邏輯單位都有一個邏輯單位號碼 (Logical unit number,簡稱 LUN)。現在因為這個名稱太簡單好記,許多人 (包括 Synology) 就直接稱呼邏輯儲存區為 LUN 了……

3. 新增一個 iSCSI 磁碟是十分簡單的,跟著以下的步驟做就可以了。首先開啟 iSCSI Manager。

第一頁是已建立的 iSCSI 磁碟清單,現在當然是空的囉!

https://i.imgur.com/w0yTwmr.png

移到 Target 標籤下,按「新增」。

https://i.imgur.com/NBptk01.png

名稱隨便改一個就可以了,但最好是容易辨識的,免得日子一久,連自己都忘記它是裝什麼的。這裡建議叫做 您的電腦名稱.Ubuntu。 Target IQN 名稱 (被召喚的 iSCSI 磁碟也需要名字嘛) 可就不能亂取了,請把它命名為 iqn.2000-01.com.synology: 您的電腦名稱.Ubuntu (中間沒有空格哦)。下面的 CHAP 就別管它了,那是連線安全認證用的,小弟相信應該沒人想入侵各位家裡的 iSCSI 磁碟吧!設定完成後,按下一步。

https://i.imgur.com/YbEInp1.png

接著選擇「新增一個 iSCSI LUN」再按下一步。

https://i.imgur.com/Kev59BV.png

名稱方面就和 Target 一樣就好,位置找個合適的就可以了。輸入一個合理的磁碟容量,小弟相信 30GB 對 Ubuntu Linux 來說應該夠了。Thin Provisioning 是指 Synology NAS 不會把所有的空間都一次安排給所設定的 LUN,而會動態地隨需要增加,不過要留意的是,如果把一個 Thin Provisioning 的 LUN 設定得太大,到時沒有足夠空間的話, LUN 可是會罷工的哦,至於要不要空間回收就交由各位決定了。最後進階 LUN 功能是預設開啟的。

https://i.imgur.com/IW1WbG1.png

按下一步,Synology 會再一次警告日後空間不足的「罷工」問題……

https://i.imgur.com/lowLPAW.png

最後確認設定正確無誤就可以建立 iSCSI 磁碟了。

https://i.imgur.com/2EcrWHU.png


      還有一個非常重要的動作……回到 Target 頁編輯剛才建立的 iSCSI 目標,前往「進階設定」並鈎選「允許來自一個或多個iSCSI 啟動器的多重連線」。因為有時電腦會嘗試重新連線 iSCSI,如果之前的連線沒斷的話可能會出錯……

https://i.imgur.com/kbsLT2k.png

      建立 iSCSI 磁碟後,接著準備 Ubuntu 的網路來源安裝檔,這樣可以確保每次安裝的 Ubuntu 套件都是最新的。以 Ubuntu 16.04 LTS x64 為例,進行以下的步驟:

      4. 下載 Ubuntu Linux 16.04 x64 的網路安裝開機 ISO,以下是其中一個下載鏡像
http://archive.ubuntu.com/ubuntu ... es/netboot/mini.iso

      在 Synology NAS 上的 web 共用資料夾內建立 Install\Ubuntu16\amd64\netboot 四層資料夾 (抱歉小弟有強迫症,分類分得很徹底 XD)。

      打開這個 ISO 檔,將其中所有的檔案都複製到上面所建立的 netboot 資料夾中。

      5. 將 tftp共用資料夾內的 preseed.cfg 檔案複製到 amd64 資料夾,記得是剛才那些檔案的上一層哦。這個檔案是做什麼的呢?它是 Ubuntu Linux 的自動安裝檔案,有了它,安裝時就可以少回答幾條問題。各位可以自行修改其內容,以合乎個人需求。

      如果所有步驟都沒有遺漏的話,在「藍色菜單」內的「Installers…」目錄內,選取「Hook Ubuntu…」就應該可以安裝 Ubuntu 了 (那個 Windows 就先別去理它了,下次再說……)。

https://i.imgur.com/4Esbxt1.png

      安裝的過程中,Ubuntu會問兩條有關 iSCSI 的問題 (啟動器名稱及使用者名稱),直接按 Enter 跳過就好。因為Ubuntu 在連接 iSCSI target 時,很喜歡隨意更改自己的名字 (啟動器名稱) 又不喜歡讓別人追蹤 (不留使用者名稱),就好像 007 一樣 (什麼嘛)。與此同時,Synology NAS iSCSI Manager 的 Target 頁中,相關的 iSCSI 狀態應該為「已連線」。

https://i.imgur.com/TlB8Tk7.png

      選擇安裝磁碟時,Ubuntu 安裝程式亦顯示磁碟是一個 iSCSI 磁碟。

https://i.imgur.com/BW1QLVs.png

      由於這裡是設定成網路安裝,過程可能會比較長,請各位耐心等候。

      安裝完成後重新開機,在「藍色菜單」裡選擇「Boot Ubuntu from iSCSI」即可啟動 Ubuntu Linux。發生緊急狀況時,隨時有個 Linux 可以使用是一件好事。

      進入 Ubuntu Linux 的磁碟工具檢查一下,也發現它用的的確是 iSCSI 磁碟。

https://i.imgur.com/NwdIpjX.png

甚至來個就地升級 Ubuntu Linux 18.04 也沒問題……

https://i.imgur.com/v40KLua.png

      記得之前的hostname-???.ipxe 檔案裡有兩句 # 開頭的句字嗎?現在把 # 號去掉,再來談談它們的用途。

set menu-default 開機選項
這是預設的開機選項。藍色菜單出現後,光棒會停留在這個選項上

set menu-timeout 時間
這是啟動預設開機選項的等候時間 (單位為毫秒)。超過這個等候時間,電腦就會做set menu-default的那件事囉~

      各位不妨親手試試看~

快照及還原

      在 Synology NAS 中,所有的 BtRFS 檔案系統都可使用快照功能來作資料保護,當然 iSCSI 磁碟亦不例外。安裝好 Ubuntu Linux 後,我們可以先將測試機器關閉,再開啟 Snapshot Replication 套件中的「快照」頁,利用其中「iSCSI LUN」的「快照」-> 「拍攝快照」直接拍攝快照 (拍攝快照的速度著實快,真不愧為「秒級」)。

https://i.imgur.com/5jIc7Ud.png
https://i.imgur.com/MuUoaf2.png

      如果未關閉測試機器就拍攝快照,會出現以下的警告,不理它也是可以完成拍攝快照的,只是小弟不敢這麼做而已……

https://i.imgur.com/Iv1Uz89.png

      日後有任何錯誤令 Ubuntu Linux 不能正常運作甚至開機失敗,只要利用 Snapshot Replication 內的「還原」功能,便可輕鬆將 iSCSI 磁碟恢復原狀。

https://i.imgur.com/AQcef8y.png

      如果擔心 NAS 故障導致全部資料遺失,各位亦可使用 Hyper Backup 中的 LUN 備份精靈,將 iSCSI 磁碟備份至其他儲存裝置上,這樣就更安全了。礙於篇幅有限,有關 Hyper Backup 的部分就留待日後再補上了。

總結

      拜科技進步及前人努力所賜,現今要在家庭環境設定遠端開機已經沒有像以前那麼困難了 (雖然還是蠻煩人的)。並且現今 NAS 的功能如此強大,不好好利用怎對得起它呢?

      如果有空的話,下次可以試試遠端啟動 Windows……

TimTong@G 發表於 2018-8-19 22:47

hordelee 發表於 2018-8-19 18:08
非常感謝樓主這般細膩的圖文教學,沒想到NAS的應用在這方面有如此妙用,看來將來有機會應該採買一台NAS來試 ...

大哥言重了。小弟只是趁有空試試自己從沒試過的東西而已。等一下還會有東西放上來哦~~~

TimTong@G 發表於 2018-8-20 20:39

andymingho 發表於 2018-8-20 16:45
看完了一至三篇,我對NAS的應用加深認識,謝謝分享。

小弟也需要各位大大的測試,因為 UEFI 那些部份小弟手上還沒有器材可以試...... {:9_276:}
頁: [1]
查看完整版本: (分享) 使用Synology NAS + iPXE建立遠端啟動系統 (Part II)