openSUSE Leap 16

Ceph Reef : ブロックデバイスを利用する2025/10/28

 

以下のような構成の Ceph クラスターストレージを、[dlp] クライアントから利用できるように設定します。

                                         |
        +--------------------+           |
        |   [dlp.srv.world]  |10.0.0.30  |
        |     Ceph Client    +-----------+
        |                    |           |
        +--------------------+           |
            +----------------------------+----------------------------+
            |                            |                            |
            |10.0.0.51                   |10.0.0.52                   |10.0.0.53 
+-----------+-----------+    +-----------+-----------+    +-----------+-----------+
|   [node01.srv.world]  |    |   [node02.srv.world]  |    |   [node03.srv.world]  |
|     Object Storage    +----+     Object Storage    +----+     Object Storage    |
|     Monitor Daemon    |    |                       |    |                       |
|     Manager Daemon    |    |                       |    |                       |
+-----------------------+    +-----------------------+    +-----------------------+

 

例として、クライアント上でブロックデバイスを作成して利用します。

[1] 管理ノードからクライアントホストへ SSH 公開鍵を転送し、設定します。
# 公開鍵転送

node01:~ #
ssh-copy-id dlp

# クライアントホストに必要なパッケージをインストール

node01:~ #
ssh dlp "zypper -n install ceph-common"
# クライアントホストに必要なファイルを転送

node01:~ #
scp /etc/ceph/ceph.conf dlp:/etc/ceph/

ceph.conf                                     100%  195    98.1KB/s   00:00
node01:~ #
scp /etc/ceph/ceph.client.admin.keyring dlp:/etc/ceph/

ceph.client.admin.keyring                     100%  151    71.5KB/s   00:00
node01:~ #
ssh dlp "chown ceph:ceph /etc/ceph/ceph.*"

[2] クライアント上でのブロックデバイスの作成とマウントです。
# デフォルト RBD プール [rbd] 作成

dlp:~ #
ceph osd pool create rbd 32

pool 'rbd' created
# Placement Groups オートスケール 有効化

dlp:~ #
ceph osd pool set rbd pg_autoscale_mode on

set pool 2 pg_autoscale_mode to on
# プール 初期化

dlp:~ #
rbd pool init rbd

dlp:~ #
ceph osd pool autoscale-status

POOL    SIZE  TARGET SIZE  RATE  RAW CAPACITY   RATIO  TARGET RATIO  EFFECTIVE RATIO  BIAS  PG_NUM  NEW PG_NUM  AUTOSCALE  BULK 
.mgr  452.0k                3.0        479.9G  0.0000                                  1.0       1              on         False
rbd    1365                 3.0        479.9G  0.0000                                  1.0      32              on         False

# 10G のブロックデバイスを作成

dlp:~ #
rbd create --size 10G --pool rbd rbd01
# 確認

dlp:~ #
rbd ls -l

AME   SIZE    PARENT  FMT  PROT  LOCK
rbd01  10 GiB            2

# 作成したブロックデバイスをマッピング

dlp:~ #
rbd map rbd01

/dev/rbd0
# 確認

dlp:~ #
rbd showmapped

id  pool  namespace  image  snap  device
0   rbd              rbd01  -     /dev/rbd0

# Btrfs でフォーマット

dlp:~ #
mkfs.btrfs /dev/rbd0

btrfs-progs v6.14
See https://btrfs.readthedocs.io for more information.

Performing full device TRIM /dev/rbd0 (10.00GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Label:              (null)
UUID:               bcb68a35-9353-4721-bc84-7fad9a7e3dab
Node size:          16384
Sector size:        4096        (CPU page size: 4096)
Filesystem size:    10.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             256.00MiB
  System:           DUP               8.00MiB
SSD detected:       yes
Zoned device:       no
Features:           extref, skinny-metadata, no-holes, free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1    10.00GiB  /dev/rbd0

dlp:~ #
mount /dev/rbd0 /mnt

dlp:~ #
df -hT

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda2      btrfs      28G  2.8G   25G  11% /
devtmpfs       devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     784M  744K  783M   1% /run
tmpfs          tmpfs     1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
/dev/vda2      btrfs      28G  2.8G   25G  11% /.snapshots
/dev/vda2      btrfs      28G  2.8G   25G  11% /boot/grub2/i386-pc
/dev/vda2      btrfs      28G  2.8G   25G  11% /boot/grub2/x86_64-efi
/dev/vda2      btrfs      28G  2.8G   25G  11% /home
/dev/vda2      btrfs      28G  2.8G   25G  11% /srv
tmpfs          tmpfs     2.0G     0  2.0G   0% /tmp
/dev/vda2      btrfs      28G  2.8G   25G  11% /root
/dev/vda2      btrfs      28G  2.8G   25G  11% /opt
/dev/vda2      btrfs      28G  2.8G   25G  11% /usr/local
/dev/vda2      btrfs      28G  2.8G   25G  11% /var
tmpfs          tmpfs     1.0M     0  1.0M   0% /run/credentials/serial-getty@ttyS0.service
tmpfs          tmpfs     1.0M     0  1.0M   0% /run/credentials/getty@tty1.service
tmpfs          tmpfs     392M  4.0K  392M   1% /run/user/0
/dev/rbd0      btrfs      10G  5.8M  9.5G   1% /mnt
[3] 作成したブロックデバイスやプールを削除する場合は以下のように実行します。
プールを削除する場合は [Monitor Daemon] の設定で、[mon allow pool delete = true] が設定されている必要があります
# アンマップ

dlp:~ #
rbd unmap /dev/rbd/rbd/rbd01
# ブロックデバイス削除

dlp:~ #
rbd rm rbd01 -p rbd

Removing image: 100% complete...done.
# プール削除
# ceph osd pool delete [プール名] [プール名] ***

dlp:~ #
ceph osd pool delete rbd rbd --yes-i-really-really-mean-it

pool 'rbd' removed
関連コンテンツ