memory(MEM-20260819-6EA868): Reparar PG dañado (HEALTH_ERR) en el clúster Ceph de mcps-hpc-01

This commit is contained in:
2026-08-19 12:56:05 -06:00
parent 08b126c054
commit 5dbf21c932
2 changed files with 116 additions and 3 deletions
@@ -0,0 +1,60 @@
+++
title = "Reparar PG dañado (HEALTH_ERR) en el clúster Ceph de mcps-hpc-01"
description = "Diagnóstico y reparación de un PG_DAMAGED real (pg 3.ec) en el clúster cephadm de producción; 407 pgs sin deep-scrub a tiempo se documentan como trade-off, no como bug, y no se tocaron."
date = 2026-08-19T18:56:05Z
authors = ["gen"]
slug = "mem-20260819-6ea868-reparar-pg-danado-health-err-en-el-cluster-ceph-de-mcps-hpc-01"
template = "memory.html"
[taxonomies]
categories = ["memorias"]
tags = ["almacenamiento", "ceph", "salud-cluster"]
systems = ["ceph", "mcps-hpc-01"]
[extra]
id = "MEM-20260819-6EA868"
kind = "memory"
author_id = "gen"
author_fingerprint = "SHA256:JhN1Tt4jYqWoJIznDJ6QkMAiOR6HFHr3xLz9aBJqmPg"
risk = "high"
ticket = ""
review_required = true
review_policy = "all-active"
reviewer_snapshot = true
reviewers = ["gen"]
started_at = ""
finished_at = ""
duration_minutes = 0
agent = "claude-code"
+++
## Contexto
El clúster Ceph de mcps-hpc-01 (cephadm, fsid 9dd39ee8-b987-11f0-9c83-3497f632acb0: 5 mons, mgr activo+standby, 2 MDS, 20 OSDs, 4 pools, 1089 pgs, ~45 TiB usados de 232 TiB) respalda cephfs_hpc, del que dependen Caddy #2, Zammad y en general /mnt/cephfs. Al revisar `ceph -s` salió HEALTH_ERR por dos causas distintas: 1 scrub error/PG_DAMAGED en pg 3.ec, y 407 pgs sin deep-scrub a tiempo (warning, no error). El repair de 3.ec (`ceph pg repair 3.ec`) quedó corriendo en segundo plano al cierre de la sesión — es un deep-scrub completo del PG (~42 GiB), tarda varios minutos; falta reconfirmar con `ceph -s` / `ceph health detail` que OSD_SCRUB_ERRORS y PG_DAMAGED ya no aparecen.
## Cambios realizados
- Diagnosticado pg 3.ec con rados list-inconsistent-obj: el shard primario (osd.10) está limpio (digest correcto) y el shard de la réplica (osd.13) tiene read_error puro, sin ambigüedad entre copias
- Confirmado con smartctl que el disco de osd.13 no tenía degradación física antes de reparar (PASSED, Reallocated_Sector_Ct=0, Current_Pending_Sector=0, Offline_Uncorrectable=0)
- Ejecutado ceph pg repair 3.ec para reescribir la copia buena sobre la réplica dañada
- No se modificó osd_max_scrubs ni ninguna configuración de deep-scrub: los 407 pgs atrasados (la config ya tiene osd_scrub_load_threshold=8.0 y osd_deep_scrub_interval=15 días, ambos más permisivos que el default) son un trade-off de rendimiento vs. velocidad de scrub que compite con I/O de clientes reales de cephfs en horario laboral, no un bug — no se cambió sin consultar al equipo
## Comandos relevantes (secretos redactados)
```console
ceph -s
rados list-inconsistent-obj 3.ec
smartctl -H /dev/sda
smartctl -A /dev/sda
ceph pg repair 3.ec
ceph osd dump | grep flag
```
## Validación
- smartctl -H y -A en el disco de osd.13 confirmaron salud del disco antes de reparar (sin sectores reasignados ni pendientes)
- rados list-inconsistent-obj 3.ec confirmó que sólo existía una copia válida (osd.10), sin ambigüedad entre réplicas, antes de ejecutar el repair
## Riesgo y reversión
El pg repair no tiene una reversión directa una vez completado; si el repair fallara o el objeto siguiera inconsistent, requeriría intervención manual adicional (revisar de nuevo con rados list-inconsistent-obj y, si aplica, restaurar desde otra réplica sana).
+56 -3
View File
@@ -1,14 +1,39 @@
{ {
"version": 2, "version": 2,
"generated_at": "2026-08-19T18:56:01Z", "generated_at": "2026-08-19T18:56:05Z",
"source_sha256": "7f92489a25541119573a7546d76f5992aba1ab478dc06b9c0fb1b17272d80c2e", "source_sha256": "a47d49554218a067b4f67028cf1243ed8c3627a6685522bc638717e4578096ce",
"stats": { "stats": {
"active_admins": 1, "active_admins": 1,
"pending_reviews": 2, "pending_reviews": 3,
"open_tasks": 1, "open_tasks": 1,
"active_projects": 1 "active_projects": 1
}, },
"review_queue": [ "review_queue": [
{
"entry_id": "MEM-20260819-6EA868",
"title": "Reparar PG dañado (HEALTH_ERR) en el clúster Ceph de mcps-hpc-01",
"description": "Diagnóstico y reparación de un PG_DAMAGED real (pg 3.ec) en el clúster cephadm de producción; 407 pgs sin deep-scrub a tiempo se documentan como trade-off, no como bug, y no se tocaron.",
"date": "2026-08-19T18:56:05Z",
"author_id": "gen",
"risk": "high",
"tags": [
"almacenamiento",
"ceph",
"salud-cluster"
],
"systems": [
"ceph",
"mcps-hpc-01"
],
"permalink": "/memorias/mem-20260819-6ea868-reparar-pg-danado-health-err-en-el-cluster-ceph-de-mcps-hpc-01/",
"content_sha256": "ec3bf36fe97a386b876ecd332b26ce55dae983e7e0989a8ff154d1e82243b5d5",
"reviewed_by": [],
"missing_reviewers": [
"gen"
],
"required_count": 1,
"reviewed_count": 0
},
{ {
"entry_id": "MEM-20260819-727073", "entry_id": "MEM-20260819-727073",
"title": "Limpiar backlog de ruido en tickets 'new' de Zammad", "title": "Limpiar backlog de ruido en tickets 'new' de Zammad",
@@ -60,6 +85,34 @@
} }
], ],
"recent_memories": [ "recent_memories": [
{
"entry_id": "MEM-20260819-6EA868",
"title": "Reparar PG dañado (HEALTH_ERR) en el clúster Ceph de mcps-hpc-01",
"description": "Diagnóstico y reparación de un PG_DAMAGED real (pg 3.ec) en el clúster cephadm de producción; 407 pgs sin deep-scrub a tiempo se documentan como trade-off, no como bug, y no se tocaron.",
"date": "2026-08-19T18:56:05Z",
"author_id": "gen",
"author_fingerprint": "SHA256:JhN1Tt4jYqWoJIznDJ6QkMAiOR6HFHr3xLz9aBJqmPg",
"risk": "high",
"review_required": true,
"review_policy": "all-active",
"reviewer_snapshot": true,
"reviewers": [
"gen"
],
"tags": [
"almacenamiento",
"ceph",
"salud-cluster"
],
"systems": [
"ceph",
"mcps-hpc-01"
],
"slug": "mem-20260819-6ea868-reparar-pg-danado-health-err-en-el-cluster-ceph-de-mcps-hpc-01",
"permalink": "/memorias/mem-20260819-6ea868-reparar-pg-danado-health-err-en-el-cluster-ceph-de-mcps-hpc-01/",
"source_path": "content/memorias/2026-08-19-mem-20260819-6ea868-reparar-pg-danado-health-err-en-el-cluster-ceph-de-mcps-hpc-01.md",
"content_sha256": "ec3bf36fe97a386b876ecd332b26ce55dae983e7e0989a8ff154d1e82243b5d5"
},
{ {
"entry_id": "MEM-20260819-727073", "entry_id": "MEM-20260819-727073",
"title": "Limpiar backlog de ruido en tickets 'new' de Zammad", "title": "Limpiar backlog de ruido en tickets 'new' de Zammad",