[分享] 使用Synology NAS + iPXE建立遠端啟動系統 (Part II – 在iSCSI 磁碟上安裝及啟動 Ubuntu Linux)

Theplum

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

簡介

在第一部份裡,我們嘗試使用 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 及使用它們的電腦網路卡硬體位置。

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



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


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

為電腦取了個名字之後,接著當然就要告訴 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 檔案都是這句開頭的),別把它刪除掉了喔!另外兩行為註解,意思是暫時不起作用。以後我們設定好了之後,再將前面的 # 號移除。

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

可能各位會問,「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 磁碟清單,現在當然是空的囉!

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

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

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

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

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

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

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

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

4. 下載 Ubuntu Linux 16.04 x64 的網路安裝開機 ISO,以下是其中一個下載鏡像
http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/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 就先別去理它了,下次再說……)。

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

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

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

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

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

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

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

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

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

各位不妨親手試試看~

快照及還原

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


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

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

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

總結

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

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

此文將於多站發佈,包括但不限於
Microduo
Mobile01
HKEPC
UWants

原文網址:https://t17.techbang.com/topics/50767-build-a-remote-boot-system-using-synology-nas-ipxe-part-ii-install-and-start-ubuntu-linux-on-an-iscsi-disk?page=1