目次

32 Ceph 再同期

1.LVM設定

※RAMディスクを利用しているため、サーバ強制停止後は基本的にLVMが壊れています。

下記でramdisk作成、opencasで/dev/ceph/lvをキャッシュするように設定している。

modprobe brd rd_size=8192000
casadm -S -i 1 -d /dev/ram1 -c wb
casadm -A -i 1 -d /dev/ceph/lv

上記の設定で下記のLVMが見えているはず

[root@ceph001 ~]# lvs
  LV      VG     Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  rocksdb cas    -wi-ao---- <200.00g                                                    
  waldb   cas    -wi-ao----    2.00g                                                    
  home    centos -wi-ao---- <779.45g                                                    
  root    centos -wi-ao----   50.00g                                                    
  swap    centos -wi-ao----   <7.88g                                                    
  lv      ceph   -wi-ao----  202.00g                                                    
  osd     ceph   -wi-ao----  <10.45t 

2.再同期

LVMが見えると、ceph-volume lvm listでリストが見える。

[root@ceph005 ~]# ceph-volume lvm list

====== osd.3 =======

  [db]          /dev/cas/rocksdb

      block device              /dev/ceph/osd
      block uuid                Hq1Za9-hglA-4O2Z-YIgG-nB9k-xoep-Ah7nu0
      cephx lockbox secret      
      cluster fsid              68be67b9-b1a6-411e-8b65-c29c23a7968a
      cluster name              ceph
      crush device class        None
      db device                 /dev/cas/rocksdb
      db uuid                   V1FXMK-ceJQ-loMb-n2oO-7kPh-kITD-ivaVSy
      encrypted                 0
      osd fsid                  7b03b099-c6bb-47b7-b010-143799410dda
      osd id                    3
      type                      db
      vdo                       0
      wal device                /dev/cas/waldb
      wal uuid                  f0EUdc-V2c2-O8NM-nnE3-2xQn-2Mht-UXgsIo
      devices                   /dev/cas1-1

  [wal]         /dev/cas/waldb

      block device              /dev/ceph/osd
      block uuid                Hq1Za9-hglA-4O2Z-YIgG-nB9k-xoep-Ah7nu0
      cephx lockbox secret      
      cluster fsid              68be67b9-b1a6-411e-8b65-c29c23a7968a
      cluster name              ceph
      crush device class        None
      encrypted                 0
      osd fsid                  7b03b099-c6bb-47b7-b010-143799410dda
      osd id                    3
      type                      wal
      vdo                       0
      wal device                /dev/cas/waldb
      wal uuid                  f0EUdc-V2c2-O8NM-nnE3-2xQn-2Mht-UXgsIo
      devices                   /dev/cas1-1

  [block]       /dev/ceph/osd

      block device              /dev/ceph/osd
      block uuid                Hq1Za9-hglA-4O2Z-YIgG-nB9k-xoep-Ah7nu0
      cephx lockbox secret      
      cluster fsid              68be67b9-b1a6-411e-8b65-c29c23a7968a
      cluster name              ceph
      crush device class        None
      db device                 /dev/cas/rocksdb
      db uuid                   V1FXMK-ceJQ-loMb-n2oO-7kPh-kITD-ivaVSy
      encrypted                 0
      osd fsid                  7b03b099-c6bb-47b7-b010-143799410dda
      osd id                    3
      type                      block
      vdo                       0
      wal device                /dev/cas/waldb
      wal uuid                  f0EUdc-V2c2-O8NM-nnE3-2xQn-2Mht-UXgsIo
      devices                   /dev/sdb

Ⅰ. OSDをそのまま起動のパターン

もしも、rocksdb/waldb/osdなど壊れてなければ、このままOSDをactivateすれば再同期されます。

ceph-volume lvm activate {ID} {FSID}
ceph-volume lvm activate 3 7b03b099-c6bb-47b7-b010-143799410dda

ログ確認

tailf /var/log/ceph/ceph-osd.3.log

Ⅱ. 普通に起動できないパターン

データが壊れていて、OSDが同期できない状態の場合は、全てデータを消してネットワーク越しに再同期します。

一度LVMを削除する

# lvremote  /dev/ceph/osd
# lvremote  /dev/cas/rocksdb
# lvremote  /dev/cas/waldb

# lvcreate -l 100%free -n osd ceph
# lvcreate -L 2G  -n waldb cas
# lvcreate -l 100%free  -n rocksdb cas

壊れた対象ののOSDを削除

ID 3を想定して記載

[root@ceph005 ~]# ceph osd status
+----+---------+-------+-------+--------+---------+--------+---------+----------------+
| id |   host  |  used | avail | wr ops | wr data | rd ops | rd data |     state      |
+----+---------+-------+-------+--------+---------+--------+---------+----------------+
| 0  | ceph001 | 3060G | 7835G |   14   |   388k  |    0   |     0   |   exists,up    |
| 1  | ceph002 | 3285G | 7610G |   22   |  1382k  |    2   |  1638   |   exists,up    |
| 2  | ceph004 | 2882G | 8014G |   16   |   485k  |    2   |     0   |   exists,up    |
| 3  | ceph005 |    0  |    0  |    3   |  49.6k  |    0   |     0   | autoout,exists |
| 4  | ceph006 | 2815G | 8080G |    9   |   450k  |    2   |   825   |   exists,up    |
| 5  | ceph003 | 3360G | 7536G |   29   |   593k  |    2   |  4096   |   exists,up    |
+----+---------+-------+-------+--------+---------+--------+---------+----------------+

下記のコマンドでOSDの「3」が消えます。

# OSD=3
# ceph osd out osd.$OSD
# ceph osd crush remove osd.$OSD
# ceph auth del osd.$OSD
# ceph osd down osd.$OSD
# ceph osd rm $OSD

再度OSDの準備

# ceph-volume lvm prepare --bluestore --data /dev/ceph/osd --block.db cas/rocksdb --block.wal cas/waldb

OSD起動

# systemctl reset-failed ceph-osd@3
  
# systemctl start ceph-osd@3