¿Puede una unidad Btrfs fallida en RAID-1 ser reemplazada en vivo?

15

Estoy tratando de decidir sobre un sistema de archivos y me gustaría saber si es posible reemplazar una unidad fallida en btrfs RAID sin tiempo de inactividad.

  1. Supongamos que creo un nuevo sistema de archivos btrfs usando el comando

    mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
    
  2. Ahora supongamos que un día /dev/sdcfalla. Hay dos posibilidades: puede fallar gradualmente y mostrar errores INTELIGENTES; en esta situación, puedo agregar un nuevo dispositivo con btrfs device add /dev/sde /mnt; btrfs filesystem balance /mnty luego eliminar el anterior con btrfs device delete /dev/sdc /mnt.

  3. Pero si de repente falla, se vuelve ilegible ... Una búsqueda en la web dice que en esta situación primero debo desmontar el sistema de archivos, montarlo en modo degradado, agregar un nuevo dispositivo y luego quitar el dispositivo que falta.

    umount /mnt
    mount -o degraded /dev/sdb /mnt
    btrfs device add /dev/sdf /mnt 
    btrfs device delete missing /mnt
    

Un desmontaje es obviamente una operación disruptiva, por lo que habría tiempo de inactividad: cualquier aplicación que use el sistema de archivos obtendría un error de E / S. Pero este tipo de "tutoriales" en btrfs parecen anticuados, teniendo en cuenta que btrfs está en desarrollo.

La pregunta es: considerando el estado actual de btrfs, ¿es posible hacer esto en línea, es decir, sin desmontar?

Si no, ¿hay una solución solo de software que pueda satisfacer esta necesidad?

Nada es imposible
fuente
1
Si una unidad se incendia, el resto de su sistema probablemente también esté en llamas
Journeyman Geek
1
@JourneymanGeek Funny you .. :) Solo quería dejar muy claro que me refería a una falla catastrófica, repentina e impredecible: la unidad simplemente deja de funcionar. Esto es bastante raro, disco duro suele fallar gradualmente y con la supervisión efectiva puedo reemplazarlos antes de eso, pero lo que si ...
NothingsImpossible
2
En Linux 3.8 btrfs replace mountpoint old_disk new_diskse agregó.
Brian
@Brian Woow ... Esa es la respuesta. Busqué en Google "btrfs replace" y apareció lwn.net/Articles/524589 . Es exactamente lo que estaba buscando. Publíquelo como respuesta para que pueda aceptarlo.
Nada

Respuestas:

11

En Linux 3.8, btrfs replace mountpoint old_disk new_diskse agregó. Si está ejecutando un kernel reciente, proporcionará la funcionalidad que está buscando.

Brian
fuente
44
Esto ahora sería btrfs replace start /dev/old /dev/new /mountpoint( se ha agregado el inicio ). También vea man btrfs-replace.
basic6
1

pequeña corrección, la sintaxis actual es:

btrfs reemplaza inicio OLDDEV NEWDEV MOUNTPOINT

que luego fondos.

Puede verificar el estado con

btrfs reemplaza el estado MOUNTPOINT

que le mostrará un estado continuamente actualizado de la operación de reemplazo.

Volker
fuente
1
Esta no es una respuesta a la pregunta original. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación .
DavidPostill