ssd와 HDD가 모두 존재할 때, HDD의 성능을 향상 시켜보려고 합니다.

File의 inode 정보는 data에 저장됩니다.

먼저, Ceph의 FileSystem(이하 fs)에는 metadata와 data가 존재합니다.
metadata는 당연히 ssd에 넣으셨겠죠.
하지만 문제는 data입니다.

저는 당연히 inode 같은 메타 정보는 ceph FS의 metadata에 저장되는 줄 알았습니다.

하지만 CEPH 공식 문서의 CREATE A CEPH FILE SYSTEM 게시물에 다음과 같은 내용이 있습니다.

The data pool used to create the file system is the “default” data pool and the location for storing all inode backtrace information, which is used for hard link management and disaster recovery. For this reason, all CephFS inodes have at least one object in the default data pool. If erasure-coded pools are planned for file system data, it is best to configure the default as a replicated pool to improve small-object write and read performance when updating backtraces. Separately, another erasure-coded data pool can be added (see also Erasure code) that can be used on an entire hierarchy of directories and files (see also File layouts).

요약해보자면 erasure code는 성능이 좋지는 않은데, 이 구성을 default data pool로 설정시 inode가 default pool에 저장 된다고 합니다.

erasure 코드와 상관 없이, HDD기반의 cephfs의 성능을 향상 시키기 위해서는 cephfs-metadata poolcephfs-default-data pool을 ssd로 하고, 실제로 사용할 DATA Pool을 따로 만들어주면 됩니다.

구성하기

크게 보면 metadata와 inode를 위한 ssd cephfs를 생성하고,
이 FS에 HDD 풀을 추가합니다.
마지막으로 HDD 풀을 기본 DATA 풀처럼 사용하도록 설정합니다.

cephfs-metadata 풀 생성

  ~   ► sudo ceph osd pool create cephfs-meta
  ~   ► sudo ceph osd pool set cephfs-meta crush_rule replicated_ssd;
# replicated_ssd는 device class가 ssd인 장치만을 사용하도록 설정 된 crush_rule입니다.
  ~   ► sudo ceph osd pool set cephfs-meta compression_algorithm lz4
# IO 속도를 위해 lz4 압축을 사용합니다.

cephfs-default-data (inode 저장용) 풀 생성

  ~   ► sudo ceph osd pool create cephfs-inode
  ~   ► sudo ceph osd pool set cephfs-inode crush_rule replicated_ssd;
# replicated_ssd는 device class가 ssd인 장치만을 사용하도록 설정 된 crush_rule입니다.
  ~   ► sudo ceph osd pool set cephfs-inode compression_algorithm lz4
# IO 속도를 위해 lz4 압축을 사용합니다.

cephfs-data 풀 생성

  ~   ► sudo ceph osd pool create cephfs-data
  ~   ► sudo ceph osd pool set cephfs-data crush_rule replicated_hdd;
# replicated_ssd는 device class가 ssd인 장치만을 사용하도록 설정 된 crush_rule입니다.
  ~   ► sudo ceph osd pool set cephfs-data compression_algorithm zstd
# 압축률을 위해 lz4 압축을 사용합니다.

cephfs 생성

  ~   ► sudo ceph fs new cephfs-test cephfs-meta cephfs-inode

cephfs에 data 풀 추가

# cephfs 상태 확인
  ~   ► ceph fs status
-> cephfs-test - 8 clients
===================
RANK  STATE    MDS       ACTIVITY     DNS    INOS   DIRS   CAPS  
 0    active  pve3-2  Reqs:    0 /s  1183k  1142k   177k  1227   
            POOL                TYPE     USED  AVAIL  
    cephfs-meta               metadata     0   1242G  
   cephfs-inode                 data       0   1245G 
  ~   ► ceph fs add_data_pool cephfs-test cephfs-inode
  ~   ► ceph fs status
cephfs-test - 8 clients
===================
RANK  STATE    MDS       ACTIVITY     DNS    INOS   DIRS   CAPS  
 0    active  pve3-2  Reqs:    0 /s  1183k  1142k   177k  1227   
            POOL                TYPE     USED  AVAIL  
    cephfs-meta               metadata     0   1242G  
    cephfs-data                 data       0   1245G  
   cephfs-inode                 data       0   7723G  

cephfs의 데이터가 data로 삽입되도록 설정

가장 중요한 단계이면서 약간 복잡할 수 있습니다.

참고한 자료는 다음 ceph 공식 자료를 활용하였습니다.
ADDING A DATA POOL TO THE FILE SYSTEM

먼저 ceph fs를 마운트 되어있다고 가정합니다.
마운트 한 위치로 이동하여 setfattr을 이용하여 attribute를 적용합니다.

cd /mnt/cephfs-test
setfattr -n ceph.dir.layout.pool -v cephfs-inode ./
setfattr -n ceph.dir.layout.pool -v cephfs-inode ./*

마무리

다른 머신에서도 이 cephfs를 마운트하여 파일을 쓰면
inode pool에 파일이 써지는 것을 볼수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock