mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 10:51:54 -04:00
1830 lines
76 KiB
Makefile
1830 lines
76 KiB
Makefile
Name{number}
|
|
snapraid - SnapRAID Backup para Arrays de Discos
|
|
|
|
Sinopsis (Synopsis)
|
|
:snapraid [-c, --conf CONFIG]
|
|
: [-f, --filter PATTERN] [-d, --filter-disk NAME]
|
|
: [-m, --filter-missing] [-e, --filter-error]
|
|
: [-a, --audit-only] [-h, --pre-hash] [-i, --import DIR]
|
|
: [-p, --plan PERC|bad|new|full]
|
|
: [-o, --older-than DAYS] [-l, --log FILE]
|
|
: [-s, --spin-down-on-error] [-w, --bw-limit RATE]
|
|
: [-t, --tail]
|
|
: [-Z, --force-zero] [-E, --force-empty]
|
|
: [-U, --force-uuid] [-D, --force-device]
|
|
: [-N, --force-nocopy] [-F, --force-full]
|
|
: [-R, --force-realloc] [-W, --force-realloc-tail]
|
|
: [-S, --start BLKSTART] [-B, --count BLKCOUNT]
|
|
: [-L, --error-limit NUMBER]
|
|
: [-A, --stats]
|
|
: [-v, --verbose] [-q, --quiet]
|
|
: status|smart|probe|up|down|diff|sync|scrub|fix|check
|
|
: |list|dup|pool|devices|touch|rehash|locate
|
|
|
|
:snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]
|
|
|
|
Descripción (Description)
|
|
SnapRAID es un programa de copia de seguridad diseñado para arrays
|
|
de discos, que almacena información de paridad para la recuperación
|
|
de datos en caso de hasta seis fallos de disco.
|
|
|
|
Destinado principalmente a centros de medios domésticos con archivos
|
|
grandes y que cambian con poca frecuencia, SnapRAID ofrece varias
|
|
características:
|
|
|
|
* Puede utilizar discos ya llenos de archivos sin la necesidad de
|
|
reformatearlos, accediendo a ellos como de costumbre.
|
|
* Todos sus datos son procesados con hash para asegurar la integridad de los datos
|
|
y prevenir la corrupción silenciosa.
|
|
* Cuando el número de discos fallidos excede el recuento de paridad,
|
|
la pérdida de datos se limita a los discos afectados; los datos en
|
|
otros discos siguen siendo accesibles.
|
|
* Si elimina archivos accidentalmente en un disco, la recuperación es
|
|
posible.
|
|
* Los discos pueden tener diferentes tamaños.
|
|
* Puede agregar discos en cualquier momento.
|
|
* SnapRAID no bloquea sus datos; puede dejar de usarlo
|
|
en cualquier momento sin reformatear ni mover datos.
|
|
* Para acceder a un archivo, solo un único disco necesita girar,
|
|
ahorrando energía y reduciendo el ruido.
|
|
|
|
Para más información, visite el sitio oficial de SnapRAID:
|
|
|
|
:https://www.snapraid.it/
|
|
|
|
Limitaciones (Limitations)
|
|
SnapRAID es un híbrido entre un RAID y un programa de copia de seguridad, con el objetivo de combinar
|
|
los mejores beneficios de ambos. Sin embargo, tiene algunas limitaciones que debería
|
|
considerar antes de usarlo.
|
|
|
|
La principal limitación es que si un disco falla, solo puede recuperar datos hasta el
|
|
estado de la última operación de sincronización (`sync`). Cualquier dato añadido o modificación realizada
|
|
desde la última sincronización que se encuentre en el disco dañado se perderá.
|
|
|
|
Por lo tanto, SnapRAID es adecuado principalmente para datos que cambian raramente.
|
|
|
|
Para los datos que ya existían en la última sincronización, la fiabilidad de la recuperación depende
|
|
de si se utiliza la opción de instantánea (`snapshot`):
|
|
|
|
* Con soporte para instantáneas (disponible en Btrfs, ZFS, Bcachefs y NTFS),
|
|
SnapRAID puede mantener automáticamente una referencia congelada de sus discos de datos.
|
|
Esto garantiza que incluso si modifica o elimina archivos en su sistema de archivos activo
|
|
durante o después de un sync, el proceso de recuperación se mantenga consistente y confiable.
|
|
|
|
* Sin soporte para instantáneas, eliminar o cambiar archivos después de un `sync`
|
|
puede impedir la recuperación completa de otros discos fallidos. Esto ocurre
|
|
porque la paridad ya no coincide con los archivos modificados, incluso si
|
|
esos archivos no están en el disco fallido. Por otro lado, los archivos recién añadidos
|
|
no impiden la recuperación de los archivos ya existentes.
|
|
|
|
Otras limitaciones de SnapRAID son:
|
|
|
|
* Con SnapRAID, aún tiene sistemas de archivos separados para cada disco.
|
|
Con RAID, obtiene un único sistema de archivos grande.
|
|
* SnapRAID no distribuye (stripe) los datos.
|
|
Con RAID, obtiene un aumento de velocidad con la distribución.
|
|
* SnapRAID no admite la recuperación en tiempo real.
|
|
Con RAID, no tiene que dejar de trabajar cuando falla un disco.
|
|
* SnapRAID puede recuperar datos solo de un número limitado de fallos de disco.
|
|
Con una copia de seguridad, puede recuperarse de un fallo completo
|
|
de todo el array de discos.
|
|
* Solo se guardan nombres de archivo, marcas de tiempo, enlaces simbólicos
|
|
y enlaces físicos. Los permisos, la propiedad y los atributos
|
|
extendidos no se guardan.
|
|
|
|
Primeros pasos (Getting Started)
|
|
Para usar SnapRAID, primero debe seleccionar un disco en su array de
|
|
discos para dedicarlo a la información de `parity` (paridad). Con un
|
|
disco para paridad, podrá recuperarse de un solo fallo de disco,
|
|
similar a RAID5.
|
|
|
|
Si desea recuperarse de más fallos de disco, similar a RAID6,
|
|
debe reservar discos adicionales para la paridad. Cada disco de
|
|
paridad adicional permite la recuperación de un fallo de disco más.
|
|
|
|
Como discos de paridad, debe elegir los discos más grandes del array,
|
|
ya que la información de paridad puede crecer hasta el tamaño del
|
|
disco de datos más grande del array.
|
|
|
|
Estos discos estarán dedicados a almacenar los archivos de `parity`.
|
|
No debe almacenar sus datos en ellos.
|
|
|
|
Luego, debe definir los discos de `data` (datos) que desea proteger
|
|
con SnapRAID. La protección es más efectiva si estos discos
|
|
contienen datos que rara vez cambian. Por esta razón, es mejor
|
|
NO incluir el disco C:\ de Windows o los directorios /home, /var y
|
|
/tmp de Unix.
|
|
|
|
La lista de archivos se guarda en los archivos de `content` (contenido),
|
|
generalmente almacenados en los discos de datos, paridad o de arranque.
|
|
Este archivo contiene los detalles de su copia de seguridad,
|
|
incluyendo todas las sumas de comprobación para verificar su integridad.
|
|
El archivo de `content` se almacena en múltiples copias, y cada copia
|
|
debe estar en un disco diferente para asegurar que, incluso en caso
|
|
de múltiples fallos de disco, al menos una copia esté disponible.
|
|
|
|
Por ejemplo, suponga que solo está interesado en un nivel de paridad
|
|
de protección, y sus discos están ubicados en:
|
|
|
|
:/mnt/diskp <- disco seleccionado para paridad
|
|
:/mnt/disk1 <- primer disco a proteger
|
|
:/mnt/disk2 <- segundo disco a proteger
|
|
:/mnt/disk3 <- tercer disco a proteger
|
|
|
|
Debe crear el archivo de configuración /etc/snapraid.conf con
|
|
las siguientes opciones:
|
|
|
|
:parity /mnt/diskp/snapraid.parity
|
|
:content /var/snapraid/snapraid.content
|
|
:content /mnt/disk1/snapraid.content
|
|
:content /mnt/disk2/snapraid.content
|
|
:data d1 /mnt/disk1/
|
|
:data d2 /mnt/disk2/
|
|
:data d3 /mnt/disk3/
|
|
|
|
Si está en Windows, debe usar el formato de ruta de Windows, con
|
|
letras de unidad y barras invertidas en lugar de barras.
|
|
|
|
:parity E:\snapraid.parity
|
|
:content C:\snapraid\snapraid.content
|
|
:content F:\array\snapraid.content
|
|
:content G:\array\snapraid.content
|
|
:data d1 F:\array\
|
|
:data d2 G:\array\
|
|
:data d3 H:\array\
|
|
|
|
Si tiene muchos discos y se queda sin letras de unidad, puede montar
|
|
discos directamente en subcarpetas. Consulte:
|
|
|
|
:https://www.google.com/search?q=Windows+mount+point
|
|
|
|
En este punto, está listo para ejecutar el comando `sync` (sincronizar)
|
|
para construir la información de paridad.
|
|
|
|
:snapraid sync
|
|
|
|
Este proceso puede llevar varias horas la primera vez, dependiendo
|
|
del tamaño de los datos ya presentes en los discos. Si los discos
|
|
están vacíos, el proceso es inmediato.
|
|
|
|
Puede detenerlo en cualquier momento presionando Ctrl+C, y en la
|
|
siguiente ejecución, se reanudará donde se interrumpió.
|
|
|
|
Cuando este comando se complete, sus datos estarán SEGUROS.
|
|
|
|
Ahora puede comenzar a usar su array como desee y periódicamente
|
|
actualizar la información de paridad ejecutando el comando `sync`.
|
|
|
|
Limpieza (Scrubbing)
|
|
Para verificar periódicamente los datos y la paridad en busca de
|
|
errores, puede ejecutar el comando `scrub` (depurar/limpiar).
|
|
|
|
:snapraid scrub
|
|
|
|
Este comando compara los datos de su array con el hash calculado
|
|
durante el comando `sync` para verificar la integridad.
|
|
|
|
Cada ejecución del comando verifica aproximadamente el 8% del array,
|
|
excluyendo los datos ya depurados en los 10 días anteriores.
|
|
Puede usar la opción -p, --plan para especificar una cantidad
|
|
diferente y la opción -o, --older-than para especificar una edad
|
|
diferente en días. Por ejemplo, para verificar el 5% del array en
|
|
busca de bloques con más de 20 días, use:
|
|
|
|
:snapraid -p 5 -o 20 scrub
|
|
|
|
Si se encuentran errores silenciosos o de entrada/salida durante el
|
|
proceso, los bloques correspondientes se marcan como defectuosos en
|
|
el archivo de `content` y se listan en el comando `status`.
|
|
|
|
:snapraid status
|
|
|
|
Para corregirlos, puede usar el comando `fix` (arreglar), filtrando
|
|
por bloques defectuosos con la opción -e, --filter-error:
|
|
|
|
:snapraid -e fix
|
|
|
|
En la siguiente depuración (`scrub`), los errores desaparecerán del informe de
|
|
`status` si realmente se han corregido. Para hacerlo más rápido,
|
|
puede usar -p bad para depurar solo los bloques marcados como defectuosos.
|
|
|
|
:snapraid -p bad scrub
|
|
|
|
Ejecutar `scrub` en un array no sincronizado puede reportar errores
|
|
causados por archivos eliminados o modificados. Estos errores se
|
|
informan en la salida de `scrub`, pero los bloques relacionados no
|
|
se marcan como defectuosos.
|
|
|
|
Agrupación (Pooling)
|
|
Nota: La función de pooling descrita a continuación ha sido
|
|
sustituida por la herramienta mergerfs, que ahora es la opción
|
|
recomendada para los usuarios de Linux en la comunidad SnapRAID.
|
|
Mergerfs proporciona una forma más flexible y eficiente de agrupar
|
|
múltiples unidades en un único punto de montaje unificado,
|
|
permitiendo un acceso sin problemas a los archivos en todo su array
|
|
sin depender de enlaces simbólicos. Se integra bien con SnapRAID
|
|
para la protección de paridad y se usa comúnmente en configuraciones
|
|
como OpenMediaVault (OMV) o configuraciones NAS personalizadas.
|
|
|
|
Para que todos los archivos de su array se muestren en el mismo árbol
|
|
de directorios, puede habilitar la función de `pooling` (agrupación).
|
|
Crea una vista virtual de solo lectura de todos los archivos de su
|
|
array utilizando enlaces simbólicos.
|
|
|
|
Puede configurar el directorio de `pooling` en el archivo de
|
|
configuración con:
|
|
|
|
:pool /pool
|
|
|
|
o, si está en Windows, con:
|
|
|
|
:pool C:\pool
|
|
|
|
y luego ejecute el comando `pool` para crear o actualizar la vista virtual.
|
|
|
|
:snapraid pool
|
|
|
|
Si está utilizando una plataforma Unix y desea compartir este
|
|
directorio a través de la red con máquinas Windows o Unix, debe
|
|
agregar las siguientes opciones a su /etc/samba/smb.conf:
|
|
|
|
:# En la sección global de smb.conf
|
|
:unix extensions = no
|
|
|
|
:# En la sección de compartir de smb.conf
|
|
:[pool]
|
|
:comment = Pool
|
|
:path = /pool
|
|
:read only = yes
|
|
:guest ok = yes
|
|
:wide links = yes
|
|
:follow symlinks = yes
|
|
|
|
En Windows, compartir enlaces simbólicos a través de una red requiere
|
|
que los clientes los resuelvan de forma remota. Para habilitar esto,
|
|
además de compartir el directorio pool, también debe compartir todos
|
|
los discos de forma independiente, utilizando los nombres de disco
|
|
definidos en el archivo de configuración como puntos de recurso
|
|
compartido. También debe especificar en la opción `share` del archivo
|
|
de configuración la ruta UNC de Windows que los clientes remotos
|
|
necesitan usar para acceder a estos discos compartidos.
|
|
|
|
Por ejemplo, operando desde un servidor llamado `darkstar`, puede usar
|
|
las opciones:
|
|
|
|
:data d1 F:\array\
|
|
:data d2 G:\array\
|
|
:data d3 H:\array\
|
|
:pool C:\pool
|
|
:share \\darkstar
|
|
|
|
y compartir los siguientes directorios a través de la red:
|
|
|
|
:\\darkstar\pool -> C:\pool
|
|
:\\darkstar\d1 -> F:\array
|
|
:\\darkstar\d2 -> G:\array
|
|
:\\darkstar\d3 -> H:\array
|
|
|
|
para permitir que los clientes remotos accedan a todos los archivos
|
|
en \\darkstar\pool.
|
|
|
|
También puede que deba configurar los clientes remotos para habilitar
|
|
el acceso a enlaces simbólicos remotos con el comando:
|
|
|
|
:fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
|
|
|
|
Restauración (Undeleting)
|
|
SnapRAID funciona más como un programa de copia de seguridad que como
|
|
un sistema RAID, y se puede usar para restaurar o recuperar archivos
|
|
a su estado anterior usando la opción -f, --filter:
|
|
|
|
:snapraid fix -f FILE
|
|
|
|
o para un directorio:
|
|
|
|
:snapraid fix -f DIR/
|
|
|
|
También puede usarlo para recuperar solo archivos eliminados
|
|
accidentalmente dentro de un directorio usando la opción -m,
|
|
--filter-missing, que restaura solo archivos faltantes, dejando
|
|
todos los demás intactos.
|
|
|
|
:snapraid fix -m -f DIR/
|
|
|
|
O para recuperar todos los archivos eliminados en todas las unidades con:
|
|
|
|
:snapraid fix -m
|
|
|
|
Recuperación (Recovering)
|
|
Ha sucedido lo peor, ¡y ha perdido uno o más discos!
|
|
|
|
¡NO ENTRE EN PÁNICO! ¡Podrá recuperarlos!
|
|
|
|
Lo primero que debe hacer es evitar más cambios en su array de discos.
|
|
Deshabilite cualquier conexión remota a él y cualquier proceso
|
|
programado, incluida cualquier sincronización o depuración nocturna
|
|
programada de SnapRAID.
|
|
|
|
Luego, proceda con los siguientes pasos.
|
|
|
|
STEP 1 -> Reconfigure
|
|
Necesita algo de espacio para recuperarse, idealmente en discos de
|
|
repuesto adicionales, pero un disco USB externo o un disco remoto
|
|
serán suficientes.
|
|
|
|
Modifique el archivo de configuración de SnapRAID para hacer que la
|
|
opción `data` o `parity` del disco fallido apunte a una ubicación
|
|
con suficiente espacio vacío para recuperar los archivos.
|
|
|
|
Por ejemplo, si el disco `d1` ha fallado, cambie de:
|
|
|
|
:data d1 /mnt/disk1/
|
|
|
|
a:
|
|
|
|
:data d1 /mnt/new_spare_disk/
|
|
|
|
Si el disco a recuperar es un disco de paridad, actualice la opción
|
|
`parity` apropiada.
|
|
Si tiene varios discos fallidos, actualice todas sus opciones de
|
|
configuración.
|
|
|
|
STEP 2 -> Fix
|
|
Ejecute el comando fix, almacenando el registro en un archivo externo con:
|
|
|
|
:snapraid -d NAME -l fix.log fix
|
|
|
|
Donde NAME es el nombre del disco, como `d1` en nuestro ejemplo anterior.
|
|
Si el disco a recuperar es un disco de paridad, use los nombres `parity`,
|
|
`2-parity`, etc.
|
|
Si tiene varios discos fallidos, use varias opciones -d para
|
|
especificarlos todos.
|
|
|
|
Este comando tardará mucho tiempo.
|
|
|
|
Asegúrese de tener unos pocos gigabytes libres para almacenar el archivo
|
|
fix.log. Ejecútelo desde un disco con suficiente espacio libre.
|
|
|
|
Ahora ha recuperado todo lo que es recuperable. Si algunos archivos son
|
|
parcial o totalmente irrecuperables, se les cambiará el nombre agregando
|
|
la extensión `.unrecoverable`.
|
|
|
|
Puede encontrar una lista detallada de todos los bloques irrecuperables
|
|
en el archivo fix.log buscando todas las líneas que comienzan con `unrecoverable:`.
|
|
|
|
Si no está satisfecho con la recuperación, puede volver a intentarlo
|
|
tantas veces como desee.
|
|
|
|
Por ejemplo, si ha eliminado archivos del array después de la última
|
|
`sync`, esto puede resultar en que algunos archivos no se recuperen.
|
|
En este caso, puede volver a intentar el `fix` usando la opción -i,
|
|
--import, especificando dónde están esos archivos ahora para incluirlos
|
|
nuevamente en el proceso de recuperación.
|
|
|
|
Si está satisfecho con la recuperación, puede continuar,
|
|
¡pero tenga en cuenta que después de sincronizar, no puede volver
|
|
a intentar el comando `fix`!
|
|
|
|
STEP 3 -> Check
|
|
Como verificación cautelosa, ahora puede ejecutar un comando `check`
|
|
(comprobar) para asegurarse de que todo esté correcto en el disco
|
|
recuperado.
|
|
|
|
:snapraid -d NAME -a check
|
|
|
|
Donde NAME es el nombre del disco, como `d1` en nuestro ejemplo anterior.
|
|
|
|
Las opciones -d y -a le dicen a SnapRAID que compruebe solo el disco
|
|
especificado e ignore todos los datos de paridad.
|
|
|
|
Este comando tardará mucho tiempo, pero si no es demasiado cauteloso,
|
|
puede omitirlo.
|
|
|
|
STEP 4 -> Sync
|
|
Ejecute el comando `sync` para resincronizar el array con el nuevo disco.
|
|
|
|
:snapraid sync
|
|
|
|
Si todo se recupera, este comando es inmediato.
|
|
|
|
Comandos (Commands)
|
|
SnapRAID proporciona unos pocos comandos simples que le permiten:
|
|
|
|
* Mostrar el estado del array -> `status`
|
|
* Controlar los discos -> `smart`, `probe`, `up`, `down`
|
|
* Crear un punto de copia de seguridad/recuperación -> `sync`
|
|
* Comprobar periódicamente los datos -> `scrub`
|
|
* Restaurar el último punto de copia de seguridad/recuperación -> `fix`.
|
|
|
|
Los comandos deben escribirse en minúsculas.
|
|
|
|
status
|
|
Imprime un resumen del estado del array de discos.
|
|
|
|
Incluye información sobre la fragmentación de la paridad, la antigüedad
|
|
de los bloques sin verificar y todos los errores silenciosos
|
|
registrados encontrados durante la depuración.
|
|
|
|
La información presentada se refiere a la última vez que ejecutó
|
|
`sync`. Las modificaciones posteriores no se tienen en cuenta.
|
|
|
|
Si se detectaron bloques defectuosos, se enumeran sus números de bloque.
|
|
Para corregirlos, puede usar el comando `fix -e`.
|
|
|
|
También muestra un gráfico que representa la última vez que cada
|
|
bloque fue depurado o sincronizado. Los bloques depurados se muestran
|
|
con `*`, los bloques sincronizados pero aún no depurados con `o`.
|
|
|
|
Nada se modifica.
|
|
|
|
smart
|
|
Imprime un informe SMART de todos los discos del sistema.
|
|
|
|
Incluye una estimación de la probabilidad de fallo en el próximo
|
|
año, lo que le permite planificar reemplazos de mantenimiento de
|
|
discos que muestren atributos sospechosos.
|
|
|
|
Esta estimación de probabilidad se obtiene correlacionando los
|
|
atributos SMART de los discos con los datos de Backblaze disponibles en:
|
|
|
|
:https://www.backblaze.com/hard-drive-test-data.html
|
|
|
|
Si SMART informa que un disco está fallando, se imprime `FAIL` o
|
|
`PREFAIL` para ese disco, y SnapRAID regresa con un error.
|
|
En este caso, se recomienda encarecidamente el reemplazo inmediato
|
|
del disco.
|
|
|
|
Otras posibles cadenas de estado son:
|
|
logfail - En el pasado, algunos atributos estaban por debajo del
|
|
umbral.
|
|
logerr - El registro de errores del dispositivo contiene errores.
|
|
selferr - El registro de autoprueba del dispositivo contiene errores.
|
|
|
|
Si se especifica la opción -v, --verbose, se proporciona un análisis
|
|
estadístico más profundo. Este análisis puede ayudarle a decidir si
|
|
necesita más o menos paridad.
|
|
|
|
Este comando utiliza la herramienta `smartctl` y es equivalente a
|
|
ejecutar `smartctl -a` en todos los dispositivos.
|
|
|
|
Si sus dispositivos no se detectan automáticamente correctamente, puede
|
|
especificar un comando personalizado utilizando la opción `smartctl`
|
|
en el archivo de configuración.
|
|
|
|
Nada se modifica.
|
|
|
|
probe
|
|
Imprime el estado de ENERGÍA de todos los discos del sistema.
|
|
|
|
`Standby` significa que el disco no está girando. `Active` significa
|
|
que el disco está girando.
|
|
|
|
Este comando utiliza la herramienta `smartctl` y es equivalente a
|
|
ejecutar `smartctl -n standby -i` en todos los dispositivos.
|
|
|
|
Si sus dispositivos no se detectan automáticamente correctamente, puede
|
|
especificar un comando personalizado utilizando la opción `smartctl`
|
|
en el archivo de configuración.
|
|
|
|
Nada se modifica.
|
|
|
|
up
|
|
Pone en marcha (gira) todos los discos del array.
|
|
|
|
Puede poner en marcha solo discos específicos usando la opción -d,
|
|
--filter-disk.
|
|
|
|
Poner en marcha todos los discos al mismo tiempo requiere mucha energía.
|
|
Asegúrese de que su fuente de alimentación pueda soportarlo.
|
|
|
|
Nada se modifica.
|
|
|
|
down
|
|
Detiene (deja de girar) todos los discos del array.
|
|
|
|
Este comando utiliza la herramienta `smartctl` y es equivalente a
|
|
ejecutar `smartctl -s standby,now` en todos los dispositivos.
|
|
|
|
Puede detener solo discos específicos usando la opción -d,
|
|
--filter-disk.
|
|
|
|
Para detener automáticamente en caso de error, puede usar la opción -s,
|
|
--spin-down-on-error con cualquier otro comando, lo cual es
|
|
equivalente a ejecutar `down` manualmente cuando ocurre un error.
|
|
|
|
Nada se modifica.
|
|
|
|
diff
|
|
Enumera todos los archivos modificados desde el último `sync` que
|
|
necesitan que se vuelva a calcular su información de paridad.
|
|
|
|
Este comando no verifica los datos del archivo, sino solo la marca
|
|
de tiempo, el tamaño y el inodo del archivo.
|
|
|
|
Después de enumerar todos los archivos cambiados, se presenta un
|
|
resumen de los cambios, agrupados por:
|
|
equal - Archivos sin cambios desde antes.
|
|
added - Archivos agregados que no estaban presentes antes.
|
|
removed - Archivos eliminados.
|
|
updated - Archivos con un tamaño o marca de tiempo diferente,
|
|
lo que significa que fueron modificados.
|
|
moved - Archivos movidos a un directorio diferente en el mismo
|
|
disco. Se identifican por tener el mismo nombre, tamaño,
|
|
marca de tiempo e inodo, pero un directorio diferente.
|
|
copied - Archivos copiados en el mismo disco o en uno diferente
|
|
donde el archivo original todavía existe.
|
|
Se identifican por tener el mismo nombre, tamaño y
|
|
marca de tiempo.
|
|
Si la marca de tiempo de subsegundo es cero, la ruta
|
|
completa debe coincidir para ser identificado, no solo el nombre.
|
|
relocated - Archivos movidos en el mismo disco o en uno
|
|
diferente donde el original ha desaparecido.
|
|
Se identifican por tener el mismo nombre, tamaño y
|
|
marca de tiempo.
|
|
Si la marca de tiempo de subsegundo es cero, la ruta
|
|
completa debe coincidir para ser identificado.
|
|
A diferencia de los archivos `moved` en el mismo disco,
|
|
los archivos reubicados tienen un inodo diferente.
|
|
restored - Archivos con un inodo diferente pero con directorio,
|
|
nombre, tamaño y marca de tiempo coincidentes.
|
|
Estos son usualmente archivos restaurados después de
|
|
haber sido eliminados.
|
|
|
|
Si se requiere un `sync`, el código de retorno del proceso es 2, en
|
|
lugar del valor predeterminado 0. El código de retorno 1 se utiliza
|
|
para una condición de error genérico.
|
|
|
|
Nada se modifica.
|
|
|
|
sync
|
|
Actualiza la información de paridad. Todos los archivos modificados
|
|
en el array de discos se leen y la información de paridad
|
|
correspondiente se actualiza.
|
|
|
|
Puede detener este proceso en cualquier momento presionando Ctrl+C,
|
|
sin perder el trabajo ya realizado.
|
|
En la siguiente ejecución, el proceso `sync` se reanudará donde
|
|
se interrumpió.
|
|
|
|
Si se encuentran errores silenciosos o de entrada/salida durante el
|
|
proceso, los bloques correspondientes se marcan como defectuosos.
|
|
|
|
Los archivos se identifican por ruta y/o inodo y se verifican por
|
|
tamaño y marca de tiempo.
|
|
Si el tamaño o la marca de tiempo del archivo difieren, la información
|
|
de paridad se vuelve a calcular para todo el archivo.
|
|
Si el archivo se mueve o se renombra en el mismo disco, manteniendo el
|
|
mismo inodo, la paridad no se vuelve a calcular.
|
|
Si el archivo se mueve a otro disco, la paridad se vuelve a calcular,
|
|
pero la información de hash calculada previamente se mantiene.
|
|
|
|
Los archivos `content` y `parity` se modifican si es necesario.
|
|
Los archivos en el array NO se modifican.
|
|
|
|
scrub
|
|
Depura (scrubs) el array, buscando errores silenciosos o de
|
|
entrada/salida en los discos de datos y paridad.
|
|
|
|
Cada invocación verifica aproximadamente el 8% del array, excluyendo
|
|
los datos ya depurados en los últimos 10 días.
|
|
Esto significa que depurar una vez a la semana asegura que cada bit de
|
|
datos se verifique al menos una vez cada tres meses.
|
|
|
|
Puede definir un plan de depuración o una cantidad diferente utilizando
|
|
la opción -p, --plan, que acepta:
|
|
bad - Depurar bloques marcados como defectuosos.
|
|
new - Depurar bloques recién sincronizados que aún no han sido depurados.
|
|
full - Depurar todo.
|
|
0-100 - Depurar el porcentaje especificado de bloques.
|
|
|
|
Si especifica un valor de porcentaje, también puede usar la opción -o,
|
|
--older-than para definir la antigüedad del bloque.
|
|
Los bloques más antiguos se depuran primero, asegurando una verificación
|
|
óptima.
|
|
Si desea depurar solo los bloques recién sincronizados que aún no han
|
|
sido depurados, use la opción `-p new`.
|
|
|
|
Para obtener detalles del estado de la depuración, use el comando `status`.
|
|
|
|
Para cualquier error silencioso o de entrada/salida encontrado, los
|
|
bloques correspondientes se marcan como defectuosos en el archivo
|
|
`content`.
|
|
Estos bloques defectuosos se enumeran en `status` y se pueden
|
|
corregir con `fix -e`.
|
|
Después de la corrección, en la siguiente depuración, se volverán a
|
|
verificar y, si se encuentran corregidos, se eliminará la marca de defectuoso.
|
|
Para depurar solo los bloques defectuosos, puede usar el comando
|
|
`scrub -p bad`.
|
|
|
|
Se recomienda ejecutar `scrub` solo en un array sincronizado para evitar
|
|
errores reportados causados por datos no sincronizados. Estos errores
|
|
se reconocen como no siendo errores silenciosos y los bloques no se
|
|
marcan como defectuosos, pero tales errores se informan en la salida
|
|
del comando.
|
|
|
|
El archivo `content` se modifica para actualizar el tiempo de la última
|
|
verificación de cada bloque y para marcar bloques defectuosos.
|
|
Los archivos `parity` NO se modifican.
|
|
Los archivos en el array NO se modifican.
|
|
|
|
fix
|
|
Repara todos los archivos y los datos de paridad.
|
|
|
|
Todos los archivos y datos de paridad si comparan con el estado guardado en
|
|
el último `sync`. Si se encuentra una diferencia, se revierte al estado almacenado.
|
|
|
|
¡ADVERTENCIA!
|
|
El comando `fix` no diferencia entre errores y modificaciones intencionadas.
|
|
Revierte incondicionalmente el estado del archivo al del último `sync`.
|
|
|
|
Si no se especifica otra opción, se procesa todo el array.
|
|
Utilice las opciones de filtro para seleccionar un subconjunto de
|
|
archivos o discos para operar.
|
|
|
|
Para corregir solo los bloques marcados como defectuosos durante `sync`
|
|
y `scrub`, use la opción -e, --filter-error.
|
|
A diferencia de otras opciones de filtro, esta aplica correcciones solo
|
|
a archivos que no han cambiado desde el último `sync`.
|
|
|
|
SnapRAID cambia el nombre de todos los archivos que no se pueden corregir
|
|
agregando la extensión `.unrecoverable`.
|
|
|
|
Antes de corregir, se escanea todo el array para encontrar cualquier
|
|
archivo movido desde la última operación de `sync`.
|
|
Estos archivos se identifican por su marca de tiempo, ignorando su
|
|
nombre y directorio, y se utilizan en el proceso de recuperación si
|
|
es necesario.
|
|
Si movió algunos de ellos fuera del array, puede usar la opción -i,
|
|
--import para especificar directorios adicionales para escanear.
|
|
|
|
Los archivos se identifican solo por ruta, no por inodo.
|
|
|
|
El archivo `content` NO se modifica.
|
|
Los archivos `parity` se modifican si es necesario.
|
|
Los archivos en el array se modifican si es necesario.
|
|
|
|
check
|
|
Verifica todos los archivos y la información de paridad.
|
|
|
|
Funciona como `fix`, pero solo simula una recuperación y no se
|
|
escriben cambios en el array.
|
|
|
|
Este comando está destinado principalmente a la verificación manual,
|
|
como después de un proceso de recuperación o en otras condiciones
|
|
especiales. Para comprobaciones periódicas y programadas, use `scrub`.
|
|
|
|
Si usa la opción -a, --audit-only, solo se verifican los datos del
|
|
archivo y se ignora la información de paridad para una ejecución más
|
|
rápida.
|
|
|
|
Los archivos se identifican solo por ruta, no por inodo.
|
|
|
|
Nada se modifica.
|
|
|
|
list
|
|
Enumera todos los archivos contenidos en el array en el momento del
|
|
último `sync`.
|
|
|
|
Con -v o --verbose, también se muestra el tiempo de subsegundo.
|
|
|
|
Nada se modifica.
|
|
|
|
dup
|
|
Enumera todos los archivos duplicados. Se supone que dos archivos son
|
|
iguales si sus hashes coinciden. Los datos del archivo no se leen;
|
|
solo se utilizan los hashes precalculados.
|
|
|
|
Nada se modifica.
|
|
|
|
pool
|
|
Crea o actualiza una vista virtual de todos
|
|
los archivos de su array de discos en el directorio de `pooling`.
|
|
|
|
Los archivos no se copian sino que se enlazan usando
|
|
enlaces simbólicos.
|
|
|
|
Al actualizar, todos los enlaces simbólicos existentes y los
|
|
subdirectorios vacíos se eliminan y se reemplazan con la nueva
|
|
vista del array. Cualquier otro archivo regular se deja en su lugar.
|
|
|
|
Nada se modifica fuera del directorio pool.
|
|
|
|
devices
|
|
Imprime los dispositivos de bajo nivel utilizados por el array.
|
|
|
|
Este comando muestra las asociaciones de dispositivos en el array
|
|
y está destinado principalmente como una interfaz de script.
|
|
|
|
Las primeras dos columnas son el ID y la ruta del dispositivo de bajo
|
|
nivel. Las siguientes dos columnas son el ID y la ruta del dispositivo
|
|
de alto nivel. La última columna es el nombre del disco en el array.
|
|
|
|
En la mayoría de los casos, tiene un dispositivo de bajo nivel para
|
|
cada disco en el array, pero en algunas configuraciones más complejas,
|
|
puede tener múltiples dispositivos de bajo nivel utilizados por un
|
|
solo disco en el array.
|
|
|
|
Nada se modifica.
|
|
|
|
touch
|
|
Establece una marca de tiempo de subsegundo arbitraria para todos los
|
|
archivos que la tienen establecida en cero.
|
|
|
|
Esto mejora la capacidad de SnapRAID para reconocer archivos movidos
|
|
y copiados, ya que hace que la marca de tiempo sea casi única,
|
|
reduciendo posibles duplicados.
|
|
|
|
Más específicamente, si la marca de tiempo de subsegundo no es cero,
|
|
un archivo movido o copiado se identifica como tal si coincide con
|
|
el nombre, el tamaño y la marca de tiempo. Si la marca de tiempo de
|
|
subsegundo es cero, se considera una copia solo si la ruta completa,
|
|
el tamaño y la marca de tiempo coinciden.
|
|
|
|
La marca de tiempo de precisión de segundo no se modifica,
|
|
por lo que se conservarán todas las fechas y horas de sus archivos.
|
|
|
|
rehash
|
|
Programa un nuevo cálculo de hash (rehash) de todo el array.
|
|
|
|
Este comando cambia el tipo de hash utilizado, típicamente al
|
|
actualizar de un sistema de 32 bits a uno de 64 bits, para cambiar
|
|
de MurmurHash3 al más rápido SpookyHash.
|
|
|
|
Si ya está utilizando el hash óptimo, este comando
|
|
no hace nada y le informa que no se necesita ninguna acción.
|
|
|
|
El nuevo cálculo de hash no se realiza inmediatamente, sino que
|
|
tiene lugar progresivamente durante `sync` y `scrub`.
|
|
|
|
Puede verificar el estado del nuevo cálculo de hash usando `status`.
|
|
|
|
Durante el nuevo cálculo de hash, SnapRAID mantiene la funcionalidad
|
|
completa, con la única excepción de que `dup` no puede detectar
|
|
archivos duplicados utilizando un hash diferente.
|
|
|
|
locate
|
|
Localiza archivos almacenados en los discos de paridad. Para cada archivo coincidente,
|
|
imprime su ubicación dentro del archivo de paridad y el número de fragmentos
|
|
que ocupa.
|
|
|
|
Puede usar la opción -t, --tail para restringir la operación a los archivos
|
|
que ocupan la porción final especificada de la paridad.
|
|
|
|
Si desea reasignar estos archivos, puede usar la opción
|
|
-W, --force-realloc-tail.
|
|
Tenga en cuenta que dichos archivos no estarán protegidos por la paridad durante
|
|
el proceso de reasignación.
|
|
|
|
Opciones (Options)
|
|
SnapRAID proporciona las siguientes opciones:
|
|
|
|
-c, --conf CONFIG
|
|
Selecciona el archivo de configuración a usar. Si no se
|
|
especifica, en Unix utiliza el archivo `/usr/local/etc/snapraid.conf`
|
|
si existe, de lo contrario `/etc/snapraid.conf`.
|
|
En Windows, utiliza el archivo `snapraid.conf` en el mismo
|
|
directorio que `snapraid.exe`.
|
|
|
|
-f, --filter PATTERN
|
|
Filtra los archivos a procesar en `check` y `fix`.
|
|
Solo se procesan los archivos que coinciden con el patrón
|
|
especificado. Esta opción se puede usar varias veces.
|
|
Consulte la sección PATTERN para obtener más detalles sobre
|
|
las especificaciones de patrones.
|
|
En Unix, asegúrese de que los caracteres globbing estén
|
|
entre comillas si se usan.
|
|
Esta opción solo se puede usar con `check` y `fix`.
|
|
No se puede usar con `sync` y `scrub`, ya que siempre
|
|
procesan todo el array.
|
|
|
|
-d, --filter-disk NAME
|
|
Filtra los discos a procesar en `check`, `fix`, `up` y `down`.
|
|
Debe especificar un nombre de disco como se define en el archivo
|
|
de configuración.
|
|
También puede especificar discos de paridad con los nombres:
|
|
`parity`, `2-parity`, `3-parity`, etc., para limitar las
|
|
operaciones a un disco de paridad específico.
|
|
Si combina múltiples opciones --filter, --filter-disk y
|
|
--filter-missing, solo se seleccionan los archivos que
|
|
coinciden con todos los filtros.
|
|
Esta opción se puede usar varias veces.
|
|
Esta opción solo se puede usar con `check`, `fix`, `up` y `down`.
|
|
No se puede usar con `sync` y `scrub`, ya que siempre
|
|
procesan todo el array.
|
|
|
|
-m, --filter-missing
|
|
Filtra los archivos a procesar en `check` y `fix`.
|
|
Solo se procesan los archivos faltantes o eliminados del array.
|
|
Cuando se usa con `fix`, esto actúa como un comando de `undelete`
|
|
(recuperación).
|
|
Si combina múltiples opciones --filter, --filter-disk y
|
|
--filter-missing, solo se seleccionan los archivos que
|
|
coinciden con todos los filtros.
|
|
Esta opción solo se puede usar con `check` y `fix`.
|
|
No se puede usar con `sync` y `scrub`, ya que siempre
|
|
procesan todo el array.
|
|
|
|
-e, --filter-error
|
|
Procesa los archivos con errores en `check` y `fix`.
|
|
Solo procesa archivos que tienen bloques marcados con errores
|
|
silenciosos o de entrada/salida durante `sync` y `scrub`,
|
|
según se enumeran en `status`.
|
|
Esta opción solo se puede usar con `check` y `fix`.
|
|
|
|
-p, --plan PERC|bad|new|full
|
|
Selecciona el plan de depuración (scrub). Si PERC es un valor
|
|
numérico de 0 a 100, se interpreta como el porcentaje de
|
|
bloques a depurar.
|
|
En lugar de un porcentaje, puede especificar un plan:
|
|
`bad` depura bloques defectuosos, `new` depura bloques aún
|
|
no depurados, y `full` depura todo.
|
|
Esta opción solo se puede usar con `scrub`.
|
|
|
|
-o, --older-than DAYS
|
|
Selecciona la parte más antigua del array para procesar en `scrub`.
|
|
DAYS es la edad mínima en días para que un bloque sea depurado;
|
|
el valor predeterminado es 10.
|
|
Los bloques marcados como defectuosos siempre se depuran
|
|
independientemente de esta opción.
|
|
Esta opción solo se puede usar con `scrub`.
|
|
|
|
-a, --audit-only
|
|
En `check`, verifica el hash de los archivos sin
|
|
verificar la información de paridad.
|
|
Si solo está interesado en verificar los datos del archivo,
|
|
esta opción puede acelerar significativamente el proceso de
|
|
verificación.
|
|
Esta opción solo se puede usar con `check`.
|
|
|
|
-h, --pre-hash
|
|
En `sync`, ejecuta una fase de hash preliminar de todos los
|
|
datos nuevos para una verificación adicional antes del
|
|
cálculo de paridad.
|
|
Normalmente, en `sync`, no se realiza un hash preliminar,
|
|
y los nuevos datos se hashean justo antes del cálculo de
|
|
paridad cuando se leen por primera vez.
|
|
Este proceso ocurre cuando el sistema está bajo
|
|
una gran carga, con todos los discos girando y una CPU ocupada.
|
|
Esta es una condición extrema para la máquina, y si tiene un
|
|
problema de hardware latente, los errores silenciosos pueden
|
|
pasar desapercibidos porque los datos aún no están hasheados.
|
|
Para evitar este riesgo, puede habilitar el modo `pre-hash`
|
|
para que todos los datos se lean dos veces para garantizar
|
|
su integridad.
|
|
Esta opción también verifica los archivos movidos dentro del
|
|
array para asegurar que la operación de movimiento fue exitosa
|
|
y, si es necesario, le permite ejecutar una operación de corrección
|
|
antes de continuar.
|
|
Esta opción solo se puede usar con `sync`.
|
|
|
|
-i, --import DIR
|
|
Importa desde el directorio especificado cualquier archivo
|
|
eliminado del array después del último `sync`.
|
|
Si aún tiene dichos archivos, `check` y `fix` pueden usarlos
|
|
para mejorar el proceso de recuperación.
|
|
Los archivos se leen, incluso en subdirectorios, y se
|
|
identifican independientemente de su nombre.
|
|
Esta opción solo se puede usar con `check` y `fix`.
|
|
|
|
-s, --spin-down-on-error
|
|
En cualquier error, detiene todos los discos gestionados antes
|
|
de salir con un código de estado distinto de cero. Esto evita
|
|
que las unidades permanezcan activas y girando después de una
|
|
operación abortada, lo que ayuda a evitar la acumulación de calor
|
|
innecesaria y el consumo de energía. Use esta opción para
|
|
asegurarse de que los discos se detengan de forma segura incluso
|
|
cuando un comando falla.
|
|
|
|
-w, --bw-limit RATE
|
|
Aplica un límite de ancho de banda global para todos los discos.
|
|
RATE es el número de bytes por segundo. Puede especificar un
|
|
multiplicador como K, M o G (por ejemplo, --bw-limit 1G).
|
|
|
|
-t, --tail SIZE
|
|
Limita la lista de archivos a aquellos que no usan más del
|
|
tamaño de cola especificado de los discos de paridad.
|
|
Puede usar multiplicadores como K, M, G o T (por ejemplo, --tail 1G).
|
|
Esta opción solo es válida cuando se usa junto con el comando
|
|
`locate`.
|
|
|
|
-A, --stats
|
|
Habilita una vista de estado extendida que muestra información
|
|
adicional. La pantalla muestra dos gráficos:
|
|
El primer gráfico muestra el número de franjas (stripes)
|
|
almacenadas en búfer para cada disco, junto con la ruta del
|
|
archivo al que se está accediendo actualmente en ese disco.
|
|
Normalmente, el disco más lento no tendrá búfer disponible,
|
|
lo que determina el ancho de banda máximo alcanzable.
|
|
El segundo gráfico muestra el porcentaje de tiempo
|
|
dedicado a esperar durante los últimos 100 segundos. Se espera
|
|
que el disco más lento cause la mayor parte del tiempo de
|
|
espera, mientras que otros discos deberían tener poco o ningún
|
|
tiempo de espera porque pueden usar sus franjas almacenadas
|
|
en búfer. Este gráfico también muestra el tiempo dedicado a
|
|
esperar los cálculos de hash y los cálculos RAID.
|
|
Todos los cálculos se ejecutan en paralelo con las
|
|
operaciones de disco. Por lo tanto, mientras haya un tiempo
|
|
de espera medible para al menos un disco, indica que la CPU
|
|
es lo suficientemente rápida para mantenerse al día con la
|
|
carga de trabajo.
|
|
|
|
-Z, --force-zero
|
|
Fuerza la operación insegura de sincronizar un archivo con
|
|
tamaño cero que antes no era cero.
|
|
Si SnapRAID detecta tal condición, detiene el procedimiento
|
|
a menos que especifique esta opción.
|
|
Esto le permite detectar fácilmente cuando, después de un
|
|
fallo del sistema, algunos archivos accedidos fueron truncados.
|
|
Esta es una posible condición en Linux con los sistemas de
|
|
archivos ext3/ext4.
|
|
Esta opción solo se puede usar con `sync`.
|
|
|
|
-E, --force-empty
|
|
Fuerza la operación insegura de sincronizar un disco con todos
|
|
los archivos originales faltantes.
|
|
Si SnapRAID detecta que todos los archivos originalmente
|
|
presentes en el disco faltan o han sido reescritos, detiene
|
|
el procedimiento a menos que especifique esta opción.
|
|
Esto le permite detectar fácilmente cuando un sistema de archivos
|
|
de datos no está montado.
|
|
Sin embargo, se permite tener un solo cambio de UUID con
|
|
paridad simple, y más con paridad múltiple, porque este es
|
|
el caso normal al reemplazar discos después de una recuperación.
|
|
Esta opción solo se puede usar con `sync`.
|
|
|
|
-U, --force-uuid
|
|
Fuerza la operación insegura de sincronizar, verificar y
|
|
corregir con discos que han cambiado su UUID.
|
|
Si SnapRAID detecta que algunos discos han cambiado el UUID,
|
|
detiene el procedimiento a menos que especifique esta opción.
|
|
Esto le permite detectar cuando sus discos están montados en
|
|
los puntos de montaje incorrectos.
|
|
Esta opción solo se puede usar con `sync`, `check` o `fix`.
|
|
|
|
-D, --force-device
|
|
Fuerza la operación insegura de corregir con discos inaccesibles
|
|
o con discos en el mismo dispositivo físico.
|
|
Por ejemplo, si perdió dos discos de datos y tiene un disco de
|
|
repuesto para recuperar solo el primero, puede ignorar el
|
|
segundo disco inaccesible.
|
|
O, si desea recuperar un disco en el espacio libre que queda
|
|
en un disco ya usado, compartiendo el mismo dispositivo físico.
|
|
Esta opción solo se puede usar con `fix`.
|
|
|
|
-N, --force-nocopy
|
|
En `sync`, `check` y `fix`, deshabilita la heurística de
|
|
detección de copias. Sin esta opción, SnapRAID asume que
|
|
los archivos con los mismos atributos, como nombre, tamaño y
|
|
marca de tiempo, son copias con los mismos datos.
|
|
Esto permite la identificación de archivos copiados o movidos
|
|
de un disco a otro y reutiliza la información de hash ya
|
|
calculada para detectar errores silenciosos o recuperar archivos
|
|
faltantes.
|
|
En algunos casos raros, este comportamiento puede dar lugar a
|
|
falsos positivos o a un proceso lento debido a muchas
|
|
verificaciones de hash, y esta opción le permite resolver
|
|
tales problemas.
|
|
Esta opción solo se puede usar con `sync`, `check` y `fix`.
|
|
|
|
-F, --force-full
|
|
En `sync`, fuerza un recálculo completo de la paridad.
|
|
Esta opción se puede usar cuando agrega un nuevo nivel de
|
|
paridad o si revirtió a un archivo de contenido antiguo
|
|
utilizando datos de paridad más recientes.
|
|
En lugar de recrear la paridad desde cero, esto le permite
|
|
reutilizar los hashes presentes en el archivo de contenido
|
|
para validar los datos y mantener la protección de datos durante
|
|
el proceso `sync` utilizando los datos de paridad existentes.
|
|
Esta opción solo se puede usar con `sync`.
|
|
|
|
-R, --force-realloc
|
|
En `sync`, fuerza una reasignación completa de archivos y
|
|
la reconstrucción de la paridad.
|
|
Esta opción se puede usar para reasignar completamente todos
|
|
los archivos, eliminando la fragmentación, mientras se reutilizan
|
|
los hashes presentes en el archivo de contenido para validar los datos.
|
|
Esta opción solo se puede usar con `sync`.
|
|
¡ADVERTENCIA! Esta opción es solo para expertos y se
|
|
recomienda encarecidamente no usarla.
|
|
NO tiene protección de datos durante la operación `sync`.
|
|
|
|
-W, --force-realloc-tail SIZE
|
|
Funciona como -R, --force-realloc, pero limitado a la porción final
|
|
especificada (últimos SIZE bytes) de cada archivo de paridad.
|
|
Fuerza la reasignación (movimiento) de cualquier fragmento/bloque de archivo
|
|
actualmente almacenado en esa sección final, permitiendo que se coloquen
|
|
en cualquier lugar de los archivos de paridad donde haya espacio libre
|
|
disponible (incluyendo huecos existentes).
|
|
El propósito principal de esta opción es reducir el tamaño en disco
|
|
del archivo de paridad.
|
|
Si la reasignación vacía con éxito toda la sección final
|
|
(no quedan bloques usándola), el archivo de paridad se trunca,
|
|
recuperando el espacio final no utilizado.
|
|
Puede usar multiplicadores como K, M, G o T (por ejemplo,
|
|
--force-realloc-tail 1G).
|
|
Puede usar locate -t, --tail para conocer de antemano
|
|
los archivos afectados.
|
|
¡ADVERTENCIA!
|
|
Esta opción es solo para expertos y se recomienda
|
|
encarecidamente no usarla.
|
|
Usted NO tiene protección de datos durante la operación `sync`
|
|
para los archivos afectados.
|
|
|
|
-l, --log FILE
|
|
Escribe un registro detallado en el archivo especificado.
|
|
Si no se especifica esta opción, los errores inesperados se
|
|
imprimen en la pantalla, lo que puede resultar en una salida
|
|
excesiva en caso de muchos errores. Cuando se especifica -l,
|
|
--log, solo los errores fatales que hacen que SnapRAID se
|
|
detenga se imprimen en la pantalla.
|
|
Si la ruta comienza con `>>`, el archivo se abre
|
|
en modo de anexar. Las ocurrencias de `%D` y `%T` en el nombre
|
|
se reemplazan con la fecha y hora en el formato AAAA MM DD y HH MM SS.
|
|
En archivos por lotes de Windows, debe duplicar el
|
|
carácter `%`, por ejemplo, resultado-%%D.log. Para usar `>>`,
|
|
debe encerrar el nombre entre comillas, por ejemplo, `">>resultado.log"`.
|
|
Para enviar el registro a la salida estándar o al error
|
|
estándar, puede usar `">&1"` y `">&2"`, respectivamente.
|
|
Consulte el archivo snapraid_log.txt o la página del manual
|
|
para obtener descripciones de las etiquetas de registro.
|
|
|
|
-L, --error-limit NUMBER
|
|
Establece un nuevo límite de error antes de detener la ejecución.
|
|
De forma predeterminada, SnapRAID se detiene si encuentra más
|
|
de 100 errores de entrada/salida, lo que indica que es probable
|
|
que un disco esté fallando.
|
|
Esta opción afecta a `sync` y `scrub`, a los que se les
|
|
permite continuar después del primer conjunto de errores de
|
|
disco para intentar completar sus operaciones.
|
|
Sin embargo, `check` y `fix` siempre se detienen en el primer error.
|
|
|
|
-S, --start BLKSTART
|
|
Comienza a procesar desde el número de bloque especificado.
|
|
Esto puede ser útil para reintentar verificar o corregir
|
|
bloques específicos en caso de un disco dañado.
|
|
Esta opción es principalmente para recuperación manual avanzada.
|
|
|
|
-B, --count BLKCOUNT
|
|
Procesa solo el número de bloques especificado.
|
|
Esta opción es principalmente para recuperación manual avanzada.
|
|
|
|
-C, --gen-conf CONTENT
|
|
Genera un archivo de configuración ficticio a partir de un
|
|
archivo de contenido existente.
|
|
El archivo de configuración se escribe en la salida estándar
|
|
y no sobrescribe uno existente.
|
|
Este archivo de configuración también contiene la información
|
|
necesaria para reconstruir los puntos de montaje del disco en
|
|
caso de que pierda todo el sistema.
|
|
|
|
-v, --verbose
|
|
Imprime más información en la pantalla.
|
|
Si se especifica una vez, imprime archivos excluidos
|
|
y estadísticas adicionales.
|
|
Esta opción no tiene efecto en los archivos de registro.
|
|
|
|
-q, --quiet
|
|
Imprime menos información en la pantalla.
|
|
Si se especifica una vez, elimina la barra de progreso;
|
|
dos veces, las operaciones en ejecución; tres veces, los
|
|
mensajes de información; cuatro veces, los mensajes de estado.
|
|
Los errores fatales siempre se imprimen en la pantalla.
|
|
Esta opción no tiene efecto en los archivos de registro.
|
|
|
|
-H, --help
|
|
Imprime una pantalla de ayuda corta.
|
|
|
|
-V, --version
|
|
Imprime la versión del programa.
|
|
|
|
Configuración (Configuration)
|
|
SnapRAID requiere un archivo de configuración para saber dónde se
|
|
encuentra su array de discos y dónde almacenar la información de paridad.
|
|
|
|
En Unix, utiliza el archivo `/usr/local/etc/snapraid.conf` si existe,
|
|
de lo contrario `/etc/snapraid.conf`.
|
|
En Windows, utiliza el archivo `snapraid.conf` en el mismo
|
|
directorio que `snapraid.exe`.
|
|
|
|
Debe contener las siguientes opciones (distingue entre mayúsculas y minúsculas):
|
|
|
|
parity FILE [,FILE] ...
|
|
Define los archivos a usar para almacenar la información de paridad.
|
|
La paridad permite la protección contra un solo fallo de disco,
|
|
similar a RAID5.
|
|
|
|
Puede especificar varios archivos, que deben estar en discos diferentes.
|
|
Cuando un archivo no puede crecer más, se utiliza el siguiente.
|
|
El espacio total disponible debe ser al menos tan grande como el
|
|
disco de datos más grande del array.
|
|
|
|
Puede agregar archivos de paridad adicionales más tarde, pero no
|
|
puede reordenarlos ni eliminarlos.
|
|
|
|
Mantener los discos de paridad reservados para la paridad asegura
|
|
que no se fragmenten, mejorando el rendimiento.
|
|
|
|
En Windows, se dejan 256 MB sin usar en cada disco para evitar la
|
|
advertencia sobre discos llenos.
|
|
|
|
Esta opción es obligatoria y solo se puede usar una vez.
|
|
|
|
(2,3,4,5,6)-parity FILE [,FILE] ...
|
|
Define los archivos a usar para almacenar información de paridad
|
|
adicional.
|
|
|
|
Para cada nivel de paridad especificado, se habilita un nivel
|
|
adicional de protección:
|
|
|
|
* 2-parity habilita la paridad dual RAID6.
|
|
* 3-parity habilita la paridad triple.
|
|
* 4-parity habilita la paridad cuádruple.
|
|
* 5-parity habilita la paridad quíntuple.
|
|
* 6-parity habilita la paridad séxtuple.
|
|
|
|
Cada nivel de paridad requiere la presencia de todos los niveles
|
|
de paridad anteriores.
|
|
|
|
Se aplican las mismas consideraciones que para la opción `parity`.
|
|
|
|
Estas opciones son opcionales y solo se pueden usar una vez.
|
|
|
|
z-parity FILE [,FILE] ...
|
|
Define un archivo y un formato alternativos para almacenar paridad triple.
|
|
|
|
Esta opción es una alternativa a `3-parity`, destinada principalmente
|
|
a CPU de gama baja como ARM o AMD Phenom, Athlon y Opteron que no
|
|
admiten el conjunto de instrucciones SSSE3. En tales casos,
|
|
proporciona un mejor rendimiento.
|
|
|
|
Este formato es similar pero más rápido que el utilizado por ZFS RAIDZ3.
|
|
Al igual que ZFS, no funciona más allá de la paridad triple.
|
|
|
|
Al usar `3-parity`, se le advertirá si se recomienda usar
|
|
el formato `z-parity` para mejorar el rendimiento.
|
|
|
|
Es posible convertir de un formato a otro ajustando
|
|
el archivo de configuración con el archivo z-parity o 3-parity
|
|
deseado y usando `fix` para recrearlo.
|
|
|
|
content FILE
|
|
Define el archivo a usar para almacenar la lista y las sumas de
|
|
comprobación de todos los archivos presentes en su array de discos.
|
|
|
|
Se puede colocar en un disco utilizado para datos, paridad o
|
|
cualquier otro disco disponible.
|
|
Si usa un disco de datos, este archivo se excluye automáticamente
|
|
del proceso `sync`.
|
|
|
|
Esta opción es obligatoria y se puede usar varias veces para guardar
|
|
múltiples copias del mismo archivo.
|
|
|
|
Debe almacenar al menos una copia por cada disco de paridad utilizado
|
|
más uno. Usar copias adicionales no perjudica.
|
|
|
|
data NAME DIR
|
|
Define el nombre y el punto de montaje de los discos de datos en
|
|
el array. NAME se usa para identificar el disco y debe
|
|
ser único. DIR es el punto de montaje del disco en el
|
|
sistema de archivos.
|
|
|
|
Puede cambiar el punto de montaje según sea necesario, siempre que
|
|
mantenga el NAME fijo.
|
|
|
|
Debe usar una opción para cada disco de datos en el array.
|
|
|
|
Puede cambiar el nombre de un disco más tarde cambiando el NAME
|
|
directamente en el archivo de configuración y luego ejecutando un
|
|
comando `sync`. En el caso de cambiar el nombre, la asociación se
|
|
realiza utilizando el UUID almacenado de los discos.
|
|
|
|
extra NAME DIR
|
|
Define el nombre y el punto de montaje de discos adicionales para monitorear
|
|
con los comandos `smart` y `probe`.
|
|
|
|
Esto es útil para monitorear discos que no forman parte del
|
|
array pero que son necesarios para que el sistema funcione, como
|
|
el disco de arranque.
|
|
|
|
Tenga en cuenta que dichos discos no se ven afectados por los comandos `up` y `down`
|
|
porque se espera que estén siempre girando.
|
|
|
|
snapshot
|
|
Habilita el uso de instantáneas del sistema de archivos para los comandos `sync`, `scrub`,
|
|
`check` y `fix`.
|
|
|
|
Cuando está habilitado, SnapRAID crea una instantánea de solo lectura de sus datos al
|
|
comienzo de un 'sync'. Esto asegura una vista consistente y en un punto en el tiempo de sus
|
|
archivos, evitando errores causados por modificaciones concurrentes de archivos.
|
|
|
|
Esto mejora significativamente la recuperación: si un archivo se elimina del sistema de archivos activo,
|
|
permanece preservado en la instantánea. Esto evita que la paridad se "rompa"
|
|
para ese bloque, asegurando que aún pueda recuperar los datos con éxito
|
|
si falla otro disco.
|
|
|
|
Esta opción se aplica exclusivamente a discos de datos formateados con los sistemas de
|
|
archivos Btrfs, Bcachefs o ZFS en Linux y NTFS en Windows.
|
|
Los discos de paridad, o los discos de datos que usen otros sistemas de archivos, siempre usarán
|
|
la versión activa del sistema de archivos.
|
|
|
|
La creación y eliminación de instantáneas requieren privilegios administrativos.
|
|
Asegúrese de que SnapRAID se ejecute con los permisos necesarios (por ejemplo, sudo) cuando
|
|
esta opción esté habilitada.
|
|
|
|
Consulte la sección SNAPSHOTS para obtener una explicación detallada del ciclo de vida
|
|
de las instantáneas.
|
|
|
|
nohidden
|
|
Excluye todos los archivos y directorios ocultos.
|
|
En Unix, los archivos ocultos son los que comienzan con `.`.
|
|
En Windows, son los que tienen el atributo oculto.
|
|
|
|
exclude/include PATTERN
|
|
Define los patrones de archivo o directorio a excluir o incluir
|
|
en el proceso de sincronización.
|
|
Todos los patrones se procesan en el orden especificado.
|
|
|
|
Si el primer patrón que coincide es un `exclude`, el archivo
|
|
se excluye. Si es un `include`, el archivo se incluye.
|
|
Si ningún patrón coincide, el archivo se excluye si el último
|
|
patrón especificado es un `include`, o se incluye si el último
|
|
patrón especificado es un `exclude`.
|
|
|
|
Consulte la sección PATTERN para obtener más detalles sobre
|
|
las especificaciones de patrones.
|
|
|
|
Esta opción se puede usar varias veces.
|
|
|
|
blocksize SIZE_IN_KIBIBYTES
|
|
Define el tamaño de bloque básico en kibibytes para la paridad.
|
|
Un kibibyte es 1024 bytes.
|
|
|
|
El tamaño de bloque predeterminado es 256, que debería funcionar
|
|
para la mayoría de los casos.
|
|
|
|
¡ADVERTENCIA! Esta opción es solo para expertos y se
|
|
recomienda encarecidamente no cambiar este valor. Para cambiar
|
|
este valor en el futuro, ¡tendrá que recrear toda la paridad!
|
|
|
|
Una razón para usar un tamaño de bloque diferente es si tiene
|
|
muchos archivos pequeños, del orden de millones.
|
|
|
|
Para cada archivo, incluso si solo son unos pocos bytes, se asigna
|
|
un bloque completo de paridad, y con muchos archivos, esto puede
|
|
resultar en un espacio de paridad no utilizado significativo.
|
|
Cuando llena completamente el disco de paridad, no se le permite
|
|
agregar más archivos a los discos de datos.
|
|
Sin embargo, la paridad desperdiciada no se acumula en los discos
|
|
de datos. El espacio desperdiciado resultante de un alto número de
|
|
archivos en un disco de datos limita solo la cantidad de datos en
|
|
ese disco de datos, no en otros.
|
|
|
|
Como aproximación, puede suponer que se desperdicia la mitad del
|
|
tamaño del bloque para cada archivo. Por ejemplo, con 100,000 archivos
|
|
y un tamaño de bloque de 256 KiB, desperdiciará 12.8 GB de paridad,
|
|
lo que puede resultar en 12.8 GB menos de espacio disponible en el
|
|
disco de datos.
|
|
|
|
Puede verificar la cantidad de espacio desperdiciado en cada disco
|
|
usando `status`. Este es el espacio que debe dejar libre en los
|
|
discos de datos o usar para archivos no incluidos en el array.
|
|
Si este valor es negativo, significa que está cerca de llenar
|
|
la paridad, y representa el espacio que aún puede desperdiciar.
|
|
|
|
Para evitar este problema, puede usar una partición más grande para
|
|
la paridad. Por ejemplo, si la partición de paridad es 12.8 GB
|
|
más grande que los discos de datos, tiene suficiente espacio extra
|
|
para manejar hasta 100,000 archivos en cada disco de datos sin
|
|
ningún espacio desperdiciado.
|
|
|
|
Un truco para obtener una partición de paridad más grande en Linux
|
|
es formatearla con el comando:
|
|
|
|
:mkfs.ext4 -m 0 -T largefile4 DEVICE
|
|
|
|
Esto resulta en aproximadamente un 1.5% de espacio extra,
|
|
aproximadamente 60 GB para un disco de 4 TB, lo que permite
|
|
alrededor de 460,000 archivos en cada disco de datos sin ningún
|
|
espacio desperdiciado.
|
|
|
|
hashsize SIZE_IN_BYTES
|
|
Define el tamaño del hash en bytes para los bloques guardados.
|
|
|
|
El tamaño de hash predeterminado es de 16 bytes (128 bits),
|
|
que debería funcionar para la mayoría de los casos.
|
|
|
|
¡ADVERTENCIA! Esta opción es solo para expertos y se
|
|
recomienda encarecidamente no cambiar este valor. Para cambiar
|
|
este valor en el futuro, ¡tendrá que recrear toda la paridad!
|
|
|
|
Una razón para usar un tamaño de hash diferente es si su sistema
|
|
tiene memoria limitada. Como regla general, SnapRAID
|
|
típicamente requiere 1 GiB de RAM por cada 16 TB de datos en el array.
|
|
|
|
Específicamente, para almacenar los hashes de los datos, SnapRAID
|
|
requiere aproximadamente TS*(1+HS)/BS bytes de RAM,
|
|
donde TS es el tamaño total en bytes de su array de discos, BS es el
|
|
tamaño de bloque en bytes, y HS es el tamaño de hash en bytes.
|
|
|
|
Por ejemplo, con 8 discos de 4 TB, un tamaño de bloque de 256 KiB
|
|
(1 KiB = 1024 bytes) y un tamaño de hash de 16, obtiene:
|
|
|
|
:RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB
|
|
|
|
Cambiando a un tamaño de hash de 8, obtiene:
|
|
|
|
:RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB
|
|
|
|
Cambiando a un tamaño de bloque de 512, obtiene:
|
|
|
|
:RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0.96 GiB
|
|
|
|
Cambiando tanto a un tamaño de hash de 8 como a un tamaño de bloque de 512,
|
|
obtiene:
|
|
|
|
:RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0.51 GiB
|
|
|
|
autosave SIZE_IN_GIGABYTES
|
|
Guarda automáticamente el estado al sincronizar o depurar después de
|
|
la cantidad especificada de GB procesados.
|
|
Esta opción es útil para evitar reiniciar comandos `sync` largos
|
|
desde cero si son interrumpidos por un fallo de la máquina o
|
|
cualquier otro evento.
|
|
|
|
temp_limit TEMPERATURE_CELSIUS
|
|
Establece la temperatura máxima permitida del disco en Celsius.
|
|
Cuando se especifica, SnapRAID verifica periódicamente la temperatura
|
|
de todos los discos utilizando la herramienta smartctl. Las
|
|
temperaturas actuales del disco se muestran mientras SnapRAID está
|
|
operando. Si algún disco excede este límite, todas las operaciones
|
|
se detienen y los discos se detienen (se ponen en espera) durante
|
|
la duración definida por la opción `temp_sleep`. Después del
|
|
período de espera, las operaciones se reanudan, pausándose
|
|
potencialmente de nuevo si se alcanza el límite de temperatura
|
|
una vez más.
|
|
|
|
Durante la operación, SnapRAID también analiza la curva de
|
|
calentamiento de cada disco y estima la temperatura constante a
|
|
largo plazo que se espera que alcancen si la actividad continúa.
|
|
La estimación se realiza solo después de que la temperatura del
|
|
disco haya aumentado cuatro veces, asegurando que haya suficientes
|
|
puntos de datos disponibles para establecer una tendencia confiable.
|
|
Esta temperatura constante predicha se muestra entre paréntesis junto
|
|
al valor actual y ayuda a evaluar si la refrigeración del sistema es
|
|
adecuada. Esta temperatura estimada es solo para fines informativos
|
|
y no tiene ningún efecto en el comportamiento de SnapRAID. Las
|
|
acciones del programa se basan únicamente en las temperaturas reales
|
|
medidas del disco.
|
|
|
|
Para realizar este análisis, SnapRAID necesita una referencia para la
|
|
temperatura del sistema. Primero intenta leerla de los sensores de
|
|
hardware disponibles. Si no se puede acceder a ningún sensor del
|
|
sistema, utiliza la temperatura del disco más baja medida al
|
|
comienzo de la ejecución como referencia de respaldo.
|
|
|
|
Normalmente, SnapRAID solo muestra la temperatura del disco más
|
|
caliente. Para mostrar la temperatura de todos los discos, use
|
|
la opción -A o --stats.
|
|
|
|
temp_sleep TIME_IN_MINUTES
|
|
Establece el tiempo de espera, en minutos, cuando se alcanza el
|
|
límite de temperatura. Durante este período, los discos permanecen
|
|
detenidos. El valor predeterminado es de 5 minutos.
|
|
|
|
pool DIR
|
|
Define el directorio de agrupación (pooling) donde se crea la vista
|
|
virtual del array de discos utilizando el comando `pool`.
|
|
|
|
El directorio ya debe existir.
|
|
|
|
share UNC_DIR
|
|
Define la ruta UNC de Windows requerida para acceder a los discos
|
|
de forma remota.
|
|
|
|
Si se especifica esta opción, los enlaces simbólicos creados en el
|
|
directorio pool utilizan esta ruta UNC para acceder a los discos.
|
|
Sin esta opción, los enlaces simbólicos generados utilizan solo
|
|
rutas locales, lo que no permite compartir el directorio pool a
|
|
través de la red.
|
|
|
|
Los enlaces simbólicos se forman utilizando la ruta UNC especificada,
|
|
agregando el nombre del disco como se especifica en la opción `data`,
|
|
y finalmente agregando el directorio y el nombre del archivo.
|
|
|
|
Esta opción solo es necesaria para Windows.
|
|
|
|
smartctl DISK/PARITY OPTIONS...
|
|
Define opciones personalizadas de smartctl para obtener los atributos
|
|
SMART de cada disco. Esto puede ser necesario para controladores
|
|
RAID y algunos discos USB que no se pueden detectar automáticamente.
|
|
El marcador de posición %s se reemplaza por el nombre del dispositivo,
|
|
pero es opcional para dispositivos fijos como controladores RAID.
|
|
|
|
DISK es el mismo nombre de disco especificado en la opción `data`.
|
|
PARITY es uno de los nombres de paridad: `parity`, `2-parity`,
|
|
`3-parity`, `4-parity`, `5-parity`, `6-parity` o `z-parity`.
|
|
|
|
En las OPCIONES especificadas, la cadena `%s` se reemplaza por
|
|
el nombre del dispositivo. Para los controladores RAID, el dispositivo
|
|
es probable que sea fijo y es posible que no necesite usar `%s`.
|
|
|
|
También puede especificar una cadena de opciones de información
|
|
personalizada mediante la etiqueta `[info: ...]` para sustituir
|
|
la opción `-a` predeterminada.
|
|
|
|
Consulte la documentación de smartmontools para conocer las posibles
|
|
opciones:
|
|
|
|
:https://www.smartmontools.org/wiki/Supported_RAID-Controllers
|
|
:https://www.smartmontools.org/wiki/Supported_USB-Devices
|
|
|
|
Por ejemplo:
|
|
|
|
:smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
:smartctl parity -d sat %s
|
|
|
|
smartignore DISK/PARITY ATTR [ATTR...]
|
|
Ignora el atributo SMART especificado al calcular la probabilidad
|
|
de fallo del disco. Esta opción es útil si un disco informa valores
|
|
inusuales o engañosos para un atributo en particular.
|
|
|
|
DISK es el mismo nombre de disco especificado en la opción `data`.
|
|
PARITY es uno de los nombres de paridad: `parity`, `2-parity`,
|
|
`3-parity`, `4-parity`, `5-parity`, `6-parity` o `z-parity`.
|
|
El valor especial * se puede usar para ignorar el atributo en todos
|
|
los discos.
|
|
|
|
Se pueden especificar múltiples atributos separados por espacios.
|
|
Cada atributo se puede especificar como un número del 1 al 255, o como un
|
|
nombre que no distingue entre mayúsculas y minúsculas (p. ej., `Current_Pending_Sector`).
|
|
|
|
Por ejemplo, para ignorar los atributos `Current Pending Sector Count` y
|
|
`Reallocated Sectors Count` en todos los discos por su número o nombre:
|
|
|
|
:smartignore * 197 5
|
|
:smartignore * Current_Pending_Sector Reallocated_Sector_Ct
|
|
|
|
Para ignorarlos solo en el primer disco de paridad:
|
|
|
|
:smartignore parity 197 5
|
|
|
|
Examples
|
|
Un ejemplo de una configuración típica para Unix es:
|
|
|
|
:parity /mnt/diskp/snapraid.parity
|
|
:content /mnt/diskp/snapraid.content
|
|
:content /var/snapraid/snapraid.content
|
|
:data d1 /mnt/disk1/
|
|
:data d2 /mnt/disk2/
|
|
:data d3 /mnt/disk3/
|
|
:exclude /lost+found/
|
|
:exclude /tmp/
|
|
:smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
:smartctl d2 -d usbjmicron %s
|
|
:smartctl parity -d areca,1/1 /dev/sg0
|
|
:smartctl 2-parity -d areca,2/1 /dev/sg0
|
|
|
|
Un ejemplo de una configuración típica para Windows es:
|
|
|
|
:parity E:\snapraid.parity
|
|
:content E:\snapraid.content
|
|
:content C:\snapraid\snapraid.content
|
|
:data d1 G:\array\
|
|
:data d2 H:\array\
|
|
:data d3 I:\array\
|
|
:exclude Thumbs.db
|
|
:exclude \$RECYCLE.BIN
|
|
:exclude \System Volume Information
|
|
:smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
:smartctl d2 -d usbjmicron %s
|
|
:smartctl parity -d areca,1/1 /dev/arcmsr0
|
|
:smartctl 2-parity -d areca,2/1 /dev/arcmsr0
|
|
|
|
Instantáneas (Snapshots)
|
|
Si la opción de instantánea está habilitada en la configuración, SnapRAID
|
|
utiliza la funcionalidad de instantáneas del sistema de archivos para garantizar operaciones atómicas
|
|
y consistentes.
|
|
|
|
La gestión de las instantáneas es completamente automática y transparente.
|
|
Puede continuar usando SnapRAID exactamente como antes, con la
|
|
protección adicional proporcionada por las instantáneas gestionadas completamente en
|
|
segundo plano.
|
|
|
|
Esto proporciona dos beneficios primordiales:
|
|
|
|
Consistencia - Los archivos modificados en el sistema de archivos activo durante un sync o scrub de
|
|
larga duración no causarán desajustes de paridad ni operaciones abortadas,
|
|
ya que SnapRAID ve una imagen congelada en el tiempo.
|
|
Recuperación - Si un archivo se actualiza o elimina del sistema de archivos activo,
|
|
permanece preservado en la instantánea. Si ocurre un fallo de disco
|
|
antes de que se ejecute el siguiente sync, SnapRAID utiliza los datos preservados
|
|
en la instantánea para reconstruir el disco fallido.
|
|
|
|
En caso de fallo de un disco durante un proceso de sync activo,
|
|
SnapRAID también es capaz de leer automáticamente tanto de la instantánea
|
|
del cómputo de paridad anterior como del actual.
|
|
Esto maximiza la probabilidad de una recuperación completa al
|
|
proporcionar acceso a los bloques de datos exactos requeridos para resolver
|
|
las ecuaciones de paridad, incluso si esos bloques fueron modificados
|
|
o eliminados entre syncs.
|
|
|
|
Sin instantáneas, un archivo actualizado o eliminado en un disco sano
|
|
da como resultado la pérdida de bloques de datos que pueden ser necesarios para
|
|
reparar otros discos fallidos.
|
|
|
|
Las instantáneas se crean solo para discos de datos y solo si el sistema de archivos
|
|
subyacente admite esta funcionalidad. Los discos de paridad siempre usan
|
|
el sistema de archivos activo.
|
|
|
|
Actualmente, esto es compatible con Btrfs, Bcachefs y ZFS en Linux
|
|
y con NTFS en Windows.
|
|
|
|
Puede mezclar discos de datos con diferentes sistemas de archivos. Solo aquellos que
|
|
admitan instantáneas las utilizarán, mientras que los demás discos continuarán
|
|
operando directamente en el sistema de archivos activo.
|
|
|
|
La creación y eliminación de instantáneas requieren privilegios administrativos.
|
|
Asegúrese de que SnapRAID se ejecute con los permisos necesarios (por ejemplo, sudo)
|
|
cuando las instantáneas estén habilitadas.
|
|
|
|
Comportamiento de comandos con instantáneas
|
|
Los comandos `sync` y `scrub` operan exclusivamente en instantáneas
|
|
para garantizar que todas las operaciones de datos se realicen contra un estado consistente
|
|
y congelado. Al utilizar estas instantáneas, SnapRAID evita desajustes de paridad
|
|
que de otro modo serian provocados por modificaciones de archivos concurrentes en el sistema de archivos activo.
|
|
Durante un `sync`, el comando utiliza una nueva instantánea creada al
|
|
inicio del proceso para capturar el estado actual para el cómputo de paridad.
|
|
Por el contrario, el comando `scrub` utiliza la última instantánea, la
|
|
creada durante el sync más reciente, para mantener un punto de referencia confiable
|
|
que coincida con la paridad existente.
|
|
|
|
Para los comandos `check` y `fix`, el uso de la última instantánea
|
|
depende de si se seleccionan discos específicos mediante la opción
|
|
-d, --filter-disk.
|
|
|
|
Un disco seleccionado explícitamente mediante -d (el "objetivo" de la operación)
|
|
siempre utiliza el sistema de archivos activo. Para `fix`, esto permite restaurar
|
|
datos en el reemplazo de disco activo. Para `check`, permite simular
|
|
la operación `fix` bajo las mismas condiciones.
|
|
|
|
Todos los demás discos de datos (los discos de "referencia") se accederán a través de
|
|
sus instantáneas. Esto garantiza que incluso si está modificando archivos
|
|
en sus discos sanos mientras se realiza una recuperación, SnapRAID
|
|
tenga una referencia estable y congelada para resolver las ecuaciones de paridad.
|
|
|
|
Si no se proporciona la opción -d, SnapRAID asume que la operación se aplica
|
|
a todo el array, en cuyo caso, `check` y `fix` usarán los sistemas
|
|
de archivos activos exclusivamente.
|
|
|
|
Todos los demás comandos funcionan exclusivamente en el sistema de archivos activo.
|
|
|
|
Ciclo de vida de las instantáneas (Snapshots Lifecycle)
|
|
SnapRAID gestiona dos instantáneas específicas, `stable` y `pending`,
|
|
dentro de un directorio oculto en la raíz de cada subvolumen de datos.
|
|
En Btrfs, Bcachefs y NTFS se utiliza el directorio `.snapraid/`,
|
|
en ZFS el estándar `.zfs/snapshot/`.
|
|
|
|
La instantánea `stable` representa el estado del último
|
|
`sync` completado con éxito, que contiene los datos exactos utilizados para
|
|
calcular la paridad actual. Sirve como fuente de datos principal
|
|
para los comandos `scrub`, `check` y `fix`.
|
|
|
|
La instantánea `pending` es una imagen temporal creada al inicio
|
|
de un `sync` para proporcionar un estado congelado para el cómputo de paridad.
|
|
Una vez completada con éxito la operación, la instantánea `stable` anterior
|
|
se elimina y la instantánea `pending` se promueve para
|
|
tomar su lugar como la nueva referencia estable.
|
|
|
|
Si un `sync` se interrumpe, la instantánea `pending` se conserva.
|
|
Los comandos posteriores `scrub`, `check` y `fix` utilizarán esta
|
|
instantánea pendiente, ya que coincide con el estado del sistema de archivos registrado en
|
|
el archivo .content, incluso si la paridad solo está parcialmente sincronizada.
|
|
|
|
En caso de interrupción de un `sync`, los comandos `check` y `fix`
|
|
también leen de la instantánea `stable` para recuperar bloques de datos
|
|
de archivos que se actualizaron o eliminaron durante el sync.
|
|
Esto es posible porque el archivo .content conserva los metadatos de
|
|
todos los archivos modificados o eliminados durante todo el proceso de sync.
|
|
Esta información histórica solo se borra una vez que el sync finaliza
|
|
con éxito y se guarda la versión final del archivo .content.
|
|
|
|
Si un `sync` se reinicia después de una interrupción, la instantánea pending existente
|
|
se elimina y se crea una nueva para
|
|
capturar el estado actual del sistema de archivos activo.
|
|
|
|
Patrones (Pattern)
|
|
Los patrones proporcionan una forma flexible de filtrar archivos para su inclusión o
|
|
exclusión. Al usar caracteres de globbing, puede definir reglas que coincidan con
|
|
nombres de archivos específicos o estructuras de directorios completas sin
|
|
enumerar cada ruta manualmente.
|
|
|
|
El signo de interrogación `?` coincide con cualquier carácter individual excepto el
|
|
separador de directorios. Esto lo hace útil para hacer coincidir nombres de archivos con
|
|
caracteres variables manteniendo el patrón limitado a un solo nivel de directorio.
|
|
|
|
El asterisco simple `*` coincide con cualquier secuencia de caracteres, pero al igual que el
|
|
signo de interrogación, nunca cruza los límites de los directorios. Se detiene en la
|
|
barra diagonal, lo que lo hace adecuado para buscar coincidencias dentro de un solo
|
|
componente de ruta. Este es el comportamiento estándar de los comodines familiar
|
|
del globbing de la shell.
|
|
|
|
el doble asterisco `**` es más potente, coincide con cualquier secuencia de
|
|
caracteres, incluidos los separadores de directorios. Esto permite que los patrones coincidan
|
|
a través de múltiples niveles de directorio. Cuando `**` aparece incrustado directamente en
|
|
un patrón, puede coincidir con cero o más caracteres, incluidas las barras diagonales entre
|
|
el texto literal circundante.
|
|
|
|
El uso más importante de `**` es en la forma especial `/**/`. Esta coincide con
|
|
cero o más niveles de directorio completos, lo que permite que los archivos coincidan
|
|
a cualquier profundidad en un árbol de directorios sin conocer la estructura exacta de la ruta.
|
|
Por ejemplo, el patrón `src/**/main.js` coincide con `src/main.js` (saltando
|
|
cero directorios), `src/ui/main.js` (saltando un directorio) y
|
|
`src/ui/components/main.js` (saltando dos directorios).
|
|
|
|
Las clases de caracteres que utilizan corchetes `[]` coinciden con un solo carácter de un
|
|
conjunto o rango especificado. Al igual que los otros patrones de un solo carácter,
|
|
no coinciden con los separadores de directorios. Las clases admiten rangos y negación mediante
|
|
un signo de exclamación.
|
|
|
|
La distinción fundamental que debe recordar es que `*`, `?` y las clases de caracteres
|
|
respetan los límites de los directorios y solo coinciden dentro de un único
|
|
componente de ruta, mientras que `**` es el único patrón que puede coincidir a través de
|
|
los separadores de directorios.
|
|
|
|
Hay cuatro tipos diferentes de patrones:
|
|
|
|
=FILE
|
|
Selecciona cualquier archivo llamado FILE.
|
|
Este patrón se aplica solo a archivos, no a directorios.
|
|
|
|
=DIR/
|
|
Selecciona cualquier directorio llamado DIR y todo lo que hay dentro.
|
|
Este patrón se aplica solo a directorios, no a archivos.
|
|
|
|
=/PATH/FILE
|
|
Selecciona la ruta exacta del archivo especificado. Este patrón se aplica
|
|
solo a archivos, no a directorios.
|
|
|
|
=/PATH/DIR/
|
|
Selecciona la ruta exacta del directorio especificado y todo lo que hay
|
|
dentro. Este patrón se aplica solo a directorios, no a archivos.
|
|
|
|
Cuando especifica una ruta absoluta que comienza con /, se aplica
|
|
en el directorio raíz del array, no en el directorio raíz del
|
|
sistema de archivos local.
|
|
|
|
En Windows, puede usar la barra invertida \ en lugar de la barra /.
|
|
Los directorios del sistema de Windows, las uniones, los puntos de
|
|
montaje y otros directorios especiales de Windows se tratan como
|
|
archivos, lo que significa que para excluirlos, debe usar una regla
|
|
de archivo, no una de directorio.
|
|
|
|
Si el nombre del archivo contiene un carácter `*`, `?`, `[`,
|
|
o `]`, debe escaparlo para evitar que se interprete como un
|
|
carácter globbing. En Unix, el carácter de escape es `\`;
|
|
en Windows, es `^`. Cuando el patrón está en la línea de comandos,
|
|
debe duplicar el carácter de escape para evitar que sea
|
|
interpretado por el shell de comandos.
|
|
|
|
En el archivo de configuración, puede usar diferentes estrategias
|
|
para filtrar los archivos a procesar.
|
|
El enfoque más simple es usar solo reglas `exclude` para
|
|
eliminar todos los archivos y directorios que no desea procesar.
|
|
Por ejemplo:
|
|
|
|
:# Excluye cualquier archivo llamado `*.unrecoverable`
|
|
:exclude *.unrecoverable
|
|
:# Excluye el directorio raíz `/lost+found`
|
|
:exclude /lost+found/
|
|
:# Excluye cualquier subdirectorio llamado `tmp`
|
|
:exclude tmp/
|
|
|
|
El enfoque opuesto es definir solo los archivos que desea procesar,
|
|
utilizando solo reglas `include`. Por ejemplo:
|
|
|
|
:# Incluye solo algunos directorios
|
|
:include /movies/
|
|
:include /musics/
|
|
:include /pictures/
|
|
|
|
El enfoque final es mezclar reglas `exclude` e `include`. En este
|
|
caso, el orden de las reglas es importante. Las reglas anteriores
|
|
tienen precedencia sobre las posteriores.
|
|
Para simplificar, puede enumerar todas las reglas `exclude` primero
|
|
y luego todas las reglas `include`. Por ejemplo:
|
|
|
|
:# Excluye cualquier archivo llamado `*.unrecoverable`
|
|
:exclude *.unrecoverable
|
|
:# Excluye cualquier subdirectorio llamado `tmp`
|
|
:exclude tmp/
|
|
:# Incluye solo algunos directorios
|
|
:include /movies/
|
|
:include /musics/
|
|
:include /pictures/
|
|
|
|
En la línea de comandos, usando la opción -f, solo puede usar
|
|
patrones `include`. Por ejemplo:
|
|
|
|
:# Verifica solo los archivos .mp3.
|
|
:# En Unix, use comillas para evitar la expansión globbing por el shell.
|
|
:snapraid -f "*.mp3" check
|
|
|
|
En Unix, al usar caracteres globbing en la línea de comandos, debe
|
|
ponerlos entre comillas para evitar que el shell los expanda.
|
|
|
|
Ignorar Archivos (Ignore File)
|
|
Además de las reglas globales en el archivo de configuración, puedes
|
|
colocar archivos `.snapraidignore` en cualquier directorio dentro del array
|
|
para definir reglas de exclusión descentralizadas.
|
|
|
|
Las reglas definidas en `.snapraidignore` se aplican después de las reglas del
|
|
archivo de configuración. Esto significa que tienen una prioridad más alta y pueden
|
|
usarse para excluir archivos que fueron incluidos previamente por la configuración
|
|
global. Efectivamente, si una regla local coincide, el archivo se excluye
|
|
independientemente de los ajustes de inclusión globales.
|
|
|
|
La lógica de patrones en `.snapraidignore` refleja la configuración global
|
|
pero ancla los patrones al directorio donde se encuentra el archivo:
|
|
|
|
=FILE
|
|
Selecciona cualquier archivo llamado FILE en este directorio o por debajo.
|
|
Esto sigue las mismas reglas de globbing que el patrón global.
|
|
|
|
=DIR/
|
|
Selecciona cualquier directorio llamado DIR y todo su contenido,
|
|
ubicado en este directorio o por debajo.
|
|
|
|
=/PATH/FILE
|
|
Selecciona el archivo exacto especificado relativo a la ubicación
|
|
del archivo `.snapraidignore`.
|
|
|
|
=/PATH/DIR/
|
|
Selecciona el directorio exacto especificado y todo su contenido,
|
|
relativo a la ubicación del archivo `.snapraidignore`.
|
|
|
|
A diferencia de la configuración global, los archivos `.snapraidignore` solo admiten
|
|
reglas de exclusión; no se pueden usar patrones `include` o negación (!).
|
|
|
|
Por ejemplo, si tienes un `.snapraidignore` en `/mnt/disk1/projects/`:
|
|
|
|
:# Excluye SOLO /mnt/disk1/projects/output.bin
|
|
:/output.bin
|
|
:# Excluye cualquier directorio llamado `build` dentro de projects/
|
|
:build/
|
|
:# Excluye cualquier archivo .tmp dentro de projects/ o sus subcarpetas
|
|
:*.tmp
|
|
|
|
Contenido (Content)
|
|
SnapRAID almacena la lista y las sumas de comprobación de sus
|
|
archivos en el archivo de contenido.
|
|
|
|
Es un archivo binario que enumera todos los archivos presentes en
|
|
su array de discos, junto con todas las sumas de comprobación para
|
|
verificar su integridad.
|
|
|
|
El archivo de contenido es leído y escrito por los comandos `sync`,
|
|
`scrub`, `touch` y `rehash`. Es leído por los comandos `status`, `diff`,
|
|
`check`, `fix`, `list`, `dup`, `locate` y `pool`, y es completamente
|
|
ignorado por los comandos `smart`, `probe`, `up`, `down` y `devices`.
|
|
|
|
Paridad (Parity)
|
|
SnapRAID almacena la información de paridad de su array en los
|
|
archivos de paridad.
|
|
|
|
Estos son archivos binarios que contienen la paridad calculada
|
|
de todos los bloques definidos en el archivo `content`.
|
|
|
|
Estos archivos son leídos y escritos por los comandos `sync` y `fix`
|
|
y solo leídos por los comandos `scrub` y `check`.
|
|
|
|
Codificación (Encoding)
|
|
SnapRAID en Unix ignora cualquier codificación. Lee y almacena los
|
|
nombres de archivo con la misma codificación utilizada por el sistema
|
|
de archivos.
|
|
|
|
En Windows, todos los nombres leídos del sistema de archivos se
|
|
convierten y procesan en formato UTF-8.
|
|
|
|
Para que los nombres de archivo se impriman correctamente, debe
|
|
configurar la consola de Windows en modo UTF-8 con el comando
|
|
`chcp 65001` y usar una fuente TrueType como `Lucida Console`
|
|
como fuente de la consola. Esto afecta solo a los nombres de
|
|
archivo impresos; si redirige la salida de la consola a un archivo,
|
|
el archivo resultante siempre está en formato UTF-8.
|
|
|
|
Código de salida (Exit Code)
|
|
SnapRAID termina con los siguientes códigos de error:
|
|
|
|
0 - Todo bien.
|
|
1 - El comando encontró algunos errores.
|
|
2 - El comando `diff` determinó que todo está bien, pero se necesita un `sync`.
|
|
|
|
Traducción (Translation)
|
|
Este documento es una traducción automática del manual en inglés.
|
|
Consulte el manual en inglés para obtener la versión oficial.
|
|
|
|
Copyright
|
|
Este archivo es Copyright (C) 2026 Andrea Mazzoleni
|
|
|
|
Véase también (See Also)
|
|
snapraid_log(1), snapraidd(1), rsync(1)
|