SmartOS上更新虚拟机配置

SmartOS上更新虚拟机配置

这里以一个SmartOS zone更新IP及网关为例。 用到的命令是vmadm update UUID < json.file。相关配置都需要以json的格式给出,这个我有点不习惯。或许还有其它方式,不过我不了解。 我对json不熟悉,也懒得写这样的一个文件,我首先用vmadm get UUID导出zone的现有配置:

然后提取出和IP及网关相关的部分,并写入到一个名为newnic.json的文件:

编辑此文件,将最后一行的逗号去掉,将第一行的”nics”改为“update_nics”(重要),把IP地址和网关地址改成自己需要的IP,然后将所有内容放在花括号里面。如下:

然后使用vmadm update命令更新此虚拟机的配置:

最后,使用vmadm get UUID命令来验证。 PS: vmadm的手册里有下面的例子。但是我用vmadm update UUID ip=newip的方式无法成功修改。我的猜测是如果配置项是在一个list或dict中,则只能使用json格式。   Example 7: Set the quota to 40G for VM 54f1cc77-68f1-42ab-acac-5c4f64f5d6e0 vmadm update 54f1cc77-68f1-42ab-acac-5c4f64f5d6e0 quota=40

Read More

一次SmartDataCenter headnode启动失败的修复

headnode启动时显示: hash mismatch press any key to reboot 重新启动了几次都是如此。即使是rescue模式也是一样。幸好这只是台测试用的机器,如果真的是一个负责整个数据中心的headnode无法启动,那后果简直不堪设想。目前我还没看到headnode有什么容错的方案。 记得上次关机之前运行了sdcadm experimental update-*命令更新过一些东西,或许是这个过程中出了什么问题。 尝试了几种方法,发现把headnode中的config文件备份下来,重新制作一个启动的U盘,然后把config文件再拷贝过去就可以重新启动了,原来的zones貌似都可正常启动。 具体如下: 把headnode启动U盘插入到一台Linux机器,把它根目录下的config文件拷贝出来。如果你的已经无法读取了,那我也没办法。 使用原来下载的img文件重新制作一个启动U盘。 使用此U盘启动headnode机器,使用rescue模式。同样需要在grub中设置os_console参数。 使用root登陆(密码文件在下载img文件的压缩包中) 登陆后设置网络,使此机器可以连通存放config文件的Linux机器。我要使用scp命令来复制。具体可参考SmartOS的网络配置方式。 在headnode机器上,进入到/mnt/usbkey目录中,将config文件复制到此文件夹下 完成后重新启动即可解决上述启动问题。2016/04/30 更新: 再次重启后发现headnode会默认使用PXE方式启动,这样无法启动headnode。修复方法是在headnode自动后,以root登陆,运行/usbkey/scripts/mount-usb.sh 脚本以挂载U盘,然后编辑/mnt/usbkey/boot/grub/menu.lst文件,将“default 0”这行改为“default 1”即可。0对应的就是PXE启动,1对应的就是“Live 64bit”的启动方式。

Read More

smartos上如何安装软件

smartos上如何安装软件

SmartOS使用NetBSD的pkgsrc来安装软件。 具体方式如下: 安装pkgin工具: 先到 http://pkgsrc.joyent.com/packages/SmartOS/bootstrap/上看看最新的pkgin源码包是什么。如目前最新为bootstrap-2015Q4-x86_64.tar.gz 安装

重新编译软件包数据库

更新pkgin数据库

安装软件

pkgin常用命令列表 Command Description pkgin up Updates the pkgin database. You should run this command before installing any new packages just in case. pkgin ls Lists all the installed packages pkgin av Lists all of the available packages pkgin in Installs a package pkgin rm Removes a package pkgin se Searches for a package pkgin With no additional arguments, lists all of the available pkgin commands.

Read More