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