Ceph Orchestrator osd disk auto add관련하여

beomjin·2024년 12월 14일

Ceph를 지금까지 orchestrator를 사용하지 않는 환경을 사용하다가 orchestator를 사용하는 환경으로 변경을 하니, Disk가 자동으로 ceph osd disk로 변경되는 이슈가 있어 어떤방식으로 동작하게 되는지 확인하고자합니다.

Ceph orchestrator는 무엇일까?

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>
  • 명령어를 수행하면 osd.all-available-devices 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
  • 주목해야할 점은 spec 의 부분이다.
  • data_devices 칼럼은 osd 를 적용할 device의 유형을 정하는데, 여기서 all : true의 값은 host에서 사용 가능한 모든 disk를 osd로 사용한다고 한다.

그렇다면 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 서비스를 한번 확인해보는 것도 좋을 것 같다.

0개의 댓글