1.7. Image サービス API を使用したスパースイメージのアップロードの有効化
Image サービス (glance) API を使用すると、スパースイメージのアップロードを使用して、ネットワークトラフィックを削減し、ストレージスペースを節約できます。この機能は、分散コンピュートノード (DCN) 環境で特に便利です。スパースイメージファイルの場合、Image サービスは null バイトシーケンスを書き込みません。Image サービスは、指定されたオフセットでデータを書き込みます。ストレージバックエンドは、これらのオフセットを、実際にはストレージスペースを消費しない null バイトとして解釈します。
イメージ管理には Image service コマンドラインクライアントを使用します。
制限事項
- スパースイメージのアップロードは、Ceph RADOS Block Device (RBD) でのみサポートされます。
- スパースイメージのアップロードは、ファイルシステムではサポートされません。
- スパース性は、クライアントと Image サービス API 間の転送中は維持されません。イメージは、Image サービス API レベルでスパース化されます。
前提条件
- Red Hat OpenStack Platform (RHOSP) デプロイメントで、Image サービスのバックエンドに RBD を使用している。
手順
-
アンダークラウドノードに
stack
ユーザーとしてログインします。 source コマンドで
stackrc
認証情報ファイルを読み込みます。$ source stackrc
以下の内容で環境ファイルを作成します。
parameter_defaults: GlanceSparseUploadEnabled: true
その他の環境ファイルと共に新しい環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <new_environment_file>.yaml \ ...
イメージのアップロードの詳細は、Image サービスにイメージをアップロードする を参照してください。
検証
イメージをインポートしてそのサイズを確認し、スパースイメージのアップロードを検証することができます。
次の手順では、コマンド例を使用します。必要に応じて、値をご使用の環境の値に置き換えてください。
イメージファイルをローカルにダウンロードします。
$ wget <file_location>/<file_name>
-
<file_location>
をファイルの場所に置き換えます。 <file_name>
は、ファイルの名前に置き換えます。以下に例を示します。
$ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
-
アップロードするイメージのディスクサイズと仮想サイズを確認します。
$ qemu-img info <file_name>
以下に例を示します。
$ qemu-img info CentOS-6-x86_64-GenericCloud-1508.qcow2 image: CentOS-6-x86_64-GenericCloud-1508.qcow2 file format: qcow2 virtual size: 8 GiB (8589934592 bytes) disk size: 1.09 GiB cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 1
イメージをインポートします。
$ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
- イメージ ID を記録します。後続のステップで必要になります。
イメージがインポートされ、アクティブ状態にあることを確認します。
$ glance image show <image_id>
Ceph Storage ノードから、イメージのサイズが、ステップ 1 出力の仮想サイズよりも小さいことを確認します。
$ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }' 1.03906 GB
オプション:コントローラーノードの Image サービス設定ファイルで
rbd_thin_provisioning
が設定されていることを確認できます。コントローラーノードにアクセスするために SSH を使用します。
$ ssh -A -t tripleo-admin@<controller_node_IP_address>
そのコントローラーノードで
rbd_thin_provisioning
がTrue
に等しいことを確認します。$ sudo podman exec -it glance_api sh -c 'grep ^rbd_thin_provisioning /etc/glance/glance-api.conf'