En corto
| |
Por qué
La regla por defecto de Ceph (replicated_rule) reparte objetos entre todos los OSD sin mirar qué disco hay debajo. En un clúster mixto eso significa que el pool “rápido” también cae en los discos lentos y rinde como el peor de ellos.
Desde Luminous cada OSD lleva una device class. Ceph la detecta sola al arrancar (hdd, ssd o nvme) y una CRUSH rule puede limitarse a una clase: internamente crea una jerarquía sombra (default~sas) con solo esos OSD y coloca ahí todo el pool. La clase es una etiqueta libre: además de las automáticas puedes usar sas, sata, archive o lo que te sirva para separar.
Ver el estado
| |
Cambiar la clase de un OSD
Si el OSD ya tiene clase, set-device-class no la sobrescribe:
| |
De ahí el rm-device-class previo. Varios OSD de una vez:
| |
No existe un paso de “crear la clase”: el ceph osd crush class create de las primeras versiones de Luminous se eliminó, y la clase aparece con el primer OSD que la recibe. Para renombrarla en todo el clúster, ceph osd crush class rename sas sas-10k.
Una clase asignada a mano sobrevive a los reinicios del OSD: al arrancar, el OSD intenta poner su clase automática y recibe el mismo EBUSY. Si prefieres que los OSD nuevos nazcan sin clase para asignarla tú, ceph config set osd osd_class_update_on_start false; a cambio, ningún OSD nuevo tendrá clase automática.
La regla
| |
rootesdefaultsalvo que hayas montado tu propio árbol CRUSH.hostcomo dominio de fallo pone cada réplica en un nodo distinto. Consize 3necesitas al menos tres nodos con OSD de esa clase, o los PG se quedanundersized.- Para pools erasure-coded la clase va en el perfil:
pveceph pool create ec-sas --erasure-coding k=4,m=2,device-class=sas.
El pool
Nuevo, con storage de Proxmox incluido:
| |
Existente: pveceph pool set vm-fast --crush_rule replicated_sas, o en la GUI Ceph → Pools → Edit → Crush Rule. Es lo mismo que ceph osd pool set vm-fast crush_rule replicated_sas. El cambio dispara un backfill de todo el pool hacia los OSD de la clase; hazlo en ventana de mantenimiento y síguelo con ceph -s.
Trampas
- Cuenta los OSD antes de la regla. Tres nodos,
size 3, y solo dos con discossas: el pool nunca llega aactive+clean. - Las clases automáticas se equivocan con controladoras RAID/HBA que presentan SSD como rotacionales. Revisa
ceph osd treedespués de añadir discos y corrige conrm-device-class+set-device-class. - Mover un pool grande de regla es mover todos sus datos. Sube
osd_max_backfillssolo si sabes lo que haces; por defecto va lento a propósito. - Borrar un pool que se resiste:
pveceph pool destroy <pool> --force --remove_storages(los datos se van con él).
Ver también
- Ceph en Proxmox: crashes y discos huérfanos
- Repositorios sin suscripción — incluye el repo de Ceph
- Documentación de Ceph: CRUSH Maps — Device classes