Flavor とは

Flavor は、CPU、メモリ、ディスクなど、インスタンスに割り当てるために、事前に定義された仮想リソースのスペックテーブルです。

ここでは、以下の Flavor を2つを追加します。

  • m2.disk0_c1_m1_s2 (Disk 0、Cpu 1、Mem 1、Swap 2048)
  • m2.disk0_c1_m1_s0 (Disk 0、Cpu 1、Mem 1、Swap 0)

ディスクサイズ 0 の Flavor を作成する理由について

ディスクサイズ 0 の Flavor を作成する理由は、インスタンス作成時に Compute Node のストレージ容量が消費されないようにするためです。

例えば、インスタンス作成時にディスクサイズとして 80GB が定義されている Flavor を指定すると、Compute Node から 80GB が消費されてしまいます。

おそらく、実際に OpenStack 環境を構築するとなるとインスタンスデータは、Cinder (ブロックストレージ) を使ってブータブルボリューム上で動かすことになると思うので、インスタンス作成時に Compute Node の容量を消費させないようにする必要があります。

もちろん、腹持ちのローカルディスク上でインスタンスを動かすんだったら話は別です。

Flavor 追加

Flavor は、以下のコマンドを使って追加可能です。

$ nova flavor-create <NAME> <ID> <MEM> <HDD> <CPU> <FACTOR> <SWAP> <PUBLIC>

パラメータ内容
NAMEFlavor 名
IDFlavor ID (1~255)
MEMメモリサイズ (MB)
HDD「/」パーティションのディスク容量 (GB)
CPUCPU 個数
FACTORインスタンスが使用できる帯域幅
SWAPスワップサイズ (MB)
PUBLICFlavor の使用範囲 (true|false)

追加した Flavor をユーザテナントが使えるようにするためには

Flavor は、admin テナントで作成する必要があります。

そして、新しく作成した Flavor は、最初は、admin しか使えないため、他のユーザテナントがこの Flavor を使えるようにするために、各ユーザテナントへのアクセス権を追加する必要があります。

ここでは、以下の順番で Flavor を追加します。

  • admin クレデンシャル読み込み
  • デフォルト Flavor リスト確認
  • Flavor 作成 : DISK 0、CPU 1、MEM 2GB、SWAP 2GB
  • Flavor 作成 : DISK 0、CPU 1、MEM 2GB、SWAP 0
  • Flavor が追加されていることを確認
  • ユーザテナント ID 確認
  • ユーザテナントへの新規 Flavor 接続許可
  • ユーザテナントクレデンシャル読み込み
  • ユーザテナントで Flavor リスト確認
Flavor 追加
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
━━━━━━━━━━━━━━━━━━━━━━━
admin クレデンシャル読み込み
━━━━━━━━━━━━━━━━━━━━━━━
$ source ~/admin-openrc.sh

━━━━━━━━━━━━━━━━━━━━━━━
デフォルト Flavor リスト確認
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
Flavor 作成 : DISK 0、CPU 1、MEM 2GB、SWAP 2GB
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-create m2.disk0_c1_m1_s2 6 1024 0 1 --rxtx-factor 1.0 --swap 2048 --is-public true
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
Flavor 作成 : DISK 0、CPU 1、MEM 2GB、SWAP 0
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-create m2.disk0_c1_m1_s0 7 1024 0 1 --rxtx-factor 1.0 --swap 0 --is-public true
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 7  | m2.disk0_c1_m1_s0 | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
Flavor が追加されていることを確認
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-list
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny           | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small          | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium         | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large          | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge         | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
| 7  | m2.disk0_c1_m1_s0 | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
ユーザテナント ID 確認
━━━━━━━━━━━━━━━━━━━━━━━
$ keystone tenant-list
+----------------------------------+---------+---------+
|                id                |   name  | enabled |
+----------------------------------+---------+---------+
| 4bc9e2b503a04cab949dcd8490df64e3 |  admin  |   True  |
| 111f5d2dce1b4ab79e5ab14746aae23a |   demo  |   True  |
| afde75a766ca4220a9fc5b1bf978c60e | service |   True  |
+----------------------------------+---------+---------+

━━━━━━━━━━━━━━━━━━━━━━━
ユーザテナントへの新規 Flavor 接続許可
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-access-add m2.disk0_c1_m1_s2 111f5d2dce1b4ab79e5ab14746aae23a
+-----------+----------------------------------+
| Flavor_ID | Tenant_ID                        |
+-----------+----------------------------------+
| 6         | 111f5d2dce1b4ab79e5ab14746aae23a |
+-----------+----------------------------------+

$ nova flavor-access-add m2.disk0_c1_m1_s0 111f5d2dce1b4ab79e5ab14746aae23a
+-----------+----------------------------------+
| Flavor_ID | Tenant_ID                        |
+-----------+----------------------------------+
| 7         | 111f5d2dce1b4ab79e5ab14746aae23a |
+-----------+----------------------------------+

━━━━━━━━━━━━━━━━━━━━━━━
ユーザテナントで Flavor リスト確認
━━━━━━━━━━━━━━━━━━━━━━━
$ source ~/demo-openrc.sh

$ nova flavor-list
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny           | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small          | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium         | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large          | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge         | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
| 7  | m2.disk0_c1_m1_s0 | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

Flavor 削除

一方、Flavor を削除する方法は、とても簡単です。

Flavor を削除するためには、admin テナントで以下のコマンドを実行します。

$ nova flavor-delete <FLAVOR_ID>

admin テナントで Flavor を削除してからユーザテナントのアクセス権を解除する等の作業は、不要です。 つまり、flavor-access-add した各テナントの Flavor も削除されることになります。

ここでは、例として、先ほど新規追加した m2.disk0_c1_m1_s0 を削除してみます。

  • admin クレデンシャル読み込み
  • 現在の Flavor リスト確認
  • Flavor 削除
  • Flavor が削除されていることを確認
  • ユーザテナントで Flavor リスト確認
Flavor 削除
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
━━━━━━━━━━━━━━━━━━━━━━━
admin クレデンシャル読み込み
━━━━━━━━━━━━━━━━━━━━━━━
$ source admin-openrc.sh

━━━━━━━━━━━━━━━━━━━━━━━
現在の Flavor リスト確認
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-list
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny           | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small          | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium         | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large          | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge         | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
| 7  | m2.disk0_c1_m1_s0 | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
Flavor 削除
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-delete 7
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 7  | m2.disk0_c1_m1_s0 | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

━━━━━━━━━━━━━━━━━━━━━━━
Flavor が削除されていることを確認
━━━━━━━━━━━━━━━━━━━━━━━
$ nova flavor-list
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny           | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small          | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium         | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large          | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge         | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+


━━━━━━━━━━━━━━━━━━━━━━━
ユーザテナントで Flavor リスト確認
━━━━━━━━━━━━━━━━━━━━━━━
$ source demo-openrc.sh

$ nova flavor-list
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name              | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny           | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small          | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium         | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large          | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge         | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
| 6  | m2.disk0_c1_m1_s2 | 1024      | 0    | 0         | 2048 | 1     | 1.0         | True      |
+----+-------------------+-----------+------+-----------+------+-------+-------------+-----------+

Flavor 修正について

Dashboard のメニューを確認して見ると Flavor 修正メニューがあるのですが、実際には、修正ではなく、既存の Flavor を削除してからスペックだけ変えてまったく同じ Flavor を再作成しているだけなので、厳密に言うと修正とは言えません。

以上、OpenStack フレーバー追加、削除 でした。