Skip to content

OpenStack:Cinder

OpenStack 블록 스토리지 서비스는 블록 스토리지 장치를 게스트 인스턴스에 제공합니다. 스토리지가 프로비저닝되고 소비되는 방식은 블록 스토리지 드라이버 또는 여러 백엔드 구성에 대한 경우에는 드라이버에 의해 결정됩니다. NAS/SAN, NFS, iSCSI, Ceph 등 사용 가능한 다양한 드라이버가 있습니다. 블록 스토리지 API와 스케줄러 서비스는 보통 컨트롤러 노드에서 실행됩니다. 사용하는 드라이버에 따라, 볼륨 서비스는 컨트롤러, Compute 노드 또는 독립된 스토리지 노드에서 동작 가능합니다.

File

/etc/cinder/cinder.conf
Cinder 설정 파일.
/var/log/cinder/*
Cinder 로그 파일 디렉토리.

List of command

cinder list
전체 볼륨 목록 출력.
cinder type-list
Type 목록 출력.
cinder service-list
블록 스토리지 서비스 목록을 확인.
cinder extra-specs-list
Extra space list.

Service reboot

블록 스토리지 볼륨 서비스와 그와 관계된 서비스들을 시작하고 시스템 부팅시 자동적으로 시작하도록 설정합니다:

$ systemctl enable openstack-cinder-volume.service target.service
$ systemctl start openstack-cinder-volume.service target.service

재시작은 아래와 같이 입력한다.

$ service openstack-cinder-api restart
$ service openstack-cinder-scheduler restart
$ service openstack-cinder-volume restart

Create multiple backends

우선 물리 HDD를 연결한 후 parted를 사용하여 파티션을 분할한다.

# parted /dev/sdb
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0.00TB 4.00TB
(parted) set 1 lvm on
(parted) print

LVM의 물리볼륨과 볼륨그룹을 만든다.

$ pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
$ vgcreate cinder-volumes2 /dev/sdb1
  Volume group "cinder-volumes2" successfully created
## pvscan, vgdisplay, lsblk, vgs

/etc/cinder/cinder.conf에 새로운 Backend를 추가한다.

enabled_backends=lvm51,lvm52
# ...

[lvm]
iscsi_helper=lioadm
iscsi_ip_address=192.168.1.100
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
volumes_dir=/var/lib/cinder/volumes
volume_backend_name=lvm

[lvm2]
iscsi_helper=lioadm
iscsi_ip_address=192.168.1.100
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
#volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver # Not work !!
volume_group=cinder-volumes2
volume_backend_name=lvm2

cinder명령을 날린다.

[root@server ~(keystone_yourname)]# cinder type-create iscsi2
[root@server ~(keystone_yourname)]# cinder type-list
+--------------------------------------+--------+-------------+-----------+
|                  ID                  |  Name  | Description | Is_Public |
+--------------------------------------+--------+-------------+-----------+
| c277d5f5-03d3-4933-beae-c534f60ec916 | iscsi  |      -      |    True   |
| f08fc302-2589-4c2e-bba0-fb681c2a6141 | iscsi2 |      -      |    True   |
+--------------------------------------+--------+-------------+-----------+
[root@server ~(keystone_yourname)]# cinder type-key iscsi2 set volume_backend_name=lvm2
[root@server ~(keystone_yourname)]# cinder create --volume_type iscsi2 --display_name instance_lvm 1024
[root@server ~(keystone_yourname)]# cinder extra-specs-list

Resize volume

LVM Volume group

LVM의 vgdisplay명령을 사용하여 Cinder관련 그룹을 확인할 수 있다. 참고로 해당 RDO를 통하여 기본 설치된 그룹명은 cinder-volumes이다.

Troubleshooting

Insufficient free space for volume creation on host

Volume의 Status가 Error일 경우 /var/log/cinder/scheduler.log를 확인하면 아래와 같은 메시지가 출력될 수 있다.

2017-01-22 21:25:51.404 31276 WARNING cinder.scheduler.filters.capacity_filter [req-0fed2786-91f1-42f8-8e0f-c690551f5021 4928fd0043b34cd2a747637aefe85bc4 51fef98cf24243329fd360d8f2872f69 - - -] Insufficient free space for volume creation on host server@lvm2#lvm2 (requested / avail): 1/0.0
2017-01-22 21:25:51.404 31276 INFO cinder.scheduler.base_filter [req-0fed2786-91f1-42f8-8e0f-c690551f5021 4928fd0043b34cd2a747637aefe85bc4 51fef98cf24243329fd360d8f2872f69 - - -] Filter CapabilitiesFilter returned 0 host(s)
2017-01-22 21:25:51.405 31276 WARNING cinder.scheduler.filter_scheduler [req-0fed2786-91f1-42f8-8e0f-c690551f5021 4928fd0043b34cd2a747637aefe85bc4 51fef98cf24243329fd360d8f2872f69 - - -] No weighed hosts found for volume with properties: {u'name': u'iscsi2', u'qos_specs_id': None, u'deleted': False, u'created_at': u'2017-01-16T15:01:00.000000', u'updated_at': None, u'extra_specs': {u'volume_backend_name': u'lvm2'}, u'is_public': True, u'deleted_at': None, u'id': u'f08fc302-2589-4c2e-bba0-fb681c2a6141', u'description': None}
2017-01-22 21:25:51.408 31276 ERROR cinder.scheduler.flows.create_volume [req-0fed2786-91f1-42f8-8e0f-c690551f5021 4928fd0043b34cd2a747637aefe85bc4 51fef98cf24243329fd360d8f2872f69 - - -] Failed to run task cinder.scheduler.flows.create_volume.ScheduleCreateVolumeTask;volume:create: No valid host was found. No weighed hosts available

해당 볼륨에 연결되 물리 장치의 여유공간을 확인해보자. 참고로 필자의 경우 LVM의 vgdisplay를 사용하여 여유공간을 확인하였다.

List of OpenStack Service

OpenStack Service

Main

Horizon, Nova, Neutron

Storage

Swift, Cinder

Shared services

Keystone, Glance, Ceilometer

Higher-level services

Heat

ETC

cloud-init

See also

Favorite site