¿Qué hace exactamente btrfs scrub? Según la página del manual, que no está del todo clara, realiza algunas comprobaciones de errores. ¿Qué tipo de comprobación de errores? ¿Qué tan confiable es? ¿Es capaz de recuperar algunos errores? ¿Como funciona? ¿Funciona en todos los discos btrfs?
19
Respuestas:
No sé si hace algo más, pero sé que, como mínimo,
btrfs scrub
realiza la depuración de datos de disco completo. Básicamente, lee todos los datos * en el disco, vuelve a calcular su suma de comprobación y compara la suma de comprobación recalculada con la almacenada. Cuando las sumas de verificación almacenadas y recalculadas no coinciden, el sistema sabe que hay corrupción.Una vez que se detecta corrupción, el comportamiento depende de la configuración de su disco. Por ejemplo, si tiene RAID 1 (duplicación),
btrfs scrub
puede corregir los datos corruptos copiando una versión no corrupta de otro disco. Si todas las copias de algunos datos están dañadas (por ejemplo, daños en varios discos o no tener copias redundantes en primer lugar), entonces no hay muchobtrfs scrub
que hacer además de advertirle.La razón por la que esto es importante es que los discos duros son solo aproximadamente 99.999999999999% confiables en la lectura y escritura de bits. Entonces, cada pocos terabytes de E / S de datos, es probable que haya un error. Aunque los errores se pueden detectar y se detectan (y se corrigen, suponiendo que una copia redundante siga siendo válida) durante el acceso normal al disco, la depuración de disco completo de rutina puede encontrar y corregir errores antes de que se acumule lo suficiente como para que todas las copias de los mismos datos estén dañados.
* Estoy usando "datos" en lugar de "archivo" para incluir metadatos también. Btrfs almacena archivos y metadatos correspondientes (incluidas las sumas de verificación) en bloques de datos, todos los cuales son sumados y verificados
btrfs scrub
.Ver también:
fuente
100-1/10^14
tiene 16 nueves y la publicación tiene solo 14 (correspondientes a 10 ^ 12).1-10^n
, que luego se convierte en porcentaje porque a los humanos no les gustan los decimales iniciales. Además, no mencioné en mi comentario anterior que las unidades están en RAID 1 (por lo tanto, los mismos datos de 270-300 GiB están en cada una de ellas), lo que corrige otro error de cálculo aparente.Ampliando la excelente respuesta de Mark Haferkamp,
btrfs scrub
leer todos los datos en lugar de todos los archivos es una propiedad crítica y en realidad es lo que lo hace tan útil. Recuerde, btrfs tiene soporte RAID incorporado. Supongamos que tiene un sistema de archivos btrfs que abarca dos unidades que ha configurado para usar RAID1. En este caso, cuando escribe en un archivo, esa escritura se replica en ambos discos. (Se vuelve más complicado con un ejemplo más complejo, pero para este caso simple, esto es siempre lo que sucede). Sin embargo, cuando lee de ese archivo, la lectura golpeará solo un disco (porque es un desperdicio leer el archivo dos veces a menos que la primera copia sea inutilizable por alguna razón).Ahora supongamos que su segundo disco btrfs se está degradando y está comenzando a dañar los datos en su sistema de archivos. Cuando lea bloques de este disco, btrfs notará que la suma de comprobación no coincide y restaurará el bloque en banda desde una copia válida conocida: la copia en la primera unidad. Devolverá los datos a la aplicación que llama
read()
(o lo que sea) como si nada hubiera pasado.Pero, ¿qué pasa si btrfs no decide leer desde el segundo disco? Recuerde, hay dos copias, por lo que puede leer desde el primer o el segundo disco. Si se lee desde el primer disco, no notará nada malo. La única vez que notará que algo anda mal es cuando el primer disco también se degrada. Ahora está realmente manguera, ya que es demasiado tarde para recuperar los datos: la copia del segundo disco se ha dañado por un tiempo y la primera copia (que es lo que habría utilizado para restaurar el segundo disco) ahora también está corrupta.
Aquí es donde
btrfs scrub
entra. Lee todos los datos , no todos los archivos. Esto incluye metadatos, pero también copias secundarias de archivos que normalmente no estarían en la ruta de lectura. Cuando lee estas copias secundarias, eso crea una oportunidad para que la corrección de errores en banda de btrfs se active y restaure los datos de una copia redundante.fuente