*

LVM上にインスタンスを作成する

公開日: 最終更新日:2014/07/25  |  By  |  OpenStack

OpenStack 担当 石川です。

実際に自分が使うか使わないかは置いておき、気になったオプションを実際に動かす、
このオプションは何?試してみよう企画第一弾「libvirt_images_type」

通常、Novaからインスタンスを作成する場合、インスタンスの実体は /var/lib/nova/instances/instance-UUID などに作られます。
この保存先は libvirt_images_type で変更できます。
今回はこれを利用してLVM上にインスタンスを作成します。

■ nova.conf から抜粋

#
# Options defined in nova.virt.libvirt.imagebackend
#

# VM Images format. Acceptable values are: raw, qcow2,
# lvm,rbd, default. If default is specified, then
# use_cow_images flag is used instead of this one. (string
# value)
#libvirt_images_type=default

# LVM Volume Group that is used for VM images, when you
# specify libvirt_images_type=lvm. (string value)
#libvirt_images_volume_group=<None>

# Create sparse logical volumes (with virtualsize) if this
# flag is set to True. (boolean value)
#libvirt_sparse_logical_volumes=false

# The amount of storage (in megabytes) to allocate for LVM
# snapshot copy-on-write blocks. (integer value)
#libvirt_lvm_snapshot_size=1000

# the RADOS pool in which rbd volumes are stored (string
# value)
#libvirt_images_rbd_pool=rbd

# path to the ceph configuration file to use (string value)
#libvirt_images_rbd_ceph_conf=

nova.conf の設定

インスタンス保存先をLVMに変更するには以下のパラメータを指定します。

libvirt_images_type=lvm
# libvirt_images_volume_group=<任意のLVM名>
libvirt_images_volume_group=ctrl-vg
DevStackを利用する場合は EXTRA_OPTS に同オプションを指定します。
EXTRA_OPTS=(
vnc_keymap=ja
libvirt_images_type=lvm
libvirt_images_volume_group=ctrl-vg
)
注意: この時、Volume group には Free の領域を十分に確保するようにします。(Cinder LVMドライバと同様)
$ sudo vgs
  VG            #PV #LV #SN Attr   VSize  VFree
  ctrl-vg         1   4   0 wz--n- 11.76g  2.43g

インスタンスを作成する

インスタンス作成前の LV の状態は以下の通りです。
$ sudo lvs
  LV                     VG      Attr      LSize  Pool Origin Data%  Move Log Copy%  Convert
  root                   ctrl-vg -wi-ao---  7.31g
  swap_1                 ctrl-vg -wi-ao---  2.00g
nova boot コマンドでインスタンスを作成します。
$ nova boot --flavor 1 --nic net-id=d3940b47-3c66-44ac-8178-c7482552715d --image 7d056c5e-2415-41b6-ba76-cec66a2d2cfd test
+--------------------------------------+--------------------------------------+
| Property                             | Value                                |
+--------------------------------------+--------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                               |
| OS-EXT-AZ:availability_zone          | nova                                 |
| OS-EXT-STS:power_state               | 0                                    |
| OS-EXT-STS:task_state                | scheduling                           |
| OS-EXT-STS:vm_state                  | building                             |
| OS-SRV-USG:launched_at               | None                                 |
| OS-SRV-USG:terminated_at             | None                                 |
| accessIPv4                           |                                      |
| accessIPv6                           |                                      |
| adminPass                            | Z5fyLaA43Qr4                         |
| config_drive                         |                                      |
| created                              | 2014-01-07T04:51:19Z                 |
| flavor                               | m1.tiny                              |
| hostId                               |                                      |
| id                                   | fd2f6195-6ca1-4559-99a6-57f2b14d45f2 |
| image                                | cirros-0.3.1-x86_64-uec              |
| key_name                             | None                                 |
| metadata                             | {}                                   |
| name                                 | test                                 |
| os-extended-volumes:volumes_attached | []                                   |
| progress                             | 0                                    |
| security_groups                      | [{u'name': u'default'}]              |
| status                               | BUILD                                |
| tenant_id                            | cebc3e812331420eb1e7b75a7b67f760     |
| updated                              | 2014-01-07T04:51:19Z                 |
| user_id                              | 226ae94637b645b9a795f144455ee185     |
+--------------------------------------+--------------------------------------+
無事インスタンスが作成できていることを確認します。
$ nova list
+--------------------------------------+-----------+---------+------------+-------------+--------------------+
| ID                                   | Name      | Status  | Task State | Power State | Networks           |
+--------------------------------------+-----------+---------+------------+-------------+--------------------+
| fd2f6195-6ca1-4559-99a6-57f2b14d45f2 | test      | ACTIVE  | None       | Running     | private=172.16.0.3 |
+--------------------------------------+-----------+---------+------------+-------------+--------------------+

$ ps ax | grep -e instance-00000001 -e fd2f6195-6ca1-4559-99a6-57f2b14d45f2
12177 ?        Rs     0:39 /usr/bin/qemu-nbd -c /dev/nbd8 /dev/ctrl-vg/instance-00000001_disk
12709 ?        Sl     0:24 /usr/bin/qemu-system-x86_64 -name instance-00000001 -S -machine pc-i440fx-1.5,accel=tcg,usb=off -m 512 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid fd2f6195-6ca1-4559-99a6-57f2b14d45f2 -smbios type=1,manufacturer=OpenStack Foundation,product=OpenStack Nova,version=2013.2.2,serial=27fe71aa-4047-43cb-bf44-b1c7b1a86145,uuid=fd2f6195-6ca1-4559-99a6-57f2b14d45f2 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/instance-00000001.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -kernel /var/lib/nova/instances/fd2f6195-6ca1-4559-99a6-57f2b14d45f2/kernel -initrd /var/lib/nova/instances/fd2f6195-6ca1-4559-99a6-57f2b14d45f2/ramdisk -append root=/dev/vda console=tty0 console=ttyS0 -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 -drive file=/dev/ctrl-vg/instance-00000001_disk,if=none,id=drive-virtio-disk0,format=raw,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=24,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:d4:03:6e,bus=pci.0,addr=0x3 -chardev file,id=charserial0,path=/var/lib/nova/instances/fd2f6195-6ca1-4559-99a6-57f2b14d45f2/console.log -device isa-serial,chardev=charserial0,id=serial0 -chardev pty,id=charserial1 -device isa-serial,chardev=charserial1,id=serial1 -chardev pty,id=charchannel0 -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5900,addr=127.0.0.1,disable-ticketing,seamless-migration=on -k en-us -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
再度 lvs コマンドを実行するとインスタンスのディスク領域が作られていることがわかります。
$ sudo lvs
  LV                     VG      Attr      LSize  Pool Origin Data%  Move Log Copy%  Convert
  instance-00000001_disk ctrl-vg -wi-ao---  1.00g
  root                   ctrl-vg -wi-ao---  7.31g
  swap_1                 ctrl-vg -wi-ao---  2.00g
今までインスタンスが配置されていたディレクトリには以下のファイルが存在していました。
$ ls -l /var/lib/nova/instances/fd2f6195-6ca1-4559-99a6-57f2b14d45f2
total 8492
-rw-rw---- 1 libvirt-qemu kvm        17993 Jan  7 13:54 console.log
-rw-rw-r-- 1 libvirt-qemu kvm      4955792 Jan  7 13:51 kernel
-rw-rw-r-- 1 ishikawa     libvirtd    1782 Jan  7 13:51 libvirt.xml
-rw-rw-r-- 1 libvirt-qemu kvm      3714968 Jan  7 13:51 ramdisk

インスタンスの削除

インスタンスを削除するとLVが削除…されませんでした…。
私の検証環境だけなのかもしれませんが、インスタンス Terminate時、プロセスと/var/lib/nova/instances/UUID 以下は削除されました Nova データベース及び実LVは削除されませんでした。
このあたりについては現在調査中です。何かわかれば追記します。

関連記事

no image

CLIによるSwiftへのアクセス(後編) ~ Swiftによるオブジェクトストレージシステムの構築(4)

by yamagata 2013/2/7(Swift関連の記事の一覧はこちらをご覧ください)前回の

記事を読む

no image

Swift 1.12.0 CHANGELOG の翻訳

by You Yamagata 2013.02.04ビットアイル総研の山縣です。Swift の ve

記事を読む

no image

INDEX: OpenStack Swift

by You Yamagata 2014.4.15Swiftによるオブジェクトストレージシステムの構

記事を読む

howtocontribute

OpenStackコントリビューターへの道(OpenStack Advent Calendar 2014 12/12)

by Ikuo Kumagai (@kumagai19o) この記事はOpenStack Ad

記事を読む

Rally-Actions

OpenStack Rally入門

RallyはOpenStackのプロジェクトの一つです。OpenStackのベンチマークツールと簡単

記事を読む

dpdk

OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様の OpenStack最新情報

記事を読む

no image

RDOを使用したOpenStack+MidoNet環境のインストール

ビットアイル総合研究所 田波です。 今回は以前紹介したRDOを使用して、OpenStack+M

記事を読む

no image

Keystone認証の利用 ~ Swiftによるオブジェクトストレージシステムの構築(9)

by You Yamagata 2013.05.13 (Last updated 2013

記事を読む

IMG_0870

OpenStack Summit San Diegoに参加しています

by hasegawa 2012/10/16ビットアイル総研の長谷川です。10月15日(月)〜18日

記事を読む

no image

Swiftの概要 ~ Swiftによるオブジェクトストレージシステムの構築(1)

(Swift関連の記事の一覧はこちらをご覧ください)はじめまして、山縣と申します。私はビットアイル総

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑