[SDS] 서버에 Ceph Storage 마운트 하기

이전에 k8s에서 Ceph를 사용하기 위해서 클러스터를 구성하고 Ceph-CSI를 배포하여 k8s 클러스터에 StorageClass로 등록하는 것에 대해서 정리를 했다. 이번에는 클라우드환경이 아닌 곳에서 Ceph를 볼륨으로 사용하는 경우에는 어떻게 마운트를 하는지 정리를 해보려고 한다.

먼저, CephFS 와 RBD 두가지 스토리지 타입을 온프레미스 환경(레거시 서버)에서 사용할 때, 성격이 조금 다른데 차이점을 살펴보면, CephFS의 경우 공유볼륨으로 활용할 수 있고, 다중 노드에서 동시에 마운트하여 rw 작업을 진행해도 실시간으로 장치가 동기화 된다. 클라이언트 노드 입장에서는 nfs와 비슷하다고 보면 된다.

그리고 RBD의 경우 블록 디바이스로 Ceph Pool에서 만들어진 볼륨 이미지가 클라이언트 서버에 블록 디바이스로 매핑이 된다. 다중 노드에서 해당 장치를 마운트 하고, 쓰기도 할 수는 있지만, umount — mount 작업을 진행해야 동기화가 되기 때문에 공유 볼륨으로 사용하기 어렵다. 클라이언트 노드 입장에서는 SAN Storage에서 만들어준 LUN 이미지라고 생각하면 된다.

Ceph 클러스터에 CephFS가 이미 만들어져 있다고 가정하고, CephFS를 서버에 마운트하는 방법을 먼저 정리해보자

CephFS

위와 같은 커맨드로 CephFS를 서버에 마운트할 수 있다고 doc 문서에 나와있는데 실제로 위와 같이 커맨드를 입력하면 마운트가 안된다.(일단 나는 한번도 된 적이 없다)

Ceph 클러스터에 있는 CephFS를 마운트하는 것이다 보니 Ceph 유저 정보를 같이 입력을 해주어야 하는데 이때 mds에 관한 권한이 설정되어 있는 Ceph 유저의 정보를 넣어주어야 CephFS를 정상적으로 마운트할 수 있다.

Ceph 유저 정보는 아래와 같이 확인할 수 있다.

기본적으로 client.admin 계정은 만들어져 있는 관리자 계정이고, Ceph 클러스터의 모든 객체에 대한 권한이 주어져 있는 상태이다. 추가로 계정을 만들어서 진행을 하지 않을꺼면 client.admin 계정의 키를 확인해서 마운트하자

마운트 상태를 조회하여 보면, Ceph 타입으로 마운트포인트에 마운트 된 것을 확인할 수 있다. 다중 노드에서 동시에 마운트하여 디스크에 쓰기 작업을 진행해보면, 바로바로 동기화 되며 공유 되는 것을 테스트 해볼 수 있다.

다음으로 RBD를 서버에 할당하여 마운트하는 방법을 정리하도록 하겠다.

RBD

먼저, pool 을 만들고, 해당 pool을 rbd pool로 지정한다. 서버에 할당할 블록 디바이스 이미지를 만들 전용 pool 이라고 생각하면 된다. 편의를 위해서 local로 pool 이름을 지정하였다.

위 커맨드를 설명하자면, “rbd pool local에 크기가 2G인 vol1 이란 장치 이미지를 만든다.” 그리고 다음 커맨드로 확인 해보면 이미지를 확인할 수 있다.

위와 같은 출력을 확인할 수 있다. 다음으로 해당 이미지를 할당할 서버에서 다음 커맨드로 이미지를 장치로 매핑한다.

/dev/rbd0 에 매핑이 되었다는 결과를 확인 할 수 있고, #lsblk 커맨드를 이용하여 확인해보면, rbd0가 생긴 것을 확인할 수 있다.

일반적인 물리 디스크 처럼 해당 /dev/rbd0 장치를 ext4, xfs와 같은 파일시스템으로 포맷을 진행하고, 마운트해서 사용하면 된다.

--

--

gooby goober yeah

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store