molpako / ceph-cluster

0 stars 0 forks source link

CephFSの作成 #1

Open molpako opened 3 months ago

molpako commented 3 months ago

CephFSの作成

CephFSを作成するので作業メモ

molpako commented 3 months ago

Pool Type

CephFSでは専用Poolを作成することが推奨されている。Poolの作成では「Replication」か「Erasure Coding」の2つからタイプを指定できる。

Replication

オブジェクトを複製する。ceph osd pool create ではデフォルトで Replication タイプになる

Erasure Coding

オブジェクトを複数のデータチャンクとコーディングチャンクに分割され、異なるOSDに保存する。

Replicationと比べて、CPUリソースを喰うようなるが、ディスク効率が良くなる。(Replicationはデフォルトで x3 使うが、Erasure Coding は x1.5 で済むらしい!)

しかし小さいファイルを大量に扱う場合では、オブジェクト分割のオーバーヘッドが大きくなり、計算コストも多くなり、効率が悪くなるみたいだ。

molpako commented 3 months ago

Pool の作成

$ ceph osd pool create cephfs_data
$ ceph osd pool create cephfs_data_ec erasure
$ ceph osd pool create cephfs_metadata

[!WARNING] cephfs_metadata は erasure pool を使えないので注意

molpako commented 3 months ago

CephFS の作成

$ ceph fs new cephfs1 cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
$ ceph fs status
cephfs1 - 0 clients
=======
      POOL         TYPE     USED  AVAIL
cephfs_metadata  metadata     0   78.7G
  cephfs_data      data       0   78.7G
molpako commented 3 months ago

MDSデプロイ

CephFS には MDS(メタデータサーバー)という別コンポーネントが必要になる。読み書きは直接OSDに対して行うが、データへのアクセスはMDSを通して行われる。そのMDSをデプロイする

playbook

ceph/cephadm-ansible のモジュールを使ってデプロイする

https://github.com/ceph/cephadm-ansible/blob/devel/library/ceph_orch_apply.py

---
- name: Deploy mds service
  hosts: admin
  become: true
  gather_facts: false
  vars:
    mds_spec:
      service_type: mds
      service_id: mds
      placement:
        label: mds
  tasks:
    - name: Apply mds spec
      ceph_orch_apply:
        spec: "{{ mds_spec | to_nice_yaml }}"

MDSデプロイ後。 activate:1, standby:2 になっている

root@mon1:/# ceph fs status
cephfs1 - 0 clients
=======
RANK  STATE         MDS           ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  mds.mds3.fdobsg  Reqs:    0 /s    10     13     12      0
      POOL         TYPE     USED  AVAIL
cephfs_metadata  metadata  96.0k  78.7G
  cephfs_data      data       0   78.7G
  STANDBY MDS
mds.mds1.tmhtfe
mds.mds2.pnftys
MDS version: ceph version 18.2.2 (531c0d11a1c5d39fbfe6aa8a521f023abf3bf3e2) reef (stable)

アクティブMDSを増やす

https://docs.ceph.com/en/latest/cephfs/multimds/#increasing-the-mds-active-cluster-size

root@mon1:/# ceph fs get cephfs1  | grep max_mds
max_mds 1
root@mon1:/# ceph fs set cephfs1 max_mds 2
root@mon1:/# ceph fs status
cephfs1 - 0 clients
=======
RANK  STATE         MDS           ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  mds.mds3.fdobsg  Reqs:    0 /s    10     13     12      0
 1    active  mds.mds2.pnftys  Reqs:    0 /s    10     13     11      0
      POOL         TYPE     USED  AVAIL
cephfs_metadata  metadata   144k  78.7G
  cephfs_data      data       0   78.7G
  STANDBY MDS
mds.mds1.tmhtfe