Virtualization
Ubuntu
smartos

SmartOSのLX Branded Zone(Linuxコンテナ)を動かす

More than 3 years have passed since last update.

SmartOSは仮想化テクノロジとして以下の機能を持っています。


  • SmartOSによるOS仮想化(コンテナ):


    • SmartOSのZone

    • LinuxのZone(LX Branded Zone)



  • SmartOS組み込みのハイパーバイザベースの仮想化


    • KVM



ここでは、SmarOS上のLinuxコンテナであるLX Branded Zoneを動かしてみます。

SmartOSをVMware Playerで気軽に試してみるには、SmartOSをVMware Playerで動かすを、SmartOSのKVM上でCentOSを動かしみるには、SmartOSのKVMゲストとしてCentOS7.1を動かしてみるをみてみてください。


image source を設定する

SmartOSでは、仮想マシンイメージを imgadm importコマンドでイメージソースから取得します。デフォルトのイメージソースは、images.joyent.comです。LX Branded Zoneのイメージは updates.joyent.comというイメージソースからも入手することができます。そこで、最初にこのイメージソースを追加します。

現在のイメージソースの確認はimgadm sourcesで、追加はimgadm sources -a <URL>です。

# imgadm sources

https://images.joyent.com
# imgadm sources -a https://updates.joyent.com
Added "imgapi" image source "https://updates.joyent.com"
# imgadm sources
https://images.joyent.com
https://updates.joyent.com

imgadm availコマンドで、イメージソースにあるLX Branded Zoneのイメージを確認します。

# imgadm avail | grep lx-

f7c19252-c998-11e4-be95-3315493f3741 lx-centos-6 20150313 other 2015-03-13T15:52:35Z
818cc79e-ceb3-11e4-99ee-7bc8c674e754 lx-ubuntu-14.04 20150320 other 2015-03-20T03:45:09Z
116deb8c-cf03-11e4-9b2d-7b1066800a6a lx-debian-7 20150320 other 2015-03-20T13:14:41Z
eb4128ec-cf12-11e4-960d-8780cec6463f lx-centos-6 20150320 other 2015-03-20T15:08:09Z

ちなみに grep しないでリストすると膨大なリストが得られますがdockerが多数含まれていることがわかります。


LX Branded Zoneのimageをimportする

今回は、Ubuntu 14.04 の LX Branded Zoneを作ることにします。

イメージをimportするコマンドは、imgadm importです。

# imgadm import 818cc79e-ceb3-11e4-99ee-7bc8c674e754

Importing 818cc79e-ceb3-11e4-99ee-7bc8c674e754 (lx-ubuntu-14.04@20150320) from "https://images.joyent.com"
Gather image 818cc79e-ceb3-11e4-99ee-7bc8c674e754 ancestry
Must download and install 1 image (154.3 MiB)
Download 1 image [================================================================>] 100% 154.32MB 534.23KB/s 4m55s
Downloaded image 818cc79e-ceb3-11e4-99ee-7bc8c674e754 (154.3 MiB)
...9e-ceb3-11e4-99ee-7bc8c674e754 [================================================================>] 100% 154.32MB 1.62MB/s 1m35s
Imported image 818cc79e-ceb3-11e4-99ee-7bc8c674e754 (lx-ubuntu-14.04@20150320)

import されている image は、imgadm listで確認できます。

# imgadm list

UUID NAME VERSION OS PUBLISHED
818cc79e-ceb3-11e4-99ee-7bc8c674e754 lx-ubuntu-14.04 20150320 other 2015-03-20T03:45:09Z
c41bf236-dc75-11e4-88e5-038814c07c11 centos-7 20150406 linux 2015-04-06T15:58:28Z


Ubuntu 14.04のLX Branded Zoneを作成する

ZoneやKVM VMを作成するコマンドは、vmadm createです。LX Branded Zoneも、このコマンドで作成します。このコマンドは、zoneの属性を記述した json形式のデータを入力としますが、-fパラメータによりファイルで与えることができます。ここでは、ファイルを用意することとします。


/var/tmp/lx-ubuntu-14-04.json

{

"alias": "lxubuntu 14.04",
"brand": "lx",
"kernel_version": "3.13.0",
"max_physical_memory": 2048,
"image_uuid": "b7493690-f019-4612-958b-bab5f844283e",
"nics": [
{
"nic_tag": "admin",
"ip": "dhcp",
"primary": true
}
],
"qemu_extra_opts": "-k ja -usbdevice tablet"
}

nic_tag、ip等は、SmartOSのKVMゲストとしてCentOS7.1を動かしてみると同じです。"kernel_version"は、Ubuntu 14.04のカーネルバージョンです。

jsonファイルの用意ができたところで、いよいよ LX Branded Zoneをprovisionします。

# vmadm create -f /var/tmp/lx-ubuntu-14-04.json

Successfully created VM 16b4155b-e996-41e1-bb87-25eb0f0934ff

vmadm createは瞬時に完了します。

vmadm listで、確認します。

# vmadm list

UUID TYPE RAM STATE ALIAS
a90640f4-0596-451e-8d6c-ad001d71f834 KVM 512 stopped CentOS 7.1(1503) KVM
16b4155b-e996-41e1-bb87-25eb0f0934ff LX 1024 running lxubuntu 14.04

LX Branded Zoneが作成されて、動作していることがわかります。

新しいLX Branded Zone(Ubuntu)用の zfs ファイルシステムが作成されていることを確認します。

# df -h | grep -i zones

zones 19G 599K 5.6G 1% /zones
zones/archive 19G 19K 5.6G 1% /zones/archive
zones/cores 10G 19K 5.6G 1% /zones/global/cores
zones/var 19G 5.8M 5.6G 1% /var
zones/config 19G 43K 5.6G 1% /etc/zones
zones/opt 19G 22K 5.6G 1% /opt
zones/usbkey 19G 115K 5.6G 1% /usbkey
zones/a90640f4-0596-451e-8d6c-ad001d71f834 10G 40K 5.6G 1% /zones/a90640f4-0596-451e-8d6c-ad001d71f834
zones/cores/a90640f4-0596-451e-8d6c-ad001d71f834 10G 19K 5.6G 1% /zones/a90640f4-0596-451e-8d6c-ad001d71f834/cores
zones/818cc79e-ceb3-11e4-99ee-7bc8c674e754 19G 450M 5.6G 8% /zones/818cc79e-ceb3-11e4-99ee-7bc8c674e754
zones/16b4155b-e996-41e1-bb87-25eb0f0934ff 10G 450M 5.6G 8% /zones/16b4155b-e996-41e1-bb87-25eb0f0934ff
zones/cores/16b4155b-e996-41e1-bb87-25eb0f0934ff 10G 19K 5.6G 1% /zones/16b4155b-e996-41e1-bb87-25eb0f0934ff/cores

ファイルシステムの名前"zones/16b4155b-e996-41e1-bb87-25eb0f0934ff"にLX Branded Zone のUUIDが入っていることから、今作成した Ubuntu のLX Branded Zoneであることがわかります。


Ubuntu LX Branded Zoneにコンソール接続する(CLIコンソール編)

コンソールには、zlogin -C コマンドで接続しますが、zone作成時点では、rootパスワードが未設定のためログインできません。そこで、zloginでログインしてパスワードを設定します。引数として、接続先zoneのUUIDが必要です。

UUIDを確認します。

# vmadm list

UUID TYPE RAM STATE ALIAS
a90640f4-0596-451e-8d6c-ad001d71f834 KVM 512 stopped CentOS 7.1(1503) KVM
16b4155b-e996-41e1-bb87-25eb0f0934ff LX 1024 running lxubuntu 14.04

もしくは、

# zoneadm list

global
16b4155b-e996-41e1-bb87-25eb0f0934ff

zloginでコンソールへ接続します。

# zlogin 16b4155b-e996-41e1-bb87-25eb0f0934ff

[Connected to zone '16b4155b-e996-41e1-bb87-25eb0f0934ff' pts/3]
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0 x86_64)

* Documentation: https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

__ . .
_| |_ | .-. . . .-. :--. |-
|_ _| ;| || |(.-' | | |
|__| `--' `-' `;-| `-' ' ' `-'
/ ; Instance (Ubuntu 14.04 LX Brand 20150320)
`-' https://docs.joyent.com/images

root@16b4155b-e996-41e1-bb87-25eb0f0934ff:~#

本当に Ubuntuか確認します。

~# cat /etc/os-release

NAME="Ubuntu"
VERSION="14.04, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

本当に64ビットなのか、bashのバイナリを見てみます。

~# file /bin/bash

/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0aa3fddc66598b161d5b4407c9b61e021388fda0, stripped

Linuxコンテナか確認します。

lang:

~# uname -a

Linux 16b4155b-e996-41e1-bb87-25eb0f0934ff 3.13.0 BrandZ virtual linux x86_64 x86_64 x86_64 GNU/Linux

~# ls -l /boot

total 0



確かに、Linuxカーネルがありません。

rootパスワードを設定します。

~# passwd

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

コンソールへ接続します。

# zlogin -C 16b4155b-e996-41e1-bb87-25eb0f0934ff

[Connected to zone '16b4155b-e996-41e1-bb87-25eb0f0934ff' console]

Ubuntu 14.04 LTS 16b4155b-e996-41e1-bb87-25eb0f0934ff console

16b4155b-e996-41e1-bb87-25eb0f0934ff login: root
Password:
Last login: Sun Apr 12 22:47:54 UTC 2015 from zone:global on pts/3
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0 x86_64)

* Documentation: https://help.ubuntu.com/
__ . .
_| |_ | .-. . . .-. :--. |-
|_ _| ;| || |(.-' | | |
|__| `--' `-' `;-| `-' ' ' `-'
/ ; Instance (Ubuntu 14.04 LX Brand 20150320)
`-' https://docs.joyent.com/images

root@16b4155b-e996-41e1-bb87-25eb0f0934ff:~#

コンソール接続は、zoneをrebootしても継続します。

コンソールを抜けるのは~^D ('~'チルダに続けて [Ctrl] と [D] を同時に押します)を入力します。

なお、rebootしてみると、さずがコンテナです一瞬といっても良いくらいの時間で reboot されます(カーネルをrebootするわけではないので、当たり前ですね)。