Tengo un sistema de archivos BTRFS existente compuesto por un disco de 500GB y acabo de comprar un disco de 2TB para aumentar la capacidad de almacenamiento de mi servidor doméstico y quiero agregar el nuevo disco al sistema de archivos existente. Por lo que leí, parece que ninguna configuración de BTRFS puede manejar discos de diferentes tamaños sin desperdiciar la diferencia de tamaño entre el disco más grande y el más pequeño, pero soy nuevo en BTRFS y es posible que me haya perdido algo, por lo que hay una configuración que me permite combinar dos discos en un sistema de archivos sin perder espacio?
14
Respuestas:
Btrfs puede usar diferentes niveles de incursión para datos y metadatos:
el valor predeterminado (incluso para un disco) es raid1 para los metadatos (directorios, etc.) y raid0 para los datos.
Si no cambió esto, es probable que no tenga problemas para agregar el segundo disco y volver a equilibrar. porque solo los metadatos se copiarán en ambos discos (puede ver el tamaño de sus metadatos con
btrfs filesystem df /
). Solo tenga en cuenta que si alguno de sus discos falla, perderá datos.debido a que el disco de 2tb es muuuuucho más grande que los 500g, quizás le daría mejores probabilidades si agrega el nuevo y luego elimina el anterior (las probabilidades de que falle una unidad específica son mucho menores que las probabilidades de cualquiera de las unidades defecto).
si planea tener una matriz de incursiones más tarde (con unidades de tamaño más similar), puede volver a crear el sistema de archivos en la nueva unidad con raid1 para datos y metadatos y luego copiar todo. luego, cuando tenga más dinero, compre la segunda unidad de 2tb.
ps: el uso de raid1 en una unidad individual significa que los datos se almacenarán en dos ubicaciones en esa unidad (para proteger contra la corrupción) y reducirá el espacio de almacenamiento (es una muy buena idea para los metadatos).
pss: en serio, no sientas la tentación de no usar raid1 para metadatos. psss: hay una muy buena posibilidad de que btrfs obtenga la capacidad de cambiar los niveles de ataque dinámicamente.
fuente
Depende de qué perfil utilice para los bloques de datos del sistema de archivos Btrfs de dispositivos múltiples.
Cuando utiliza RAID0 (el valor predeterminado para los bloques de datos), cada disco solo puede llenarse hasta la capacidad del disco más pequeño de la matriz.
Cuando utiliza el perfil "único" para los bloques de datos, cada disco se llenará hasta su capacidad máxima. p.ej
mkfs.btrfs -d single /dev/sda /dev/sdb
Tengo un servidor de archivos con un disco de 2TB y 3TB. Arranca Ubuntu 12.10 desde una unidad flash USB. Primero creé el sistema de archivos Btrfs sin la
-d single
opción:El resultado fue que solo podía almacenar alrededor de 4 TB (3.45 datos de archivo binario TB).
Tenga en cuenta el
used 1.82TB
para la unidad de 3 TB.Luego utilicé el comando "balance" para convertir los bloques de datos de RAID0 al perfil "único":
Se tardó mucho tiempo (aproximadamente 30 horas) en equilibrar los datos de 4 TB. Pero después de que se completó, pude usar los 5 TB completos (4.36 datos binarios del archivo TB).
fuente
He usado múltiples dispositivos con btrfs en Ubuntu, y ha funcionado bien. Tenga en cuenta que btrfs no implementa niveles RAID estándar. Implementa franjas y reflejos opcionales, pero no RAID verdadero.
fuente
Es posible combinar unidades con diferentes tamaños en btrfs.
Pero actualmente btrfs no maneja muy bien ENOSPC (no queda espacio en el dispositivo).
Por ejemplo, instalé 3 unidades en una matriz RAID0 (rayada). 1x500GB, 1x250GB, 1x160GB.
Asumiría que tendrá un espacio en disco entre 800-900GB.
Esto es lo que
df -h
muestra:/ dev / sdf 848G 615G 234G 73% / media / btrfs
Pero no puedo almacenar más datos en la matriz. (No hay espacio)
btrfs filesystem df /media/btrfs
me muestra esto:Datos: total = 612.51GB, usado = 612.51GB
Metadatos: total = 1.62GB, usado = 990.73MB
Sistema: total = 12.00MB, usado = 48.00KB
Incluso el reequilibrio no ayudó.
En una lista de correo vi este callculation:
tamaño de la unidad más pequeña * número de unidades en la matriz
(aunque tengo más espacio: 612 GB en lugar de 160 GB * 3 = 480 GB)
Por lo tanto, en el estado actual de desarrollo, es probable que no pueda usar todo el espacio que tiene, aunque btrfs admite diferentes tamaños en una matriz.
Estoy usando Ubuntu 10.10 con el kernel 2.6.35-22-generic.
fuente
actualización: la respuesta a continuación se escribió antes de que se lanzara Linux 3.0. Linux 3.0 incluye el parche cuasi-round-robin.
Cuando realiza la duplicación o división de datos, el segundo reflejo o fragmento de banda debe asignarse en otro dispositivo con espacio libre. BTRFS asigna trozos a los dispositivos de forma circular, lo que puede causar la pérdida de espacio si tiene dispositivos de diferentes tamaños.
Hay un parche cuasi-round-robin en la tubería para mejorar esto. Por supuesto, aún es imposible emparejar todos los fragmentos en diferentes dispositivos si tiene un disco de 500 GB y un disco de 2 TB. El parche está destinado más a situaciones como 1 x 1TB + 2 x 500GB donde cada disco pequeño debería preferir duplicar / rayar con el disco grande en lugar del otro disco pequeño.
En su situación, simplemente usaría el modo "único" para sus datos (
mkfs.btrfs -d single
). Los fragmentos no están emparejados en ese modo, por lo que creo que no habría problemas con dispositivos de diferentes tamaños. Sin embargo, no lo he probado.fuente
Este problema solo se aplica a las configuraciones de btrfs-raid1, desde la página Gotchas :
fuente