Estoy reemplazando un disco duro fallido en un btrfs reflejado.
btrfs device delete missing /[mountpoint]
está tomando muy larga, así que supongo que en realidad es el reequilibrio de datos a través de la unidad de repuesto.
¿Hay alguna forma de monitorear el progreso de tal operación?
No necesariamente espero una GUI bonita, o incluso un contador%; y estoy dispuesto a escribir un par de líneas de script de shell si es necesario, pero ni siquiera sé por dónde empezar a buscar datos relevantes. btrfs filesystem show
por ejemplo, simplemente se cuelga, presumiblemente esperando que finalice la operación de la balanza antes de que muestre cualquier información sobre el espejo reflejado.
Balance on '/volume1' is running
28 out of about 171 chunks balanced (1156 considered), 84% left
. Inusualmente, el porcentaje cuenta atrás.esto generará algo así:
Y si notas que la identificación del dispositivo # 4 se ve un poco diferente al resto. cuando haces "btrfs device delete missing / mntpoint", entonces comenzará a regenerar los meta / datos de raid necesarios para liberar esa unidad "faltante".
si haces algo como
entonces puede ver que el espacio en el dispositivo ofensivo "perdido" gradualmente se hace más y más pequeño hasta que la operación se completa y se eliminará del fi.
fuente
BTRFS puede tardar un tiempo en leer o reorganizar los datos antes de escribirlos en la unidad en la que espera que escriban.
Puede ver cuánto tiempo de CPU se dedica a las operaciones BTRFS, incluido el reequilibrio, agregar, eliminar, convertir, etc.
Para ver qué tan ocupada está cada unidad, instale sysstat y ejecute:
Agregue algunas opciones para hacer que iostat muestre estadísticas en megabytes y actualice cada 30 segundos:
Salida de muestra de scrub para que no se escriba durante este intervalo:
Instale y ejecute munin para ver gráficos históricos de la actividad de la unidad y mucha otra información. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04
fuente
También me preguntaba cuándo terminaría una eliminación duradera, así que se me ocurrió este pequeño código de shell:
Esto te dará una buena barra de progreso como esta:
La idea general es usar
pv
para mostrar el progreso. Dado que ese comando solo permite monitorear los bytes que fluyen a través de una tubería que usamosdd
para generar una cantidad adecuada de ceros y canalizarlospv
.La ventaja de este método es que obtienes una buena barra de progreso. Sin embargo, dado que parece que
btrfs
siempre elimina los datos de un GB a la vez, lleva algún tiempo hasta que se pueda observar una nueva diferencia en el tamaño de los bytes.Para solucionar este problema, el indicador
-a
se agrega a los indicadores predeterminados depv
para que muestre una velocidad de transmisión promedio (ya que la velocidad de transmisión actual normal será 0 la mayor parte del tiempo).Me doy cuenta de que esta no es la mejor solución, sino la mejor que se me ocurrió. Si alguien tiene ideas para mejoras, ¡hágamelo saber! :)
fuente