Tengo un Btrfs raid1 con 3 discos en Ubuntu 16.04. Sin embargo, parece que sólo se utilizan 2 discos en lugar de los 3. ¿Cómo debería solucionar este problema?
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.77GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
Intenté ejecutar un filtro de conversión pero aún no se utiliza /dev/sdb3.
root@one:~# btrfs balance start -dconvert=raid1 -mconvert=raid1 /top/raid/
Done, had to relocate 112 out of 112 chunks
root@one:~# btrfs fi df /top/raid/
Data, RAID1: total=55.00GiB, used=54.40GiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=1.00GiB, used=373.06MiB
GlobalReserve, single: total=128.00MiB, used=0.00B
Al principio, solo hay 1 disco durante la instalación del servidor Ubuntu. Luego agregué un disco y lo convertí a raid1. Luego agregué un tercer disco /dev/sdb3 e intenté equilibrarlo nuevamente. El tercer disco no se está utilizando.
root@one:~# btrfs --version
btrfs-progs v4.4
Puedo montar /dev/sdb3 muy bien.
root@one:~# mount /dev/sdb3 /mnt
root@one:~# ll /mnt
total 16
drwxr-xr-x 1 root root 74 Apr 13 09:37 ./
drwxr-xr-x 1 root root 200 Apr 12 21:19 ../
drwxr-xr-x 1 root root 200 Apr 12 21:19 @/
drwxr-xr-x 1 root root 152 Apr 12 15:31 @home/
drwxrwx--t 1 root root 36 Apr 13 09:38 @samba/
root@one:~# btr fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.82GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
Respuesta1
EDITAR:
Nota laPreguntas frecuentes sobre btrfsafirma lo siguiente, según lo comentado por @ jeff-schaller (el énfasis es mío):
btrfs admite RAID-0, RAID-1 y RAID-10. A partir de Linux 3.9, btrfs también admite RAID-5 y RAID-6, aunque ese código aún es experimental.
btrfs primero combina todos los dispositivos en un grupo de almacenamiento y luego duplica los fragmentos a medida que se crean los datos del archivo. RAID-1 se define actualmente como "2 copias de todos los datos en diferentes dispositivos". Esto difiere de MD-RAID y dmraid, en que hacen exactamente n copias para n dispositivos. En un btrfs RAID-1 entres dispositivos de 1 TB obtenemos 1,5 TB de datos utilizables. Porquecada bloque solo se copia en 2 dispositivos, escribir un bloque determinado solo requiere escribir exactamente en 2 dispositivos; La lectura se puede realizar a partir de uno solo.
RAID-0 se define de manera similar, con la franja dividida en tantos dispositivos como sea posible. Los dispositivos de 3 × 1 TB producen 3 TB de espacio utilizable, pero no ofrecen ninguna redundancia.
RAID-10 se basa en estas definiciones. Cada franja se divide en exactamente 2 conjuntos RAID-1 y esos conjuntos RAID-1 se escriben en exactamente 2 dispositivos (por lo tanto, un mínimo de 4 dispositivos). Un volumen btrfs RAID-10 con dispositivos de 6 × 1 TB producirá 3 TB de espacio utilizable con 2 copias de todos los datos.
No tengo unidades lo suficientemente grandes a mano para probar esto en este momento, pero mi especulación es simplemente que, dado que tiene unidades relativamente grandes, btrfs simplemente eligió escribir los datos en las dos primeras unidades hasta el momento. Espero que eso cambie en el futuro a medida que se escriban más datos en las unidades.
En caso de que esté interesado en mis pruebas con unidades más pequeñas:
Instalé Ubuntu Server 16.04 LTS en una máquina virtual con una sola unidad SATA, instalé el sistema operativo en una sola partición btrfs.
Luego agregué otra unidad SATA, la particioné, ejecuté btrfs device add /dev/sdb1 /
y luego la equilibré mientras la convertía a raid1 conbtrfs balance start -dconvert=raid1 -mconvert=raid1 /
Repetí para el dispositivo /dev/sdc1. El resultado para mí es el mismo: tengo un btrfs que abarca tres unidades. También ubiqué un archivo de 2GiB y, de hecho, era accesible desde los tres discos. Mi btrfs fi sh
muestra lo siguiente:
Label: none uuid: cdfe192c-36da-4a3c-bc1a-74137abbb190
Total devices 3 FS bytes used 3.07GiB
devid 1 size 10.00GiB used 5.25GiB path /dev/sda1
devid 2 size 10.00GiB used 5.03GiB path /dev/sdb1
devid 3 size 8.00GiB used 2.28GiB path /dev/sdc1
¿Cómo llamaste a mkfs.btrfs? ¿Cuál es tu versión de btrfs-progs?
# btrfs --version
btrfs-progs v4.4
No puedo reproducir tu situación. ¿Qué sucede si intentas montar /dev/sdb3?
Si tiene una máquina virtual o un disco de repuesto para jugar con la partición, cree 3 particiones e intente lo siguiente.
Creé una máquina virtual Ubuntu 16.04 y particioné /dev/vda en tres particiones de 2GiB cada una.
# mkfs.btrfs -d raid1 -m raid1 /dev/vda{1..3}
Label: (null)
UUID: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Node size: 16384
Sector size: 4096
Filesystem size: 6.00GiB
Block group profiles:
Data: RAID1 315.12MiB
Metadata: RAID1 315.12MiB
System: RAID1 12.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 3
Devices:
ID SIZE PATH
1 2.00GiB /dev/vda1
2 2.00GiB /dev/vda2
3 2.00GiB /dev/vda3
# btrfs fi sh
Label: none uuid: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Total devices 3 FS bytes used 112.00KiB
devid 1 size 2.00GiB used 614.25MiB path /dev/vda1
devid 2 size 2.00GiB used 315.12MiB path /dev/vda2
devid 3 size 2.00GiB used 315.12MiB path /dev/vda3
Intente montar /dev/vda1, escribirle un archivo, luego montar /dev/vda2 o /dev/vda3 y verificar si el archivo está allí (definitivamente debería estarlo).
PD: Probé esto por primera vez en Arch con btrfs-progs versión 4.10.2 con los mismos resultados, pero pensé que probablemente Ubuntu 16.04 viene con una versión anterior que podría comportarse de manera diferente. Resulta que viene con la versión 4.4, pero parece comportarse igual con respecto a la creación y duplicación del sistema de archivos, etc.
Respuesta2
El volumen ahora está usando todos los discos. Supongo que la especulación de Rabban debería ser correcta. Dado que los dos primeros discos son más grandes que el tercero, "btrfs simplemente eligió escribir los datos en las dos primeras unidades hasta el momento".
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 151.00GiB
devid 1 size 2.73TiB used 148.03GiB path /dev/sda2
devid 2 size 2.73TiB used 148.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 8.00GiB path /dev/sdb3
root@one:~# btrfs dev usage /
/dev/sda2, ID: 1
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB
/dev/sdb3, ID: 3
Device size: 2.59TiB
Data,RAID1: 8.00GiB
Unallocated: 2.58TiB
/dev/sdc2, ID: 2
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB