在SmartOS中,使用vmadm创建工具创建虚拟机。 此工具需要一个JSON有效负载,并使用输入JSON中指定的属性创建“kvm”或“joyent” brand zone。 正常输出是一系列单行JSON对象,其类型设置为以下之一:

成功

失败

更新

注意

每个对象至少具有“类型”和“消息”字段。 “成功”或“失败”类型的消息将跟随退出状态0表示成功的进程,所有其他退出指示失败。

vmadm create -f <filename.json>

Getting Started

你会需要
     SmartOS的最新版本,可从http://download.joyent.com(此处的发布详情)
     您的操作系统的ISO选择
     VNC客户端

The Machine JSON Description

将下面的代码片段保存到一个名为“vmspec.json”的文件中。 您可以根据需要更改网络和其他变量。 这并不是所有选项的详尽列表。 对于所有选项,请参阅vmadm(1m)。 (size列在MiB中)

{
  "brand": "kvm",
  "vcpus": 1,
  "autoboot": false,
  "ram": 1024,
  "resolvers": ["208.67.222.222", "208.67.220.220"],
  "disks": [
    {
      "boot": true,
      "model": "virtio",
      "size": 40960
    }
  ],
  "nics": [
    {
      "nic_tag": "admin",
      "model": "virtio",
      "ip": "10.88.88.51",
      "netmask": "255.255.255.0",
      "gateway": "10.88.88.1",
      "primary": 1
    }
  ]
}
对于2011年12月15日之前的版本,您需要在根目录中添加default_gateway属性:
"default_gateway": "10.88.88.1",
这必须与nics之一的网关相匹配,以便默认网关和解析器将通过VM中的DHCP进行设置。
当安装不支持virtio支持的操作系统,而不是在磁盘上使用virtio使用ide和e1000作为网络模型。

Create the Empty Virtual Machine

使用创建机器工具创建空虚拟机。 请注意,虚拟机将不会运行。

$ vmadm create

注意UUID在最后一步。 该UUID是虚拟机的ID,将用于在其生命周期的其余部分引用它。

$ vmadm create < vmspec.json
 
{"percent":1,"type":"update","message":"checking and applying defaults to payload"}
{"percent":2,"type":"update","message":"checking required datasets"}
{"percent":28,"type":"update","message":"we have all necessary datasets"}
{"percent":29,"type":"update","message":"creating volumes"}
{"percent":51,"type":"update","message":"creating zone container"}
{"percent":94,"type":"update","message":"storing zone metadata"}
{"uuid":"b8ab5fc1-8576-45ef-bb51-9826b52a4651","type":"success","message":"created VM"}

Copy your OS ISO to the zone

$ cd /zones/b8ab5fc1-8576-45ef-bb51-9826b52a4651/root/
$ wget http://mirrors.debian.com/path_to_an_iso/debian.iso

Ensure permissions are correct on the ISO

$ chown root debian.iso
$ chmod u+r debian.iso

Boot the VM from the ISO Image(从ISO映像启动虚拟机)

vmadm是虚拟机管理工具。 它用于在虚拟机已存在之后管理虚拟机的生命周期。 我们将引导我们刚刚创建的虚拟机,但是在第一次出现之时,请告诉它启动ISO映像。

vmadm boot b8ab5fc1-8576-45ef-bb51-9826b52a4651 order=cd,once=d cdrom=/debian.iso,ide
请注意,ISO映像的路径将是ISO到您所在zone的相对路径,这就是为什么以“/”开头

Use VNC to Connect to the VM

vmadm工具可以打印出VM上的信息。 您还可以附加一个部分进行特定打印。

$ vmadm info b8ab5fc1-8576-45ef-bb51-9826b52a4651 vnc
 
{
  "vnc": {
    "display": 39565,
    "port": 45465,
    "host": "10.99.99.7"
  }
}
您的虚拟机正在运行。 您可以关闭虚拟机,它仍然保留在磁盘上。 要了解有关管理虚拟机生命周期的更多信息,请运行vmadm --help。

Troubleshooting(故障排除)

Zone Networking Issues

如果您将SmartOS作为guest虚拟机运行,则可能会与您的zone有联网问题。 为了解决这个问题,我们需要创建一个桥梁。
如果您查看https://github.com/joyent/smartos-overlay/blob/master/lib/svc/method/net-physical#L179您可以看到该脚本将为vmare产品创建桥梁,但如果您是 使用VirtualBox或Parallells,那么您需要手动执行。

$ ifconfig -a
e1000g0: flags=1100943<UP,BROADCAST,RUNNING,PROMISC,MULTICAST,ROUTER,IPv4> mtu 1500 index 2
        inet 10.216.214.7 netmask ffffff00 broadcast 10.216.214.255
        ether 8:0:27:e1:35:cb
 
$ dladm create-bridge -l e1000g0 vboxbr
您的区域现在应该能够访问网络。 您不需要更改任何zone的nic_tag,将它们保留为“admin”或“external”。

有一种方法可以在启动时将其添加到/ opt / custom / smf中的smf脚本。 这是一个很好的写作,告诉你它是如何做的。 http://www.psychicfriends.net/blog/archives/2012/03/21/smartosorg_run_things_at_boot.html#003979

Further Reading

Those versed in JavaScript can learn a lot more by reading the vmadm.js source.

How to create a Virtual Machine in SmartOS的更多相关文章

  1. fail to create java virtual machine..

    今天打开zend stdio 的时候 出现的错误  fail to create java virtual machine... 然后找度娘了,,都说改xxxxx, 我打开360  ,把内存清理了一遍 ...

  2. zend studio failed to create java virtual machine无法启动的解法

    zend studio failed to create java virtual machine 解决方案:在安装目录下修改ZendStudio.ini中第十四行处改成 -Xmx512M. -sta ...

  3. Kettle启动时报错Cannot create java virtual machine & A java exception has occurred

    开源免费--最喜欢的四个字没有之一 1.官网下载 https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 下载完后,解压即 ...

  4. Eclipse "Could not create java virtual machine"的问题解决

    今天到了新的环境,需要重新搭建Android的开发环境,下载eclipse并安装了JDK1.6后,启动eclipse,发现出现了错误“Could not create Javavirtual mach ...

  5. 在eclipse中启动tomcat时报错:could not create java virtual machine... a fatal error...

    控制台报错:unrecoginzed option: --launcher XXMaxPermSize 解决方法:-〉 perference -> tomcat ->JVM setting ...

  6. How to run a (Tomcat)Java application server on a Azure virtual machine

    http://www.windowsazure.com/en-us/documentation/articles/virtual-machines-java-run-tomcat-applicatio ...

  7. [SQL in Azure] Provisioning a SQL Server Virtual Machine on Azure

    http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/ Provi ...

  8. [Windows Azure] Create a Virtual Network for Site-to-Site Cross-Premises Connectivity

    Create a Virtual Network for Site-to-Site Cross-Premises Connectivity This tutorial walks you throug ...

  9. [Windows Azure] Create a Virtual Network in Windows Azure

    Create a Virtual Network in Windows Azure This tutorial walks you through the steps to create a basi ...

随机推荐

  1. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  2. windows git 清除已保存的密码

    进入git目录 右键 git-bash.exe 执行命令: git config --system --unset credential.helper 然后执行git clone http://... ...

  3. jenkins的war包下载地址

    https://jenkins.io/doc/book/installing/

  4. java.lang.Object类

    Object类是java所有对象的基类,包含着java最核心和最基础的类,在编译时会自动导入.具体的类结构图: 1.构造器 public Object(); 大部分情况下,Java中通过形如 new ...

  5. mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  6. CentOS 6.6下安装配置Tomcat环境

    本文转载至:http://www.linuxidc.com/Linux/2015-08/122234.htm 实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验 ...

  7. javascript事件处理程序的3个阶段

    第一阶段:HTML事件处理阶段.就是在元素里面添加onclick之类的属性来调用某个函数. <input type="button" value="单击" ...

  8. Java 集合 线程安全

    Java中常用的集合框架中的实现类HashSet.TreeSet.ArrayList.ArrayDeque.LinkedList.HashMap.TreeMap都是线程不安全的,如果多个线程同时访问它 ...

  9. js-传送file

    这是选择文件的标签 <input type="file" class="add-image-input"> 这是js实现传输文件 var addIm ...

  10. SHOW CREATE语句

    show create table tablename 查看某表的建表语句 同理查看存储过程 show create procedure  sp_name