본문으로 건너뛰기
  1. Ocp/

ODF Storage trick

·
Kubernetes Openshift Ceph Rook
목차

Overview
#

언제부턴가 ODF(Openshift Data Foundation)를 구성할 때 강제로 SSD/NVMe 디스크를 사용하게 바뀌었습니다.
HDD를 사용하는 장비의 경우 조건이 맞지 않아서 ODF용 디스크로 사용할 수 없게된다는 뜻입니다.

근데 성능 포기하고 기능만 체크하고 싶은데 HDD만 있다면 난감한 상황이 발생할 것입니다…

이번 포스팅에서는 workaround로 HDD를 SSD처럼 보이게 만들어주는 방법에 대해서 작성하겠습니다.

No SSD/NVMe Disks detected
#

HDD를 사용중이라면 아래와 같이 ODF용 디스크로 사용할 수 없다고 에러가 발생하게 됩니다.

이 체크를 어떻게 하느냐~
디스크의 ROTA정보를 읽어서 이 디스크가 SSD인지 HDD인지 파악하게 됩니다.

[core@worker03 ~]$ lsblk -o "NAME,MAJ:MIN,RM,SIZE,RO,TYPE,ROTA" |grep vd[bc]
vdb    252:16   0     6T  0 disk    1

ROTAROTAtional device의 약칭으로, 디스크가 물리적으로 회전(rotating)하는지 여부를 나타냅니다.
HDD는 플래터가 물리적으로 회전하면서 데이터를 읽고 쓰기 때문에 ROTA가 1이고,
SSD/NVMe는 반도체 기반 저장장치로 물리적으로 회전하지 않기 때문에 ROTA가 0입니다.

이제 우리가 해줄 일은 HDD가 붙어있는 노드의 udev정보를 ROTA 1->0 으로 덮어씌워줄겁니다.

machineconfig 작성하기
#

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  labels:
    machineconfiguration.openshift.io/role: worker
  name: worker-udev-configuration
spec:
  config:
    ignition:
      config: {}
      security:
        tls: {}
      timeouts: {}
      version: 2.2.0
    networkd: {}
    passwd: {}
    storage:
      files:
      - contents:
          source: data:text/plain;charset=utf-8;base64,QUNUSU9OPT0iYWRkfGNoYW5nZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgS0VSTkVMPT0idmRbYi16XSIsICBBVFRSe3F1ZXVlL3JvdGF0aW9uYWx9PSIwIgo=
          verification: {}
        filesystem: root
        mode: 420
        path: /etc/udev/rules.d/99-ibm.rules
  osImageURL: ""

각 coreos노드에 적용해 줄 것이기 때문에 MachineConfig로 정의해주겠습니다.
content의 source에는 아래와 같은 내용이 base64로 인코딩 되어있습니다.

ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="vd[b-z]",  ATTR{queue/rotational}="0"

만약 바꾸고자 하는 disk의 이름이 vd~로 시작하지 않는다면 KERNEL의 변수를 바꿔주고 base64로 다시 인코딩 해주면 됩니다.

배포!

# oc apply -f storagetrick.yaml
machineconfig.machineconfiguration.openshift.io/worker-udev-configuration created

# oc get mc |grep udev
worker-udev-configuration                                                                                2.2.0             50s

잠시 기다리고, 적용된 노드로 들어가서 확인해보면 아래와 같이 ROTA가 0으로 바뀐 것을 확인할 수 있습니다.

[core@worker01 ~]$ lsblk -o "NAME,MAJ:MIN,RM,SIZE,RO,TYPE,ROTA" |grep vd[bc]
vdb    252:16   0     6T  0 disk    0

ODF작성 페이지로 넘어가보면 에러가 사라진 것도 확인할 수 있습니다!

반드시 테스트 목적으로만 사용해주세요!

관련 글

ODF Resource Customization
Kubernetes Openshift Ceph Rook
Overview # OpenShift에서 가장 쉽게 스토리지를 구성할 수 있는 방법인 OpenShift Data Foundation 를 사용하게 되면 Ceph Cluster를 통해 File, Block, Object 스토리지를 사용할 수 있게 됩니다.
OVN-kubernetes network migration
Kubernetes Openshift
Overview # 오랜만에 작성하는 openshift관련 포스팅입니다. 최근 관리하는 클러스터(4.15)를 4.16으로 업그레이드 할 일이 생겨서 작업 중 아래와 같은 에러를 만났습니다.
OperatorHub를 위한 Custom Catalog만들기 (feat. Restricted Network)
Kubernetes Openshift
Overview # 대략 2년전 비슷한 내용으로 포스팅을 한 적이 있었는데, 내용에 변경이 있어서 업데이트된 내용으로 다시 작성하고자 합니다.