在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. Django 博客项目01 数据库设计与验证码校验+Ajax登录

    数据库设计 from django.db import models from django.contrib.auth.models import AbstractUser class UserInf ...

  2. Oracle学习操作(3)

    一.if条件语句 set serverout on; ; v ):='world'; begin dbms_output.put_line('hello'||n||v); end; / hello1w ...

  3. 杂项-分布式-EDAS:深度解析阿里云EDAS服务

    ylbtech-杂项-分布式-EDAS:深度解析阿里云EDAS服务 1.返回顶部 1. 深度解析阿里云EDAS服务 弹性伸缩 摘要: 第一种只适用于业务较少的情况,而在新业务不断增加的情况下,增加新应 ...

  4. 9-16Jenkins-2定时任务

    定时任务 选择定时任务,点击 "?" 会弹出使用教程,但讨厌英语的人,自然选择现成的中文. 猪脚踏浪https://www.cnblogs.com/zsg88/p/9178625. ...

  5. 6.22-Servlet

    一.servlet servlet是运行在服务器端的java程序 jsp专注于显示 servlet处理请求和响应 创建servlet 继承HttpServlet 实现servlet接口 配置servl ...

  6. ZooKeeper系列(1) 整体介绍(转)

    原文地址:https://www.cnblogs.com/wuxl360/p/5817471.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术. ...

  7. Windows10右键添加“在此处打开命令窗口"

    今天跑代码时用到了Powershell,有一个环境变量死活都找不到,无奈只好重新回到cmd命令行测试,结果立马就跑通了.-_-||  由于现在Win10默认右键只有Powershell,所以为了以后方 ...

  8. php 编程笔记分享

    php获取POST数据的三种方法php 图片加水印源代码php+ajax+json的一个最简单实例php 汉字转拼音源码php遍历目录,生成目录下每个文件的md5值并写入到结果文件中php实现linu ...

  9. SQL FORMAT() 函数实例

    FORMAT()函数用于对字段的显示进行格式化. SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_name; 参数 描述 co ...

  10. leetcode506

    public class Solution { public string[] FindRelativeRanks(int[] nums) { var list = nums.OrderByDesce ...