前言
为了更好的理解本文的内容,读者需要有一些有关SmartOS的基本知识,可以阅读本人之前写的文章。
这里首先想谈一下放弃Triton的原因:
- 正如之前所说,SmartOS是一个驻内存的操作系统,所以本人认为它正确的启动方式应该是通过网络启动,但是Triton却推行每台物理机配备一个启动U盘的方式,这种设计不太能够理解。
- Triton采用的是主从模式来实现集群管控,不仅要独占掉一台物理机的资源做主,而且面临单点故障,更重要的是没有完善的方法来解决这些问题,因此集群是非常不可靠的。
- Triton作为一个云平台管理软件,从安装开始就和操作系统有太多耦合,导致不能自由的配置和控制操作系统,而因为Triton本身开发也并不完善,所以有些简单的需求也难以实现。
- Triton还有很多BUG尚未解决,本人没有能力去修复,绕过的代价又太大。
所以最终还是决定回归裸的SmartOS操作系统。
本文的内容在官方文档上都会有更详细的说明,读者可以做更深入的阅读,如果发现错误,欢迎指正。
启动盘制作
首先去官网下载想要安装的版本。
下载地址:https://wiki.smartos.org/display/DOC/Download+SmartOS
下载完毕后解压,将U盘插入,再刷到U盘里就行了,以下以本人的OSX为例,其他的操作系统可以参考官方文档:https://wiki.smartos.org/display/DOC/Creating+a+SmartOS+Bootable+USB+Key
查看U盘在本地系统中的设备号。
diskutil list
本人的是disk2,取消该设备的挂载。
diskutil unmountDisk /dev/disk2
将镜像刷入设备。
sudo dd bs=1m if=smartos-latest-USB.img of=/dev/rdisk2
设置设备的主分区。
fdisk -e /dev/disk2
f 1
p
w
q
最后弹出设备。
diskutil eject /dev/disk2
安装与启动
将制作好的启动盘插入物理机,并且让物理机通过U盘启动,从默认的GRUB选项就能进入安装界面了。
安装界面是命令行交互的界面,根据提示依次配置好主网卡、IP、网关、磁盘冗余级别、时间服务器、密码即可,没有什么复杂的配置。
配置完后需要重新启动,现在只能通过U盘来启动,依然从默认的GRUB选项进入,这时候操作系统会去检查写入磁盘的文件,发现已经安装了系统,就不会再次安装了,而是读取文件进行配置,然后进入系统。
配置系统
系统的配置文件存储在/usbkey/config文件中,可以通过vim编辑器打开进行修改。
vim /usbkey/config
下面简单解释一下配置文件。
# 主nic tag,名称必须为admin,后面接物理网口的mac地址或者聚合网口的名称。
admin_nic=90:e2:ba:47:c4:ce
# 主nic tag的mtu,作为连接到该tag的虚拟网卡的默认mtu,一般万兆网络才会修改这个值。
admin_mtu=9000# global zone的连接到admin tag的虚拟网卡。
admin_ip=10.16.1.201
admin_netmask=255.255.255.0
admin_gateway=10.16.1.201# 聚合网口,在名称后加上_aggr后缀,然后将聚合的网口的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后缀,后面接物理网口的mac地址或者聚合网口的名称。
workload_nic=aggr0
workload_mtu=9000# global zone的连接到自定义tag的虚拟网卡,注意要加数字标号。
workload0_ip=172.16.1.201
workload0_netmask=255.255.255.0
workload0_gateway=172.16.1.1# global zone的默认网关。
headnode_default_gateway=10.16.1.1
# global zone的dns解析服务器。
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的时间服务器。
ntp_hosts=0.smartos.pool.ntp.org
# 虚拟机的默认时间服务器。
compute_node_ntp_hosts=10.16.1.201
# global zone的域名。
hostname=cs-office-1
有关配置文件的补充:
- global zone本质上来说是一个虚拟机,只是它拥有控制操作系统的功能。
- 这个配置文件里面同时包含了操作系统级别的配置与global zone单独的配置。比如nic tag是针对所有虚拟机定义的,而网卡只是针对global zone定义。
- global zone不需要为每一个nic tag都配置一个虚拟网卡。
- 不同的nic tag是可以共享物理网口的,但是不能共享聚合网口,因为聚合网口的工作模式和非聚合网口不一样。
- lacp是网口的聚合模式,需要操作系统和交换机同时配置来协作。
通过dladm指令可以查看物理网口的状态以及mac地址。
dladm show-phys
dladm show-phys -m
为了让防止配置文件编辑错误导致物理机无法重启,可以先通过系统命令来测试一下,该命令会将某些配置先生效。
sysinfo -u
升级
一般每两周Joyent就会发布一个新的release。由于SmartOS驻内存的特性,升级它非常方便,只需要更换启动镜像,再重启物理机就行了。
重装
有时候需要重新安装SmartOS操作系统,而将物理磁盘进行格式化是一个非常耗时的工作,SmartOS的所有数据都存储在zpool中,所以可以通过清理zpool来达到格式化的效果。
正常登录
正常登录的系统通过设置清理标志让系统清理zpool,然后重启。
zfs set smartdc:factoryreset=yes zones/var
reboot
non-install模式登录
在启动操作系统前的GRUB界面还有一个启动选项是non-install模式,该模式下只会启动操作系统而不读取任何配置,包括网卡、zpool。但是因为zpool是实际存储在磁盘中的,所以可以将zpool导入再清除。
默认zpool的名称是zones。
zpool import zones
zpool destroy zones
reboot