이 섹션에서는 블록 스토리지 서비스를 위한 스토리지 노드를 설치와 구성하는 방법을 설명합니다. 이 구성에서는 간략하게 한 개의 스토리지 노드에 비어있는 로컬 블록 스토리지 장치를 가리키는 것으로 합니다. 이 안내에서는 /dev/sdb 를 사용하지만, 특정 환경에서는 다른 값으로 대체할 수 있습니다.
해당 서비스는 LVM 드라이버를 사용하는 장치 위에 논리 볼륨을 프로비저닝하고 iSCSI 전송을 통해 인스턴스에 제공합니다. 해당 안내에 약간의 수정을 거쳐 대상 환경에 스토리지 노드를 추가하여 수평적 스케일링을 할 수 있습니다.
블록 스토리지 서비스를 스토리지 노드에 설치 구성하기 전에 스토리지 장치를 준비해야 합니다.
주석
해당 단계를 스토리지 노드에서 수행합니다.
지원 유틸리티 패키지을 설치합니다:
# apt-get install lvm2
주석
몇몇 배포판은 디폴트로 LVM을 포함합니다.
LVM 물리 볼륨 /dev/sdb 를 생성합니다:
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
LVM 볼륨 그룹 cinder-volumes 를 생성합니다:
# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
블록 스토리지 서비스는 볼륨 그룹 내에 논리 볼륨을 생성합니다.
인스턴스에서만 블록 스토리지 볼륨에 접근할 수 있습니다. 그러나 OS에서 볼륨에 연결된 장치를 관리합니다. 디폴트로 LVM 볼륨 검색 도구는 볼륨이 포함된 블록 스토리지 장치에 대해 /dev 디렉토리를 검색합니다. 프로젝트에서 LVM을 볼륨으로 사용하는 경우엔 검색 도구는 해당 볼륨을 감지하고 캐싱을 하려고 시도하는데, 이는 OS와 프로젝트 볼륨에 다양한 문제를 일으킬 수 있습니다. LVM cinder-volume 볼륨 그룹을 포함하는 장치만 검색하도록 재구성해야 합니다. /etc/lvm/lvm.conf 파일을 편집하여 다음 작업을 완료합니다:
devices 섹션에서 /dev/sdb 장치를 허용하고 다른 장치들은 거부하는 필터를 추가합니다:
devices {
...
filter = [ "a/sdb/", "r/.*/"]
필터 배열 내 각 항목은 accept 에 대한 a 또는 reject 에 대한 r 로 시작하고 장치 이름에 대한 정규 표현식을 포합합니다. 배열은 그 외 다른 장치를 거부하기 위해 r/.*/ 로 끝나야 합니다. vgs -vvvv 명령어를 사용하여 필터를 테스트할 수 있습니다.
경고
스토리지 노드에서 LVM을 운영체제 디스크로 사용하게되면 필터에 연결된 장치를 추가해야 합니다. 예를 들어 /dev/sda 장치에 운영체제를 포함하고 있는 경우:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
비슷하게 compute 노드에서 LVM을 운영체제 디스크로 사용하는 경우엔 해당 노드의 /etc/lvm/lvm.conf 파일 내 필터를 수정하여 운영체제 디스크만을 포함하도록 해야 합니다. 예를 들어 /dev/sda 장치에 운영체제를 포함하고 있는 경우:
filter = [ "a/sda/", "r/.*/"]
패키지를 설치하십시오:
# apt-get install cinder-volume python-mysqldb
/etc/cinder/cinder.conf 파일을 편집하여 다음 작업을 완료합니다:
[database] 섹션에서 데이터베이스 액세스를 구성합니다:
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
CINDER_DBPASS 를 블록 스토리지 데이터베이스 암호로 변경합니다.
[DEFAULT] 와 [oslo_messaging_rabbit] 섹션에서 RabbitMQ 메시지 큐 접근을 구성합니다:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
RABBIT_PASS 를 RabbitMQ 에서 openstack 계정에 대해 선택한 암호로 변경합니다.
[DEFAULT] 와 [keystone_authtoken] 섹션에서 Identity 서비스 접근을 구성합니다:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = CINDER_PASS
CINDER_PASS 를 Identity 서비스에서 cinder 사용자 암호로 변경합니다.
주석
[keystone_authtoken] 섹션 내 다른 옵션들은 주석 처리나 제거합니다.
[DEFAULT] 섹션에서 my_ip 옵션을 구성합니다:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
MANAGEMENT_INTERFACE_IP_ADDRESS 를 스토리지 노드 관리 네트워크 인터페이스에 대한 IP 주소로 변경합니다. example architecture 에서의 첫 노드는 보통 10.0.0.41 입니다.
[lvm] 섹션에서 LVM 드라이버와 함께 LVM 백엔드, cinder-volumes 볼륨 그룹, iSCSI 프로토콜, 적절한 iSCSI 서비스를 구성합니다:
[lvm]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm
[DEFAULT] 섹션에 LVM 백엔드를 활성화합니다:
[DEFAULT]
...
enabled_backends = lvm
주석
백엔드 이름은 가상으로 되어 있습니다. 하나의 예로 이 가이드에서는 드라이버에 대한 이름을 백엔드 이름으로 사용합니다.
[DEFAULT] 섹션에서 이미지 서비스의 위치를 구성합니다:
[DEFAULT]
...
glance_host = controller
[oslo_concurrency] 섹션에서 lock 경로를 구성합니다:
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp
(옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:
[DEFAULT]
...
verbose = True
의존된 패키지들을 포함하여 블록 스토리지 볼륨 서비스를 재시작합니다:
# service tgt restart
# service cinder-volume restart
기본으로 Ubuntu 패키지는 SQLite 데이터베이스를 생성합니다. 이 구성에서는 SQL 데이터베이스 서버를 사용하기에 SQLite 데이터베이스 파일을 삭제합니다:
# rm -f /var/lib/cinder/cinder.sqlite
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.