Acerca de los perfiles BTRFS
Una de las excelentes características de BTRFS es la capacidad de usar los diferentes perfiles de RAID. Dado que BTRFS almacena los datos y los metadatos por separado, puede rayar los datos a través de los discos como RAID0 y reflejar todos los metadatos como RAID1. Esta redundancia en los metadatos requiere poco espacio extra. Y esto se recomienda en las configuraciones BTRFS RAID0.
Siempre se ha sugerido duplicar los metadatos, incluso en un solo disco, ya que perder los metadatos significa perder los datos también.
BTRFS puede cambiar un perfil RAID en un sistema en vivo, convirtiendo los datos y los metadatos para proporcionar (o eliminar) la redundancia. Esto ocurre con un balance. Un balance de BTRFS reescribe todos los bloques del sistema de archivos y se ajusta para que coincida con los nuevos perfiles como lo hace.
El bicho
Intenté cambiar el perfil de metadatos en mi disco único desde soltero a hacer para la redundancia.
$ sudo btrfs saldo inicio -mconvert = dup /mnt
El sistema de archivos inmediatamente entró en un estado de solo lectura. El sistema cayó. Cuando se reinició, no pude superar los initramfs de recuperación. No se pueden escribir datos en el disco.
Cuando se interrumpe una operación de equilibrio en el sistema de archivos BTRFS, se reanuda automáticamente la próxima vez que se monte el sistema de archivos. Esto generalmente se puede detener con:
$ sudo monte -o skip_balance, rw /dev /sdx /mnt
Luego, cancele si es necesario usar el siguiente comando:
$ sudo btrfs saldo cancelar /mnt
Sin embargo, el error no solo hizo que el equilibrio se bloqueara, sino que se ignoraron las opciones de montaje para evitar que continúe. Cada vez que se monta el sistema de archivos, el saldo intenta reanudar. Falló y el sistema de archivos pasó a solo lectura. Si encuentra esto, debe iniciar cualquier distribución usando un kernel más antiguo. En mi caso, fue arco con 4.18.
Monte el sistema de archivos con el Kenel más antiguo:
$ sudo monte -o skip_balance, rw /dev /sdx /mnt
Cancelar el saldo:
$ sudo btrfs saldo cancelar /mnt
Realice el saldo nuevamente:
$ sudo btrfs saldo inicio -mconvert = dup /mnt
Una vez que se completa el saldo, puede iniciar de forma segura en un núcleo más nuevo, ahora con metadatos duplicados en el sistema de archivos. Verifique los perfiles utilizados por el sistema de archivos. Verá que tiene dos copias de los metadatos de FileSytem y solo una copia de los datos:
$ sudo BTRFS FI Uso
Conclusión
BTRFS es un sistema de archivos increíble capaz de muchas opciones avanzadas. Sin embargo, al usar BTRFS, debe tener copias de seguridad de trabajo, así como un núcleo de arranque de una distribución LTS para el rescate del sistema. Aunque un equilibrio se puede ejecutar en un sistema de archivos raíz montado, no siempre se recomienda hacer esto. Todavía hay muchos errores en el sistema de archivos. Debe estar preparado para un rescate del sistema de archivos cuando el módulo BTRFS no se haya probado completamente contra los núcleos de borde de sangrado.