Ceph를 지금까지 orchestrator를 사용하지 않는 환경을 사용하다가 orchestator를 사용하는 환경으로 변경을 하니, Disk가 자동으로 ceph osd disk로 변경되는 이슈가 있어 어떤방식으로 동작하게 되는지 확인하고자합니다.
Ref ::
Orchestrator는 Ceph의 mgr 모듈에 대한 플러그인이라고 Docs문서는 소개하고 있습니다.
문서에서 말하는 Orchestrator의 목적은 간단하다.
"Ceph가 사용 가능한 하드웨어 검색, OSD 생성 및 삭제, MDS 및 RGW 서비스 실행 등의 작업을 수행할 수 있도록 하는 것"
그렇다면, 해당 모듈에서 osd 를 자동으로 추가하는 옵션은 무엇이 있을까?
Ref :: https://docs.ceph.com/en/reef/cephadm/services/osd/#cephadm-osd-declarative
문서에서 소개하는 바, Ceph에서 osd 자동 생성 비 활성화를 하려면 아래 명령어로 조절하면 된다고 한다.
ceph orch apply osd --all-available-devices --unmanaged=true
그럼 해당 옵션을 사용하여 unmanaged를 true로 하여 disk가 osd 로 변경되는지 확인해겠습니다.
$ sudo ceph orch apply osd --all-available-devices --unmanaged=true
Scheduled osd.all-available-devices update...
$ sudo ceph orch ls osd
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
osd 4 2m ago 6d test-ceph-01
osd.all-available-devices 0 - 11s <unmanaged>
disk를 추가하여 실제로 적용되는지 확인해보겠습니다.
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
└─sda1 8:1 0 100G 0 part /
sr0 11:0 1 1024M 0 rom
vda 253:0 0 50G 0 disk
└─ceph--db0a84a2--734b--4807--9d47--642952db9390-osd--block--da43b94c--b958--4762--8440--ca840e1f5a61 252:0 0 50G 0 lvm
vdb 253:16 0 50G 0 disk
└─ceph--a8b97e3e--7118--43ee--860f--b550a878edd0-osd--block--b5d0e574--6660--4d54--9f22--9797d241cfa3 252:1 0 50G 0 lvm
vdc 253:32 0 50G 0 disk
└─ceph--e4c61059--5d82--4087--be30--22d50d382c5f-osd--block--a9fbafd8--355c--4e28--b607--ddbecc78d320 252:2 0 50G 0 lvm
vdd 253:48 0 50G 0 disk
vdd를 추가해보았습니다.
다만 약 10~20분의 시간이 지난 뒤, 자연스레 disk가 osd로 합류하였습니다.
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/vda ceph-db0a84a2-734b-4807-9d47-642952db9390 lvm2 a-- <50.00g 0
/dev/vdb ceph-a8b97e3e-7118-43ee-860f-b550a878edd0 lvm2 a-- <50.00g 0
/dev/vdc ceph-e4c61059-5d82-4087-be30-22d50d382c5f lvm2 a-- <50.00g 0
/dev/vdd ceph-ff6d639b-cba6-4c68-85b9-f10b70799eb5 lvm2 a-- <50.00g 0
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
ceph-a8b97e3e-7118-43ee-860f-b550a878edd0 1 1 0 wz--n- <50.00g 0
ceph-db0a84a2-734b-4807-9d47-642952db9390 1 1 0 wz--n- <50.00g 0
ceph-e4c61059-5d82-4087-be30-22d50d382c5f 1 1 0 wz--n- <50.00g 0
ceph-ff6d639b-cba6-4c68-85b9-f10b70799eb5 1 1 0 wz--n- <50.00g 0
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
osd-block-b5d0e574-6660-4d54-9f22-9797d241cfa3 ceph-a8b97e3e-7118-43ee-860f-b550a878edd0 -wi-ao---- <50.00g
osd-block-da43b94c-b958-4762-8440-ca840e1f5a61 ceph-db0a84a2-734b-4807-9d47-642952db9390 -wi-ao---- <50.00g
osd-block-a9fbafd8-355c-4e28-b607-ddbecc78d320 ceph-e4c61059-5d82-4087-be30-22d50d382c5f -wi-ao---- <50.00g
osd-block-8cd25617-0797-4197-8a5c-ef0112e4dd2f ceph-ff6d639b-cba6-4c68-85b9-f10b70799eb5 -wi-ao---- <50.00g
$ sudo ceph orch device ls --wide
HOST PATH TYPE TRANSPORT RPM DEVICE ID SIZE HEALTH IDENT FAULT AVAILABLE REFRESHED REJECT REASONS
test-ceph-01 /dev/vda hdd 50.0G N/A N/A No 76s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
test-ceph-01 /dev/vdb hdd 50.0G N/A N/A No 76s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
test-ceph-01 /dev/vdc hdd 50.0G N/A N/A No 76s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
test-ceph-01 /dev/vdd hdd 50.0G N/A N/A No 76s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
all-available-devices unmanaged가 어떤 값이 든, 조정을 못하는 건 분명하다.
mon이 새로운 disk를 감지하여 그런건가 싶어 mon 또한 unmanaged true로 설정하여 확인해보았지만 동일하게 disk가 추가되면 osd로 생성되었다.
왜 그럴까?
현재 배포되어있는 osd service에 대해서 확인해보자.
Ref :: https://docs.ceph.com/en/reef/cephadm/services/osd/#drivegroups
$ sudo ceph orch ls osd --format yaml
service_type: osd
service_name: osd
placement:
hosts:
- test-ceph-01
spec:
data_devices:
all: true
filter_logic: AND
objectstore: bluestore
status:
created: '2024-12-10T00:53:12.031407Z'
last_refresh: '2024-12-10T01:47:44.505513Z'
running: 7
size: 7
events:
- 2024-12-03T05:30:27.649233Z service:osd [INFO] "service was created"
Docs에서는 osd 서비스에 대한 yaml파일의 예제는 다음과 같이 되어있다.
service_type: osd
service_id: default_drive_group # custom name of the osd spec
placement:
host_pattern: '*' # which hosts to target
spec:
data_devices: # the type of devices you are applying specs to
all: true # a filter, check below for a full list
그렇다면 all: ture가 아닌 특정 disk만 조정하려면 어떻게 해야할까?
list형식으로 진행하면된다.
Ref :: https://docs.ceph.com/en/reef/cephadm/services/osd/#osd-filters
그럼 적용해보자.
$ cat osd.yml
service_type: osd
service_name: osd
placement:
hosts:
- test-ceph-01
spec:
data_devices:
paths:
- /dev/vda
- /dev/vdb
- /dev/vdc
- /dev/vdd
- /dev/vde
- /dev/vdf
- /dev/vdg
filter_logic: AND
objectstore: bluestore
$ sudo ceph orch apply -i osd.yml
Scheduled osd update...
잘 적용되었는지 yaml파일로 확인을 해보면
$ sudo ceph orch ls osd --format yaml
service_type: osd
service_name: osd
placement:
hosts:
- test-ceph-01
spec:
data_devices:
paths:
- /dev/vda
- /dev/vdb
- /dev/vdc
- /dev/vdd
- /dev/vde
- /dev/vdf
- /dev/vdg
filter_logic: AND
objectstore: bluestore
status:
created: '2024-12-10T03:43:29.551869Z'
last_refresh: '2024-12-10T03:43:33.820367Z'
running: 7
size: 7
events:
- 2024-12-03T05:30:27.649233Z service:osd [INFO] "service was created"
이후엔 disk를 아무리 추가하여도 osd disk로 변경되는 작업은 없었다.
즉, ceph orchstrator를 사용하는 환경에서, 자동으로 osd가 추가된다면 osd 서비스를 한번 확인해보는 것도 좋을 것 같다.