• How to create a Virtual Machine in SmartOS


    在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.

  • 相关阅读:
    BFC——块级格式化上下文
    深入浅出——float
    NodeJS 学习记录
    JavaScript高级程序设计 第六章 面向对象程序设计
    软件项目管理课感想
    第八周PSP 新折线图和饼图 个人时间管理
    第七周PSP 新折线图和饼图 个人时间管理
    Alpha、伪Beta 发布个人感想与体会
    ”单元测试“理解与感悟
    编程
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/6796661.html
Copyright © 2020-2023  润新知