前言
為了更好的理解本文的內(nèi)容,讀者需要有一些有關(guān)SmartOS的基本知識,可以閱讀本人之前寫的文章。
這里首先想談一下放棄Triton的原因:
- 正如之前所說,SmartOS是一個駐內(nèi)存的操作系統(tǒng),所以本人認(rèn)為它正確的啟動方式應(yīng)該是通過網(wǎng)絡(luò)啟動,但是Triton卻推行每臺物理機配備一個啟動U盤的方式,這種設(shè)計不太能夠理解。
- Triton采用的是主從模式來實現(xiàn)集群管控,不僅要獨占掉一臺物理機的資源做主,而且面臨單點故障,更重要的是沒有完善的方法來解決這些問題,因此集群是非常不可靠的。
- Triton作為一個云平臺管理軟件,從安裝開始就和操作系統(tǒng)有太多耦合,導(dǎo)致不能自由的配置和控制操作系統(tǒng),而因為Triton本身開發(fā)也并不完善,所以有些簡單的需求也難以實現(xiàn)。
- Triton還有很多BUG尚未解決,本人沒有能力去修復(fù),繞過的代價又太大。
所以最終還是決定回歸裸的SmartOS操作系統(tǒng)。
本文的內(nèi)容在官方文檔上都會有更詳細(xì)的說明,讀者可以做更深入的閱讀,如果發(fā)現(xiàn)錯誤,歡迎指正。
啟動盤制作
首先去官網(wǎng)下載想要安裝的版本。
下載地址:https://wiki.smartos.org/display/DOC/Download+SmartOS
下載完畢后解壓,將U盤插入,再刷到U盤里就行了,以下以本人的OSX為例,其他的操作系統(tǒng)可以參考官方文檔:https://wiki.smartos.org/display/DOC/Creating+a+SmartOS+Bootable+USB+Key
查看U盤在本地系統(tǒng)中的設(shè)備號。
diskutil list
本人的是disk2,取消該設(shè)備的掛載。
diskutil unmountDisk /dev/disk2
將鏡像刷入設(shè)備。
sudo dd bs=1m if=smartos-latest-USB.img of=/dev/rdisk2
設(shè)置設(shè)備的主分區(qū)。
fdisk -e /dev/disk2
f 1
p
w
q
最后彈出設(shè)備。
diskutil eject /dev/disk2
安裝與啟動
將制作好的啟動盤插入物理機,并且讓物理機通過U盤啟動,從默認(rèn)的GRUB選項就能進入安裝界面了。
安裝界面是命令行交互的界面,根據(jù)提示依次配置好主網(wǎng)卡、IP、網(wǎng)關(guān)、磁盤冗余級別、時間服務(wù)器、密碼即可,沒有什么復(fù)雜的配置。
配置完后需要重新啟動,現(xiàn)在只能通過U盤來啟動,依然從默認(rèn)的GRUB選項進入,這時候操作系統(tǒng)會去檢查寫入磁盤的文件,發(fā)現(xiàn)已經(jīng)安裝了系統(tǒng),就不會再次安裝了,而是讀取文件進行配置,然后進入系統(tǒng)。
配置系統(tǒng)
系統(tǒng)的配置文件存儲在/usbkey/config文件中,可以通過vim編輯器打開進行修改。
vim /usbkey/config
下面簡單解釋一下配置文件。
# 主nic tag,名稱必須為admin,后面接物理網(wǎng)口的mac地址或者聚合網(wǎng)口的名稱。
admin_nic=90:e2:ba:47:c4:ce
# 主nic tag的mtu,作為連接到該tag的虛擬網(wǎng)卡的默認(rèn)mtu,一般萬兆網(wǎng)絡(luò)才會修改這個值。
admin_mtu=9000# global zone的連接到admin tag的虛擬網(wǎng)卡。
admin_ip=10.16.1.201
admin_netmask=255.255.255.0
admin_gateway=10.16.1.201# 聚合網(wǎng)口,在名稱后加上_aggr后綴,然后將聚合的網(wǎng)口的mac地址用逗號分隔依次寫下。
aggr0_aggr=90:e2:ba:47:c4:cc,90:e2:ba:47:c4:cd
aggr0_mtu=9000
aggr0_lacp_mode=active# 自定義的nic tag,在名字后加上_nic后綴,后面接物理網(wǎng)口的mac地址或者聚合網(wǎng)口的名稱。
workload_nic=aggr0
workload_mtu=9000# global zone的連接到自定義tag的虛擬網(wǎng)卡,注意要加數(shù)字標(biāo)號。
workload0_ip=172.16.1.201
workload0_netmask=255.255.255.0
workload0_gateway=172.16.1.1# global zone的默認(rèn)網(wǎng)關(guān)。
headnode_default_gateway=10.16.1.1
# global zone的dns解析服務(wù)器。
dns_resolvers=10.16.1.20,10.16.1.21,114.114.114.114,8.8.8.8
# global zone的dns搜索域名。
dns_domain=base.aorise.org
# global zone的時間服務(wù)器。
ntp_hosts=0.smartos.pool.ntp.org
# 虛擬機的默認(rèn)時間服務(wù)器。
compute_node_ntp_hosts=10.16.1.201
# global zone的域名。
hostname=cs-office-1
有關(guān)配置文件的補充:
- global zone本質(zhì)上來說是一個虛擬機,只是它擁有控制操作系統(tǒng)的功能。
- 這個配置文件里面同時包含了操作系統(tǒng)級別的配置與global zone單獨的配置。比如nic tag是針對所有虛擬機定義的,而網(wǎng)卡只是針對global zone定義。
- global zone不需要為每一個nic tag都配置一個虛擬網(wǎng)卡。
- 不同的nic tag是可以共享物理網(wǎng)口的,但是不能共享聚合網(wǎng)口,因為聚合網(wǎng)口的工作模式和非聚合網(wǎng)口不一樣。
- lacp是網(wǎng)口的聚合模式,需要操作系統(tǒng)和交換機同時配置來協(xié)作。
通過dladm指令可以查看物理網(wǎng)口的狀態(tài)以及mac地址。
dladm show-phys
dladm show-phys -m
為了讓防止配置文件編輯錯誤導(dǎo)致物理機無法重啟,可以先通過系統(tǒng)命令來測試一下,該命令會將某些配置先生效。
sysinfo -u
升級
一般每兩周Joyent就會發(fā)布一個新的release。由于SmartOS駐內(nèi)存的特性,升級它非常方便,只需要更換啟動鏡像,再重啟物理機就行了。
重裝
有時候需要重新安裝SmartOS操作系統(tǒng),而將物理磁盤進行格式化是一個非常耗時的工作,SmartOS的所有數(shù)據(jù)都存儲在zpool中,所以可以通過清理zpool來達到格式化的效果。
正常登錄
正常登錄的系統(tǒng)通過設(shè)置清理標(biāo)志讓系統(tǒng)清理zpool,然后重啟。
zfs set smartdc:factoryreset=yes zones/var
reboot
non-install模式登錄
在啟動操作系統(tǒng)前的GRUB界面還有一個啟動選項是non-install模式,該模式下只會啟動操作系統(tǒng)而不讀取任何配置,包括網(wǎng)卡、zpool。但是因為zpool是實際存儲在磁盤中的,所以可以將zpool導(dǎo)入再清除。
默認(rèn)zpool的名稱是zones。
zpool import zones
zpool destroy zones
reboot