Projet

Général

Profil

Management Cluster Ceph » Historique » Version 29

« Précédent - Version 29/56 (diff) - Suivant » - Version actuelle
Laurent GUERBY, 13/08/2017 10:36


Management Cluster Ceph

Liens

Ajout d'un OSD classique

$ ceph-disk prepare --zap-disk --cluster-uuid 1fe74663-8dfa-486c-bb80-3bd94c90c967 --fs-type=ext4 /dev/sdX
$ tune2fs -c 0 -i 0 -m 0 /dev/sdX
$ smartctl --smart=on /dev/sdX  # Pour le monitoring.

Récuperer l'id avec (c'est celui tout en bas pas accroché à l'arbre):

ceph osd tree

DEBUT WORKAROUND BUG PREPARE

Dans le cas ou l'osd est DOWN après le prepare c'est surement ce bug

ID est le premier numero libre d'osd en partant de zero (en bas du ceph osd tree)

mkdir /var/lib/ceph/osd/ceph-<ID>
chown ceph:ceph /var/lib/ceph/osd/ceph-<ID>
ceph-disk activate /dev/sd<X>1
systemctl status ceph-osd@<ID>

FIN WORKAROUND BUG PREPARE

Pour un HDD:

$ ceph osd crush add osd.<ID> 0 root=default host=<host>

Pour un SSD:

$ ceph osd crush add osd.<ID> 0 root=ssd host=<host>-ssd

Ensuite, autoriser Ceph à mettre des data dessus:

$ /root/tools/ceph-reweight-osds.sh osd.<ID>

Vider un OSD:

vider_osp(){
  name="$1" 
  ceph osd out ${name}
  ceph osd crush reweight ${name} 0
  ceph osd reweight ${name} 0
}

Suppression d'un OSD:

remove_osd(){
 name="$1" 
 ceph osd out ${name}
 systemctl stop ceph-osd@${name#osd.}
 ceph osd crush remove ${name}
 ceph auth del ${name}
 ceph osd rm ${name}
 ceph osd tree
}

Arrêter les IO de recovery:

ceph osd set nobackfill 
ceph osd set norebalance
ceph osd set norecover

Procédure d'upgrade


/!\Lire la release note (contient très très souvent des trucs à faire en plus) /!\

Upgrade des MONs:

Mettre le flags noout:

ceph osd set noout

Sur chaque MONs (g1/g2/g3)

apt-get upgrade -y
systemctl restart ceph-mon@g*
ceph -s

Note que seulement le node 'leader/master' va provoquer une micro/nano coupure, souvent c'est même invisible.

Upgrade des OSDs:

Pour chaque machine

apt-get upgrade -y
systemctl restart ceph-osd@*

Puis attendre que le recovery termine avant de faire la suivante.

Une fois toutes les OSDs upgrader et relancer, faire:

ceph osd unset noout

Remplacement à froid d'un tier cache:

upstream doc: http://docs.ceph.com/docs/master/rados/operations/cache-tiering/

ceph osd tier cache-mode ec8p2c forward
rados -p ec8p2c cache-flush-evict-all
ceph osd tier remove-overlay ec8p2
ceph osd tier remove ec8p2 ec8p2c

rados rmpool ec8p2c ec8p2c  --yes-i-really-really-mean-ita
ceph osd pool create ec8p2c 128 128 replicated

ceph osd tier add ec8p2 ec8p2c
ceph osd tier cache-mode ec8p2c writeback
ceph osd tier set-overlay ec8p2 ec8p2c

ceph osd pool set ec8p2c size 3
ceph osd pool set ec8p2c min_size 2
ceph osd pool set ec8p2c hit_set_type bloom

ceph osd pool set ec8p2c hit_set_count 1
ceph osd pool set ec8p2c hit_set_period 3600
ceph osd pool set ec8p2c target_max_bytes 200000000000
ceph osd pool set ec8p2c target_max_objects 10000000
ceph osd pool set ec8p2c cache_target_dirty_ratio 0.4
ceph osd pool set ec8p2c cache_target_full_ratio 0.8

Ajout d'un OSD qui partage le SSD avec l'OS (OBSOLETE PLUS COMPATIBLE AVEC LES FUTURES VERSION DE CEPH)

En général avec ceph, on donne un disque, ceph créé 2 partitions une pour le journal de l'OSD, l'autre pour les datas
mais pour le SSD de tetaneutral qui a aussi l'OS, voici la méthode

Création manuelle de la partition de data ceph /dev/sda2 ici

Debian (MBR format):

apt-get install partprobe
fdisk /dev/sda

n
p
<enter>
<enter>
<enter>
<enter>
w

$ partprobe

Ubuntu (GPT format):

# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model: ATA SAMSUNG MZ7KM480 (scsi)
Disk /dev/sdb: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  20.0GB  20.0GB  primary  ext4            boot
 2      20.0GB  36.0GB  16.0GB  primary  linux-swap(v1)

(parted) mkpart                                                           
Partition type?  primary/extended?                                        
Partition type?  primary/extended? primary
File system type?  [ext2]? xfs                                            
Start?                                                                    
Start? 36.0GB                                                             
End? 100%                                                                 
(parted) print                                                            
Model: ATA SAMSUNG MZ7KM480 (scsi)
Disk /dev/sdb: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  20.0GB  20.0GB  primary  ext4            boot
 2      20.0GB  36.0GB  16.0GB  primary  linux-swap(v1)
 3      36.0GB  480GB   444GB   primary

(parted) quit                                                             
Information: You may need to update /etc/fstab.

On prepare le disk comme normalement

ceph-disk prepare --fs-type=ext4 --cluster-uuid 1fe74663-8dfa-486c-bb80-3bd94c90c967 /dev/sda2
ceph-disk activate /dev/sda2
ceph osd crush add osd.<ID> 0 root=ssd host=g3-ssd

Ensuite, autoriser Ceph à mettre des data dessus:

$ /root/tools/ceph-reweight-osds.sh osd.<ID>

inconsistent pg

root@g1:~# ceph health detail
HEALTH_ERR 1 pgs inconsistent; 2 scrub errors
pg 58.22d is active+clean+inconsistent, acting [9,47,37]
2 scrub errors
root@g1:~# rados list-inconsistent-obj 58.22d  --format=json-pretty
{
    "epoch": 269000,
    "inconsistents": [
        {
            "object": {
                "name": "rbd_data.11f20f75aac8266.00000000000f79f9",
                "nspace": "",
                "locator": "",
                "snap": "head",
                "version": 9894452
            },
            "errors": [
                "data_digest_mismatch" 
            ],
            "union_shard_errors": [
                "data_digest_mismatch_oi" 
            ],
            "selected_object_info": "58:b453643a:::rbd_data.11f20f75aac8266.00000000000f79f9:head(261163'9281748 osd.9.0:6221608 dirty|data_digest|omap_digest s 4194304 uv 9894452 dd 2193d055 od ffffffff alloc_hint [0 0])",
            "shards": [
                {
                    "osd": 9,
                    "errors": [],
                    "size": 4194304,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0x2193d055" 
                },
                {
                    "osd": 37,
                    "errors": [
                        "data_digest_mismatch_oi" 
                    ],
                    "size": 4194304,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0x05891fb4" 
                },
                {
                    "osd": 47,
                    "errors": [],
                    "size": 4194304,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0x2193d055" 
                }
            ]
        }
    ]
}
root@g1:~# ceph osd map disks rbd_data.11f20f75aac8266.00000000000f79f9
osdmap e269110 pool 'disks' (58) object 'rbd_data.11f20f75aac8266.00000000000f79f9' -> pg 58.5c26ca2d (58.22d) -> up ([9,47,37], p9) acting ([9,47,37], p9)