centos7无盘启动_200M Linux 可以通过网络启动,批量自动部署或直接无盘运行了 (附配置 iPXE 无盘启动说明)...
之前介紹的 /t/330321 這個系統現在可以無盤啟動了
簡單來說就是通過網絡加載鏡像文件到內存后啟動,現在實驗的這幾十臺機器是通過 http 和 https 進行加載的,
由于主要是加載一個一百多兆鏡像文件,感覺用 tcp 協議比 udp 協議效果好很多。尤其是很多臺機器同時啟動的時候,
使用 udp 的 tftp 時總會有一些失敗的,換過不同的 tftp 服務器都是這樣,而且單臺啟動的時候不能跑滿帶寬。
換成 nginx 當 http 服務器的時候就沒碰到過這種問題,單臺啟動能跑滿帶寬,很多臺同時啟動也都能慢慢加載完。
可能用組播方式會更好吧,但沒細研究組播,感覺現在的 http(s)的方案對我來說夠用了。
在就是得益于系統鏡像體積還算小,可以就這么直接無盤運行, 150MB 內存開銷完全可以接受,這樣還有個好處是
更新的時候只動服務器上的鏡像就可以了,要更新的機器直接重啟就行了。
加載到本機內存相比通過網絡掛載根文件系統的方式在延遲的和穩定性上好太多了,尤其是機器很多的時候。畢竟不受斷網影響。
無盤方式有個問題就是數據怎么回寫,方案非常多,為了簡單起見用了個非常粗暴的方式解決了我的問題。
對于我這的情況,就是怎么讓不同機器加載不同配置,根本不需要什么回寫,那解決起來就簡單多了:
每臺機器除了加載共用的鏡像再根據各自的標識加載一個 tar 包解壓疊加到根文件系統上就行了。
同時為了能自動初始化或者自動安裝,如果文件服務器上沒有那個標識符的文件,還會嘗試加載一個默認的 tar 包,滿足不同環境的制定。
前面廢話一大堆,現在說下怎么用吧。
在已經運行支持 https 的 iPXE 情況下,在 iPXE 命令行輸入下面兩條命令之一就能啟動這個系統了。
chain https://sourceforge.net/projects/lfsp200/files/netboot/boot.ipxe
chain https://l-lfsp200.rhcloud.com/netboot/boot.ipxe
注意你的網絡環境要良好,這可是從大陸以外加載 150MB 左右的文件,自己計算下時間吧。
有的地區可能會遇到 iPXE 網絡加載證書時被打斷的情況,這時就不能加載 https 文件了。這個問題研究了很久,分明那個 boot.ipxe 能下載嘛。
下載過程有個百分比進度,不出意外加載完很快就能啟動了。同事說很神奇,有透明計算的感覺。其實這都是 iPXE 的功勞。
通過公網加載確實是比較慢的,實際用的話還是要自己部署的。下面說下具體怎么操作。
由于是網絡啟動,至少要兩臺機器或者用虛擬機。(在 openwrt/lede 這樣的路由器上配置也是可以的)
首先在一臺機器上安裝 iPXE 啟動環境,這里不需要對主路由器或者提供 dhcp 的機器做任何改動即可完成。
安裝 dnsmasq-2.77test4, 其他版本應該也行,但是我用這個做的實驗。
下載 http://www.thekelleys.org.uk/dnsmasq/test-releases/dnsmasq-2.77test4.tar.xz 并解包
make BINDIR=/usr/bin PREFIX=/usr
make BINDIR=/usr/bin PREFIX=/usr install
建立文件 dnsmasq.proxydhcp 內容如下
########begin########
no-daemon
port=0
log-dhcp
log-queries
dhcp-range=192.168.1.0,proxy #改成你的網段
leasefile-ro
dhcp-match=ipxe,175
dhcp-boot=net:ipxe,http:///netboot/boot.ipxe
pxe-service=x86PC,"iPXE for 200M linux",undionly_menu.kpxe
enable-tftp
tftp-root=/srv/tftp
########end##########
運行
sudo dnsmasq -C dnsmasq.proxydhcp
這樣安裝 dnsmasq 是有些粗糙,下個版本的 200M linux 會內置 dnsmasq ,能通過服務啟動。
還有替代 dnsmasq 的 tftp 功能的性能好一些的 tftp-hpa 也會內置。
這時用網絡啟動同一子網的其他機器能看到一個 iPXE for 200M linux 的菜單,但實際不能真實啟動,這一步就算成功了。
然后下載 https://l-lfsp200.rhcloud.com/netboot/undionly_menu.kpxe 保存到 /srv/tftp 下面。
這時再網絡啟動其他機器,正常的話能看到一個菜單,其中有兩個菜單是用前面的網址啟動系統的。
最后一步下載鏡像文件
在 web 服務器文件目錄下面建立文件夾 netboot
再把 https://l-lfsp200.rhcloud.com/netboot/ 下面的所有文件下載到 netboot 目錄里面。
這一步有個腳本能方便操作
wget https://l-lfsp200.rhcloud.com/netboot/netboot_dl.sh
sh netboot_dl.sh #這個腳本是從 sourceforge 下載文件,可編輯改成從 rhcloud 下載,看那個快吧。
再次網絡啟動其他機器,正常的話會直接啟動系統,看不到剛才那個菜單了。
然后就是怎么讓加載額外的配置文件了。
無盤系統啟動后,進行所需的設置(參考一下之前的帖子介紹),然后進入 /mnt/tmpfs
有一個一串字符的目錄, 忽略.work 后綴的那個。這個目錄就是配置文件了,
把它 tar 成一個 .tar.xz 的文件,放到文件服務器 netboot/ovl 目錄下面。
這臺機器再次啟動的時候就能加載這個文件了。
為了減少體積,可把這個 .tar.xz 解壓到別處刪除一些臨時文件日志文件重新打包的。
如果要把這個文件當作共用的模板,解壓后重命名成 default 再打包成 default.tar.xz 放到 netboot/ovl 下面即可。
羅哩羅嗦算是寫完了,可能說的不太明白,等下次發布的時候弄個腳本自動設置吧。感覺看腳本更清晰。
總結
以上是生活随笔為你收集整理的centos7无盘启动_200M Linux 可以通过网络启动,批量自动部署或直接无盘运行了 (附配置 iPXE 无盘启动说明)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手掌静脉识别——利用深度学习进行ROI的
- 下一篇: Linux 后台运行程序