Ceph Tentacle porta la feina de rendiment en erasure coding que feia anys que era a la llista de desitjos. Al banc de proves dels mateixos desenvolupadors, amb un perfil 6+2 i un stripe_unit de 16K, les escriptures petites «com a mínim dupliquen» el rendiment respecte de Squid. Dues coses que no diu el titular: aquell 16K és exactament el que un pool ja creat no pot tenir, i Fast EC arriba apagat. S'encén pool per pool, amb una ordre, i el monitor es nega a apagar-lo després.
Escrivim això perquè és la mena de detall que es perd entre la nota de la release i la finestra de manteniment. Proxmox VE 9.2, publicat al maig, ja porta Ceph Tentacle 20.2.1 com a versió estable per defecte —amb Squid 19.2.3 encara disponible com a opció—. Molta gent ja té Tentacle instal·lat. I continua llegint els mateixos números de rendiment que abans.
Què fa Fast EC, una frase per optimització
El pecat original de l'erasure coding és conegut: per tocar un byte calia moure la banda sencera. Les quatre optimitzacions que descriu l'equip de Ceph ataquen exactament això.
- Lectures parcials. Es llegeix el mínim necessari en comptes de la banda sencera. D'aquí surt la millora de dues a tres vegades en lectures petites de bloc i fitxer.
- Fi de l'ompliment d'objectes petits. Es deixa d'omplir els objectes petits fins a la banda sencera. Aquesta no és una millora de velocitat, és d'espai: és la part d'«amplificació» del titular.
- Escriptures parcials. Abans de recalcular les paritats es llegeixen només els trossos modificats, no tots.
- Escriptures per delta de paritat (PDW). Ceph incorpora una tècnica clàssica de controladora RAID: llegeix la dada vella, la combina amb la nova mitjançant XOR i aplica el delta a la paritat. Amb
m=2, són tres lectures i tres escriptures per tros.
Els números, amb el banc de proves al davant
Convé mirar on s'han mesurat: un sol node, vuit OSD sobre NVMe, dos Intel Xeon Platinum 8276M a 2,20 GHz amb 28 nuclis per sòcol. En càrrega mixta —70% lectures i 30% escriptures d'uns 16k, que és el patró típic d'aplicacions transaccionals i de fitxer—, «comparat amb Squid, hi ha com a mínim el doble de rendiment amb FastEC». La comparació concreta és Squid amb 4K davant Tentacle amb 16K, tots dos 6+2.
I la frase que segueix al mateix article, que gairebé ningú no cita perquè espatlla el titular: «la rèplica de tres vies continua sent més ràpida» —el pool 6+2 amb Fast EC es queda al voltant de la meitat del seu rendiment—. Fast EC no guanya aquella discussió, l'estreny. El mateix equip de Ceph ho remata amb una frase honesta que val per tot l'article: amb erasure coding «obtens la meitat del rendiment a menys de la meitat del cost». Això és un intercanvi, no una victòria.
Aquell banc de proves tampoc no és el teu clúster. Fast EC retalla feina de CPU i d'entrada/sortida dins del node; si el teu coll d'ampolla és una xarxa de 10 GbE compartida amb el trànsit de les màquines virtuals, o discos giratoris, la millora serà molt més discreta, perquè el problema mai no va ser allà. Un número de laboratori amb un sol node no és una promesa per a tres nodes en producció: serveix per saber què s'ha arreglat, no quant hi guanyaràs tu. Si això et sona a la conversa de sempre sobre erasure coding davant rèplica 3, és exactament això: mou un terme de l'operació que vam fer al seu dia, sense capgirar-ne el resultat.
Una ordre, un pool, una sola direcció
Fast EC s'activa per pool amb una bandera:
ceph osd pool set <pool> allow_ec_optimizations true
A Proxmox, un pool amb erasure coding es crea en realitat com dos: un de replicat per a les metadades i un altre per a les dades, que és el que duu el sufix -data. La documentació de Proxmox fa servir aquest sufix a l'exemple, i val la pena fixar-s'hi: el nom que veus a la interfície no és el pool sobre el qual cal llançar l'ordre.
La documentació de Ceph avisa sense adorns: «un cop la bandera s'ha activat per a un pool no es pot desactivar, perquè canvia com s'emmagatzemen les dades noves». Proxmox ho tradueix a llenguatge d'operacions i encara és més clar: és un interruptor d'una sola direcció, el monitor es nega a netejar la bandera i revertir-ho exigeix buidar i recrear el pool.
Aquí hi ha el criteri que ens importa: qualsevol cosa que es desfà «buidant i recreant el pool» no és una opció de configuració, és una migració. S'assembla més a canviar el tipus d'una columna en una base de dades amb vint terabytes a dins que a marcar una casella. I les migracions es planifiquen, es proven abans en un pool petit i es fan amb la finestra oberta.
Les quatre condicions que comprova el monitor
Proxmox les enumera com quatre requisits que el monitor de Ceph fa complir. Les quatre es comproven en dos minuts:
- Tot el clúster a Tentacle, i declarat. La bandera no es pot activar mentre no estiguin actualitzats tots els monitors i OSD, i el clúster ha d'estar a
require_osd_release tentacleo posterior. Aquest últim pas és manual i va després d'actualitzar els paquets: és el que més es queda a mitges. Es mira ambceph osd dump | grep require_osd_release. - Que el pool sigui d'erasure coding. El nom d'un pool no diu res del seu tipus;
ceph osd pool ls detailsí. - Plugin i tècnica compatibles. Les optimitzacions «només estan suportades de moment amb els plugins Jerasure i ISA-L fent servir la tècnica
reed_sol_van». Es comprova ambceph osd erasure-code-profile get <perfil>. - Que el
stripe_unitdel pool sigui múltiple de 4096 bytes. El valor per defecte ja ho compleix, així que això només afecta pools creats amb unstripe_unita mida. Tentacle rebutja explícitament les mides de tros no alineades a 4k.
N'hi ha una cinquena que Proxmox no llista i la documentació de Ceph sí: el pool ha de residir sobre OSD BlueStore, perquè les sumes de verificació de BlueStore es fan servir durant el deep scrub. En un clúster muntat els últims anys això es compleix sense pensar-hi; en un d'heretat amb FileStore, és el primer que cal mirar.
L'altra meitat de la millora la vas decidir fa anys
La documentació de Ceph fa anys que avisa d'una cosa que gairebé ningú no llegeix quan crea el seu primer pool: «triar el perfil correcte és important perquè el perfil no es pot modificar després de crear el pool». La k, la m, el plugin i la tècnica queden congelats el dia de la creació. I el stripe_unit, que s'especifica en crear el perfil, tampoc no es toca després.
Aquí és on la millora es parteix en dos. El stripe_unit per defecte continua sent 4K a Tentacle, i l'equip de Ceph recomana 16K per als pools nous que hagin de fer servir Fast EC —fins a 256K si la càrrega és majoritàriament de lectura, a canvi de malbaratar capacitat amb fitxers i objectes petits—. Sobre els pools que ja existeixen, la frase és literal: «no és possible canviar el stripe_unit; Fast EC es pot activar igualment en aquests pools, però la millora de rendiment serà una mica menor». Convé lligar-ho amb el titular: aquell «com a mínim el doble» es va mesurar contra un pool de 16K; sobre el 4K que tens, la mateixa font promet «una mica menys». Qui al seu dia va triar una tècnica del plugin jerasure diferent de reed_sol_van —cauchy_good, liberation i companyia— no s'endú res: per a aquell pool no hi ha interruptor, hi ha pool nou i moure les dades.
ISA-L pren el relleu de jerasure
El canvi silenciós d'aquesta versió és que ISA-L passa a ser el plugin per defecte dels pools amb erasure coding. El perfil per defecte de Tentacle surt ja amb plugin=isa, k=2, m=2 i technique=reed_sol_van; a Squid, aquella mateixa pàgina mostrava plugin=jerasure. El motiu l'explica la documentació sense diplomàcia: la biblioteca jerasure «ja no es manté i no s'ha actualitzat per suportar instruccions modernes de CPU» que acceleren la codificació i la descodificació.
Hi ha a més un avís amb data, encara no a la documentació de Tentacle sinó a la branca de desenvolupament (la vam consultar el 7 d'agost de 2026): les tècniques diferents de reed_sol_van queden marcades com a obsoletes i el suport es retirarà a la release Vampire. Si tens un pool amb una d'aquestes tècniques, ja tens una feina apuntada a la llista, i aquella feina consisteix a moure dades: com més tard, més dades hi haurà per moure.
Què li passa al clúster quan l'encens
La bandera es pot activar en pools que ja existeixen —això és una bona notícia— i també es pot deixar posada per defecte per als pools nous amb l'opció de configuració central osd_pool_default_flag_ec_optimizations. El que no és de franc és el moment d'encendre-la.
La documentació de Proxmox descriu l'efecte secundari amb una precisió que s'agraeix: Fast EC marca els shards de dades de l'1 a k-1 com a no primaris, així que els grups de col·locació que tinguessin el primari en un d'aquells shards tornen a fer peering; i aquest re-peering cancel·la qualsevol scrub en vol, de manera que aquells PG s'hauran de tornar a revisar després.
Traduït al que significa un dimarts qualsevol: hi ha una estona de moviment al clúster, la finestra de scrubs es descol·loca i durant aquella estona la teva tolerància al fet que caigui un node és més fina de l'habitual. És una finestra de manteniment, no una casella. Es fa d'un pool en un pool, amb la monitorització al davant, i es deixa que el clúster torni a HEALTH_OK abans del següent.
Tres casos en què esperaríem
- Si el teu pool EC és d'objectes grans. El mateix equip de Ceph acota l'abast: Fast EC està pensat sobretot per a càrregues de bloc i fitxer, i en objecte (S3) pot ajudar amb objectes petits o lectures d'accés aleatori. Un repositori de vídeo o de còpies que escriu seqüencialment objectes de centenars de megabytes no és el cas d'ús.
- Si encara ets a Squid. Aleshores això no és la teva feina següent: la següent és l'actualització, i convé mirar-la amb calendari. Squid figura a la taula de releases de Ceph, consultada avui, amb fi de vida estimat el 31 d'octubre de 2026; vam escriure al seu dia sobre la data que constava aleshores, i que s'hagi mogut és exactament el motiu pel qual aquestes dates es diuen «estimades» i no es planifiquen per a l'últim dia. Si a més el teu hipervisor continua a Proxmox VE 8, allà hi ha un altre rellotge corrent per davant d'aquest.
- Si ningú no mesurarà abans i després. Encendre un interruptor irreversible sense una línia base és fe, no enginyeria. Mitja hora de
fioamb el patró real de la teva càrrega —no amb el que surt bonic— val més que qualsevol gràfica d'una nota de release, incloses les que hem citat aquí.
Decisions d'arquitectura sense acta
Operem Proxmox VE amb Ceph en producció des de fa anys, i la lliçó que més vegades es repeteix no té a veure amb el maquinari. És aquesta: en un sistema d'emmagatzematge, els valors per defecte són decisions d'arquitectura de les quals no queda acta. Ningú no va signar que el stripe_unit fos 4K. Ningú no va discutir en una reunió si el perfil havia de ser 2+2. Va sortir així de l'assistent, va funcionar, i allà continua anys després decidint el rendiment de les màquines d'algú.
Fast EC és la primera vegada en molt de temps que aquells valors passen factura de manera mesurable. Així que, abans de planificar l'actualització, treu el perfil de cada pool amb ceph osd erasure-code-profile get i apunta en quin dels tres grups cau: el que pot encendre l'interruptor i guanyar el que promet la font, el que pot encendre'l i guanyar «una mica menys» perquè arrossega 4K, i el que no el pot encendre de cap manera. Els tres són respostes vàlides. El que no és vàlid és no saber-ho i planificar la finestra igualment.
Si vols que ho mirem amb tu —el perfil de cada pool, si l'interruptor es pot encendre, què hi guanyaries de debò amb la teva càrrega i en quin ordre—, això és part del que fem a emmagatzematge distribuït amb Ceph i al suport i l'operació del dia a dia.
Fonts (verificades el 7 d'agost de 2026): les quatre optimitzacions de Fast EC (lectures parcials, fi de l'ompliment d'objectes petits, escriptures parcials i escriptures per delta de paritat, amb tres lectures i tres escriptures per tros amb m=2), les xifres («com a mínim el doble» de rendiment en escriptures petites, dues a tres vegades en lectures petites, «com a mínim el doble» en càrrega mixta 70/30 a 16k comparant Squid a 4K amb Tentacle a 16K), el banc de proves (un node, 8 OSD NVMe, 2 × Intel Xeon Platinum 8276M a 2,20 GHz, 28 nuclis per sòcol), les frases sobre el stripe_unit (4K per defecte, 16K recomanat per a pools nous, impossible de canviar en pools existents) i les dues frases que matisen el titular —«la rèplica de tres vies continua sent més ràpida» i «amb erasure coding obtens la meitat del rendiment a menys de la meitat del cost»— provenen de l'article Fast Erasure Coding for Tentacle del blog oficial de Ceph. Les condicions d'activació, la irreversibilitat de la bandera («un cop activada per a un pool no es pot desactivar perquè canvia com s'emmagatzemen les dades noves»), el requisit de tenir tots els monitors i OSD a Tentacle, la restricció als plugins Jerasure i ISA-L amb la tècnica reed_sol_van, el requisit d'OSD BlueStore, la recomanació de 16K a 256K amb la seva contrapartida i l'opció osd_pool_default_flag_ec_optimizations són a la documentació d'erasure code de Ceph Tentacle, d'on també surt la frase sobre la immutabilitat del perfil i el perfil per defecte (k=2, m=2, plugin=isa, technique=reed_sol_van); que a Squid aquella mateixa pàgina mostrava plugin=jerasure es comprova a la seva versió per a Squid. Que ISA-L és el plugin per defecte és a la pàgina del plugin ISA; que jerasure «ja no es manté i no s'ha actualitzat per suportar instruccions modernes de CPU» i la llista de tècniques (reed_sol_van, reed_sol_r6_op, cauchy_orig, cauchy_good, liberation, blaum_roth, liber8tion), a la pàgina del plugin jerasure. La nota d'obsolescència de les tècniques diferents de reed_sol_van i la seva retirada a la release Vampire apareix a la versió de desenvolupament d'aquella mateixa pàgina (docs.ceph.com/en/latest), encara no a la de Tentacle, i així ho hem escrit. Els requisits operatius a Proxmox (els quatre que el monitor fa complir, require_osd_release tentacle, el sufix -data del pool, el stripe_unit múltiple de 4096 que el valor per defecte ja compleix, l'interruptor d'una sola direcció i el re-peering que cancel·la els scrubs) són al wiki de Proxmox, procedents del pedaç de documentació enviat a la llista pve-devel el 16 d'abril de 2026. Que Proxmox VE 9.2 porta Ceph Tentacle 20.2.1 per defecte amb Squid 19.2.3 com a opció, de l'anunci de la versió. Les dates de les releases (Tentacle 20.2.0 el 18 de novembre de 2025, 20.2.1 el 6 d'abril de 2026, 20.2.2 el 16 de juny de 2026 i 20.2.3 el 5 d'agost de 2026; fi de vida estimat de Squid el 31 d'octubre de 2026) provenen de la taula de releases de Ceph. No hem mesurat Fast EC al nostre propi clúster: tots els números d'aquest article són de tercers i així es citen. Fotografia de la imatge social: part posterior d'un rack al centre de dades del NERSC, Wikimedia Commons, domini públic (CC0).
Treu el perfil dels teus pools abans de planificar la finestra
Ho revisem amb tu: perfil de cada pool, si l'interruptor es pot encendre, què hi guanyaries de debò i en quin ordre.
Parlar amb everyWAN