En corto
| |
-b 4096 sube el techo de 4 TiB a 16 TiB. Para discos de más de 16 TiB, -b 8192.
El error
| |
Sale antes de leer un solo sector. El número es la cantidad de bloques del disco con el tamaño de bloque por defecto (1 KiB): 7 814 026 584 bloques son 8 TB.
Por qué pasa
badblocks numera los bloques con un entero de 32 bits: como mucho 4 294 967 295. Con el bloque por defecto de 1 KiB eso son 4 TiB (unos 4.4 TB comerciales); cualquier disco mayor desborda el contador. Subir el tamaño de bloque multiplica el techo:
-b | Techo |
|---|---|
| 1024 (por defecto) | 4 TiB |
| 4096 | 16 TiB |
| 8192 | 32 TiB |
| 16384 | 64 TiB |
4096 es además el tamaño natural: coincide con el sector físico de los discos actuales (blockdev --getpbsz /dev/sdX lo confirma) y con el bloque por defecto de ext4, que es lo que importa si vas a pasarle la lista a e2fsck.
Qué modo usar
| Modo | Qué hace | Cuándo |
|---|---|---|
-sv (por defecto) | Lee todo el disco una vez | Disco con datos; chequeo rápido |
-nsv | Lee, escribe un patrón, restaura el original, bloque a bloque | Disco con datos que quieres probar en escritura. Desmontado; un corte de luz a medias pierde el bloque en curso |
-wsv | Cuatro pasadas de escritura (0xaa, 0x55, 0xff, 0x00) con verificación | Disco nuevo o de segunda mano antes de meterle datos (burn-in) |
Tiempo: una pasada de lectura tarda capacidad ÷ velocidad (un disco de 8 TB a 180 MB/s, unas 13 horas); -w son ocho pasadas (cuatro de escritura y cuatro de lectura), varios días en discos grandes. Lánzalo dentro de tmux o screen.
Opciones útiles:
| |
Lo que un disco moderno no te dice con badblocks
Los discos remapean sectores defectuosos por su cuenta: si badblocks llega a encontrar alguno, es que el disco ya agotó o está agotando la reserva. Antes y después de cualquier pasada, mira SMART:
| |
Para decidir si un disco de segunda mano entra al pool, smartctl -t long más los atributos 5, 197 y 198 dicen más que badblocks en una fracción del tiempo. badblocks -w sigue teniendo sentido como burn-in de un disco nuevo, porque fuerza escritura en toda la superficie.
Trampas
-wsobre el dispositivo equivocado borra el disco equivocado.lsblk -o NAME,SIZE,MODEL,SERIALantes de escribir la orden, y nunca sobre uno montado.- Puentes USB-SATA que se reinician a mitad de una pasada de días: si puedes, conecta el disco a SATA directo. Un reinicio del puente aborta el test y no deja resultado parcial.
mkfs.ext4 -cejecutabadblockspor ti con el bloque del sistema de archivos (4 KiB), así que no desborda; pero es unmkfs, destructivo por definición.- Controladoras HPE Smart Array: los discos detrás de la controladora se consultan por SMART con
smartctl -d cciss,N /dev/sda;badblocksve el volumen lógico, no cada disco. - En ZFS no uses
badblockssobre un miembro del pool:zpool scrubhace la comprobación con checksums reales de los datos.
Referencias: badblocks en la ArchWiki y man 8 badblocks.