스토리지 노드에 cinder-volume 과 iSCSI 타깃을 설치한다. 먼저 볼륨 생성 관련 사전 설정으로 LVM 볼륨 그룹 cinder-volumes 를 만든다. 컨트롤러 노드 설치가 끝나 있어야 한다. CINDER_DBPASS · CINDER_PASS · RABBIT_PASS 는 미리 정한 값으로, MANAGEMENT_INTERFACE_IP_ADDRESS 는 스토리지 노드 관리용 IP(예: 10.0.0.41)로 바꾼다.
lvm.conf 필터.Ubuntu 24.04 — iSCSI 타깃은 tgt 를 쓴다.
apt install cinder-volume tgt
CentOS Stream 9 · RHEL 9 — iSCSI 타깃은 LIO(targetcli)를 쓴다.
dnf install openstack-cinder targetcli
/etc/cinder/cinder.conf 의 다음 절에 값을 넣는다. target_helper 는 Ubuntu 가 tgtadm, RHEL 계열이 lioadm 이다.
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
enabled_backends = lvm
glance_api_servers = http://controller:9292
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = tgtadm
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
[lvm] 절이 없으면 새로 만든다. 절 이름은 enabled_backends 의 값과 같아야 한다.
Ubuntu 는 tgt 가 Cinder 볼륨 정의를 읽도록 /etc/tgt/conf.d/cinder.conf 를 만든다.
include /var/lib/cinder/volumes/*
Ubuntu 24.04
systemctl restart tgt
systemctl restart cinder-volume
CentOS Stream 9 · RHEL 9
systemctl enable openstack-cinder-volume.service target.service iscsid.service
systemctl start openstack-cinder-volume.service target.service iscsid.service
RHEL 계열에서 firewalld 를 쓰면 iSCSI 포트를 연다.
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
컨트롤러 노드에서 실행한다.
. admin-openrc
openstack volume service list
+------------------+------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2026-09-20T00:00:00.000000 |
| cinder-volume | block1@lvm | nova | enabled | up | 2026-09-20T00:00:00.000000 |
+------------------+------------+------+---------+-------+----------------------------+
볼륨을 하나 만들어 본다.
openstack volume create --size 1 test-volume
openstack volume list
available 상태가 되면 된다. 스토리지 노드에서 lvs 로 cinder-volumes 그룹에 논리 볼륨이 생긴 것을 볼 수 있다.
Ubuntu · Yoga 에서 쓴 설정이다. enabled_backends 가 빠져 있었다.
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 192.168.1.163
glance_api_servers = http://controller:9292
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = tgtadm
service tgt restart
service cinder-volume restart