Quantcast
Channel: Blog Virtualizacion
Viewing all articles
Browse latest Browse all 679

Proxmox: Ceph crear pools diferentes con HDD y SSD

$
0
0

Proxmox: Ceph crear pools diferentes con HDD y SSD

Hoy os vamos a explicar como configurar un storage Ceph diferenciando por tipos de discos.

En mi lab tengo discos HDD y SSD, unos me dan capacidad y los otros velocidad. Con lo que necesito que la carga de trabajo se reparta según necesite una cosa u otra.

Yo parto de un clúster Ceph ya montado con 3 nodos, como os expliqué:

proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-0

Usaremos lsblk para revisar los discos instalados en cada nodo:

root@pve2:~# lsblk 
NAME                                                                                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                                                                                         7:0    0    16G  0 loop 
loop1                                                                                         7:1    0    20G  0 loop 
loop2                                                                                         7:2    0    30G  0 loop 
sda                                                                                           8:0    0 223.6G  0 disk 
├─sda1                                                                                        8:1    0  1007K  0 part 
├─sda2                                                                                        8:2    0   512M  0 part 
└─sda3                                                                                        8:3    0 223.1G  0 part 
  ├─pve-swap                                                                                253:2    0     8G  0 lvm  [SWAP]
  ├─pve-root                                                                                253:3    0  55.8G  0 lvm  /
  ├─pve-data_tmeta                                                                          253:4    0   1.4G  0 lvm  
  │ └─pve-data                                                                              253:6    0 140.5G  0 lvm  
  └─pve-data_tdata                                                                          253:5    0 140.5G  0 lvm  
    └─pve-data                                                                              253:6    0 140.5G  0 lvm  
sdb                                                                                           8:16   0 447.1G  0 disk 
└─ceph--a5d1f4c7--d20c--4225--a396--eb6fe21fb023-osd--block--1bbd7bb8--f797--49f3--98bd--2136611277fb
                                                                                            253:1    0 447.1G  0 lvm  
sdc                                                                                           8:32   0   2.7T  0 disk 
sdd                                                                                           8:48   0 223.6G  0 disk 
└─ceph--2a32612f--a401--434d--a07a--37afbac6b795-osd--wal--a4d05326--ab6b--4f47--8157--d7e4d48cb365
                                                                                            253:0    0   4.5G  0 lvm  
nvme0n1                                                                                     259:0    0  13.4G  0 disk

Revisamos los OSD creados y la clase de cada uno HDD o SSD:

root@pve1:~# ceph osd tree
ID  CLASS WEIGHT   TYPE NAME     STATUS REWEIGHT PRI-AFF 
 -1       10.15164 root default                          
 -3        3.38388     host pve1                         
  1   hdd  2.72899         osd.1     up  1.00000 1.00000 
  0   ssd  0.43660         osd.0     up  1.00000 1.00000 
  2   ssd  0.21829         osd.2     up  1.00000 1.00000 
-10        3.38388     host pve2                         
  7   hdd  2.72899         osd.7     up  1.00000 1.00000 
  6   ssd  0.43660         osd.6     up  1.00000 1.00000 
  8   ssd  0.21829         osd.8     up  1.00000 1.00000 
 -7        3.38388     host pve3                         
  4   hdd  2.72899         osd.4     up  1.00000 1.00000 
  3   ssd  0.43660         osd.3     up  1.00000 1.00000 
  5   ssd  0.21829         osd.5     up  1.00000 1.00000

Lo podéis hacer visualmente también:

proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-2

Ahora crearemos las rulesets:

ceph osd crush rule create-replicated ssdpool default host ssd
ceph osd crush rule create-replicated hddpool default host hdd

Revisamos las reglas generadas:

root@pve1:~# ceph osd crush rule dump
[
    {
        "rule_id": 0,
        "rule_name": "replicated_rule",
        "ruleset": 0,
        "type": 1,
        "min_size": 1,
        "max_size": 10,
        "steps": [
            {
                "op": "take",
                "item": -1,
                "item_name": "default"
            },
            {
                "op": "chooseleaf_firstn",
                "num": 0,
                "type": "host"
            },
            {
                "op": "emit"
            }
        ]
    },
    {
        "rule_id": 1,
        "rule_name": "ssdpool",
        "ruleset": 1,
        "type": 1,
        "min_size": 1,
        "max_size": 10,
        "steps": [
            {
                "op": "take",
                "item": -2,
                "item_name": "default~ssd"
            },
            {
                "op": "chooseleaf_firstn",
                "num": 0,
                "type": "host"
            },
            {
                "op": "emit"
            }
        ]
    },
    {
        "rule_id": 2,
        "rule_name": "hddpool",
        "ruleset": 2,
        "type": 1,
        "min_size": 1,
        "max_size": 10,
        "steps": [
            {
                "op": "take",
                "item": -6,
                "item_name": "default~hdd"
            },
            {
                "op": "chooseleaf_firstn",
                "num": 0,
                "type": "host"
            },
            {
                "op": "emit"
            }
        ]
    }
]

Vemos las clases de discos en el sistema:

root@pve1:~# ceph osd crush class ls
[
    "ssd",
    "hdd"
]

Creamos los pools para cada tipo de disco:

root@pve1:~# ceph osd pool create ssdpool 128 128 ssdpool
pool 'ssdpool' created
root@pve1:~# ceph osd pool create hddpool 256 256 hddpool
pool 'hddpool' created

Habilitamos cephfs para cada pool:

root@pve2:~# ceph osd pool application enable ssdpool cephfs
enabled application 'cephfs' on pool 'ssdpool'
root@pve2:~# ceph osd pool application enable hddpool cephfs
enabled application 'cephfs' on pool 'hddpool'

Revisamos los pools:

root@pve1:~# ceph osd pool ls detail
pool 1 'ssdpool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 42 flags hashpspool stripe_width 0
pool 2 'hddpool' replicated size 3 min_size 2 crush_rule 2 object_hash rjenkins pg_num 256 pgp_num 256 autoscale_mode warn last_change 45 flags hashpspool stripe_width 0

Consultamos el volcado en los pools, que depende del número de OSDs:

ceph pg dump | grep "^[1-2]"

Instalamos iostat en Proxmox para las pruebas de ver cómo se comportan los discos una vez generadas las reglas para SSD y HDD:

apt-get install sysstat -y

Ahora realizaremos pruebas de escritura para comprobar que funcionan bien, abrimos dos consolas una con IOSTAT y otra con el comando para cada pool:

rados bench -p ssdpool 10 write

rados bench -p hddpool 10 write

proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-1

Y una vez validado con

<b>iostat -xtc</b>

proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-3

Ahora simplemente generamos los storage RBD para cada pool:

proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-4 proxmox-ceph-crear-pools-diferentes-con-hdd-y-ssd-5

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Proxmox: Ceph crear pools diferentes con HDD y SSD se publicó primero en Blog Virtualizacion.


Viewing all articles
Browse latest Browse all 679