5.3. Ceph Storage 노드 디스크 레이아웃 매핑
컨테이너화된 Ceph Storage를 배포할 때 디스크 레이아웃을 매핑하고 Ceph OSD 서비스의 전용 블록 장치를 지정해야 합니다. 이전에 만든 환경 파일에서 이 매핑을 수행하여 사용자 지정 Ceph 매개 변수 /home/stack/templates/ceph-config.yaml 을 정의할 수 있습니다.
parameter_defaults 의 CephAnsibleDisksConfig 리소스를 사용하여 디스크 레이아웃을 매핑합니다. 이 리소스는 다음 변수를 사용합니다.
| Variable | 필수 여부 | 기본값(설정되지 않은 경우) | 설명 |
|---|---|---|---|
| osd_scenario | 있음 | lvm
알림: 기본값은 |
|
| 장치 | 있음 | 없음. 변수를 설정해야 합니다. | 노드의 OSD에 사용할 블록 장치 목록입니다. |
| dedicated_devices |
예 (osd | 장치 |
|
| dmcrypt | 없음 | false |
OSD에 저장된 데이터( |
| osd_objectstore | 없음 | 블루스토어
알림: 기본값은 | Ceph에서 사용하는 스토리지 백엔드를 설정합니다.
알림: 값이 기본적으로 |
5.3.1. BlueStore 사용
절차
Ceph OSD로 사용할 블록 장치를 지정하려면 다음 스니펫의 변형을 사용합니다.
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd - /dev/nvme0n1 osd_scenario: lvm osd_objectstore: bluestore/dev/nvme0n1은 고성능 장치 클래스에 있으므로 예제parameter_defaults는/dev/sdb, /dev/sdc 및에서 실행되는 OSD 3개를 생성합니다. 3개의 OSD는/dev/sdd/dev/nvme0n1을block.db및 BlueStore WAL 장치로 사용합니다.ceph-volume툴은batch하위 명령을 사용하여 이 작업을 수행합니다. 각 Ceph Storage 노드에 대해 동일한 구성이 중복되며 일관된 하드웨어가 가정됩니다.block.db및 BlueStore WAL 데이터가 OSD와 동일한 디스크에 있는 경우 매개변수 기본값을 다음과 같이 변경합니다.parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore
5.3.2. 영구 이름이 있는 장치 참조
절차
일부 노드에서는 재부팅하는 동안
/dev/sdb및/dev/sdc와 같은 디스크 경로가 동일한 블록 장치를 가리키지 않을 수 있습니다. Ceph Storage 노드의 경우/dev/disk/by-path/symlink로 각 디스크를 지정하여 배포 전체에서 일관된 블록 장치 매핑을 보장합니다.parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:10:0 - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:11:0 dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1선택 사항: 오버클라우드를 배포하기 전에 OSD 장치 목록을 설정해야 하므로 디스크 장치의 PCI 경로를 식별하고 설정할 수 없습니다. 이 경우 인트로스펙션 중 블록 장치에 대한
/dev/disk/by-path/symlink데이터를 수집합니다.다음 예제에서는 첫 번째 명령을 실행하여
b08-h03-r620-hci 서버에 대한 언더클라우드 오브젝트 스토리지 서비스(swift)에서 인트로스펙션 데이터를 다운로드하고. "by-path"에 대해 grep에 대해 두 번째 명령을 실행합니다. 이 명령의 출력에는 디스크를 식별하는 데 사용할 수 있는 고유한b08-h03-r620-hci.json이라는 파일에 데이터를 저장합니다/dev/disk/by-path값이 포함되어 있습니다.(undercloud) [stack@b08-h02-r620 ironic]$ openstack baremetal introspection data save b08-h03-r620-hci | jq . > b08-h03-r620-hci.json (undercloud) [stack@b08-h02-r620 ironic]$ grep by-path b08-h03-r620-hci.json "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:1:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:3:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:4:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:5:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:6:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:7:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0",
스토리지 장치의 이름 지정 규칙에 대한 자세한 내용은 스토리지 장치 관리 가이드 의 영구 명명 속성 개요 를 참조하십시오.
5.3.3. 고급 시나리오에서 OSD 구성
환경 파일에서 CephAnsibleDisksConfig 리소스의 devices 변수에서 OSD에 사용할 블록 장치를 나열합니다.
다른 장치 구성 매개 변수 없이 device 변수를 사용하는 경우 ceph-volume lvm 배치는 느린 장치에 대해 더 높은 성능 장치를 block.db 로 균등하게 공유하여 OSD 구성을 자동으로 최적화합니다.
다음 절차에 따라 ceph-volume lvm 배치 모드에서 실행되지 않도록 장치를 구성할 수 있습니다.
5.3.3.1. block.db를 사용하여 성능 개선
block.db 를 사용하면 처리량을 높이고 응답 시간을 개선하여 Ceph Storage 클러스터의 성능을 향상시킬 수 있습니다. block.db 는 데이터 세그먼트와 BlueStore 쓰기-ahead 로그(WAL)로 구성된 데이터베이스입니다.
절차
환경 파일에 다음 내용을 추가합니다.
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sda - /dev/sdb - /dev/nvme0n1 - /dev/sdc - /dev/sdd - /dev/nvme0n2 osd_scenario: lvm osd_objectstore: bluestore그러면 4개의 OSD,
sdb,sdc,sdd가 구성됩니다. 각 쌍에는 자체 데이터베이스nvem0n1및nvme0n2가 있습니다.참고devices목록의 장치 순서가 중요합니다. 드라이브와 block.db 및 BlueStore WAL(DB-WAL) 장치를 차례로 나열합니다. 이 예에서nvme0n1은 DB-WAL forsda및sdb이며nvme0n2는dc및sdd의 DB-WAL입니다. 자세한 내용은 BlueStore 사용을 참조하십시오.-
오버클라우드를 배포할 때
-e옵션을 사용하여 배포 명령에 새 콘텐츠가 포함된 환경 파일을 포함합니다.
5.3.3.2. 전용 WAL( write-ahead log) 장치 사용
전용 WAL( write-ahead log) 장치를 지정할 수 있습니다. 장치,dedicated_devices 및 bluestore_wal_devices 를 함께 사용하면 OSD의 모든 구성 요소를 에 분리하여 성능을 향상시킬 수 있습니다.
다음 예제 절차에서 또 다른 사전 bluestore_wal_devices 는 NVMe 장치 nvme0n1 및 에서 쓰기-ahead 로그를 격리합니다.
nvme0n 2
절차
환경 파일에 다음 내용을 추가합니다.
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sda - /dev/sdb dedicated_devices: - /dev/sdx - /dev/sdy bluestore_wal_devices: - /dev/nvme0n1 - /dev/nvme0n2-
오버클라우드를 배포할 때
-e옵션을 사용하여 배포 명령에 새 콘텐츠가 포함된 환경 파일을 포함합니다.
5.3.3.3. 사전 생성된 LVM을 사용하여 제어 강화
이전의 고급 시나리오에서 ceph-volume 은 다양한 유형의 장치 목록을 사용하여 OSD의 논리 볼륨을 생성합니다. ceph-volume이 실행되기 전에 논리 볼륨을 생성한 다음 ceph- volumes 를 해당 논리 볼륨의 lvm_volumes 목록에 전달할 수도 있습니다. 이 경우 논리 볼륨을 사전에 생성해야 하지만 보다 정확한 제어가 가능합니다. director는 하드웨어 프로비저닝도 담당하므로 최초 부팅 스크립트를 사용하여 이러한 LVM을 사전에 생성해야 합니다.
절차
OS::TripleO::NodeUserData리소스 유형으로 Heat 템플릿을 등록하고 다음 콘텐츠를 포함하는 환경 파일/home/stack/templates/firstboot.yaml을 생성합니다.resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/ceph-lvm.yaml
환경 파일
/home/stack/templates/ceph-lvm.yaml을 생성합니다. 세 개의 물리 볼륨을 포함하는 다음 예제와 유사한 목록을 추가합니다. 장치 목록이 길어지면 요구 사항에 따라 예제를 확장합니다.heat_template_version: 2014-10-16 description: > Extra hostname configuration resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: ceph_lvm_config} ceph_lvm_config: type: OS::Heat::SoftwareConfig properties: config: | #!/bin/bash -x pvcreate /dev/sda vgcreate ceph_vg_hdd /dev/sda pvcreate /dev/sdb vgcreate ceph_vg_ssd /dev/sdb pvcreate /dev/nvme0n1 vgcreate ceph_vg_nvme /dev/nvme0n1 lvcreate -n ceph_lv_wal1 -L 50G ceph_vg_nvme lvcreate -n ceph_lv_db1 -L 500G ceph_vg_ssd lvcreate -n ceph_lv_data1 -L 5T ceph_vg_hdd lvs outputs: OS::stack_id: value: {get_resource: userdata}다음과 같은 방법으로 devices 목록 대신
lvm_volumes매개 변수를 사용합니다. 이는 볼륨 그룹과 논리 볼륨이 이미 생성되었다고 가정합니다. 이 시나리오의 일반적인 사용 사례는 WAL 및 DB LV가 SSD에 있고 data LV는 HDD에 있다는 것입니다.parameter_defaults: CephAnsibleDisksConfig: osd_objectstore: bluestore osd_scenario: lvm lvm_volumes: - data: ceph_lv_data1 data_vg: ceph_vg_hdd db: ceph_lv_db1 db_vg: ceph_vg_ssd wal: ceph_lv_wal1 wal_vg: ceph_vg_nvme오버클라우드를 배포할 때
-e옵션을 사용하여 배포 명령에 새 콘텐츠가 포함된 환경 파일을 포함합니다.- 참고
- 별도의 WAL 장치를 지정하려면 WAL 장치가 DB 장치보다 나은 하드웨어에 있는 경우에만 필요합니다. 일반적으로 별도의 DB 장치를 만드는 것이 충분하며 WAL 기능에 동일한 파티션을 사용합니다.