btrfs raid1 не использует все диски?

btrfs raid1 не использует все диски?

У меня есть Btrfs raid1 с 3 дисками на Ubuntu 16.04. Однако, похоже, используются только 2 диска вместо всех 3. Как это исправить?

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

Я попробовал запустить фильтр преобразования, но /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

Сначала при установке сервера Ubuntu был только 1 диск. Потом я добавил диск и преобразовал в raid1. Потом я добавил третий диск /dev/sdb3 и снова попытался сбалансировать. Третий диск не используется.

root@one:~# btrfs --version
btrfs-progs v4.4

Я могу без проблем смонтировать /dev/sdb3.

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

решение1

РЕДАКТИРОВАТЬ:

Обратите вниманиеЧасто задаваемые вопросы о btrfsутверждает следующее, как прокомментировал @jeff-schaller (выделено мной):

btrfs поддерживает RAID-0, RAID-1 и RAID-10. Начиная с Linux 3.9, btrfs также поддерживает RAID-5 и RAID-6, хотя этот код все еще экспериментальный.

btrfs сначала объединяет все устройства в пул хранения, а затем дублирует фрагменты по мере создания файловых данных. RAID-1 в настоящее время определяется как "2 копии всех данных на разных устройствах". Это отличается от MD-RAID и dmraid тем, что они делают ровно n копий для n устройств. В btrfs RAID-1 натри устройства по 1 ТБ мы получаем 1,5 ТБ полезных данных. Потому чтокаждый блок копируется только на 2 устройствадля записи заданного блока требуется всего лишь два устройства для записи; чтение может осуществляться только с одного.

RAID-0 определяется аналогичным образом, при этом полоса распределяется по максимально возможному количеству устройств. 3 устройства по 1 ТБ обеспечивают 3 ТБ полезного пространства, но не обеспечивают никакой избыточности.

RAID-10 построен на основе этих определений. Каждая полоса разделена ровно на 2 набора RAID-1, и эти наборы RAID-1 записаны ровно на 2 устройства (отсюда минимум 4 устройства). Том btrfs RAID-10 с 6 устройствами по 1 ТБ даст 3 ТБ полезного пространства с 2 копиями всех данных.

У меня нет достаточно больших дисков под рукой, чтобы проверить это в данный момент, но я просто предполагаю, что, поскольку у вас относительно большие диски, btrfs просто решила записывать данные на первые два диска до сих пор. Я ожидаю, что это изменится в будущем, поскольку на диски будет записываться больше данных.

Если вам интересны мои тесты с дисками меньшего размера:

Я установил Ubuntu Server 16.04 LTS на виртуальную машину с одним диском SATA, установил ОС на один раздел btrfs.

Затем я добавил еще один диск SATA, разбил его на разделы, запустил btrfs device add /dev/sdb1 /, а затем сбалансировал его, преобразуя в raid1 с помощьюbtrfs balance start -dconvert=raid1 -mconvert=raid1 /

Я повторил для устройства /dev/sdc1. Результат для меня тот же - у меня btrfs, охватывающий три диска. Я также разместил файл размером 2GiB, и он действительно был доступен со всех трех дисков. Мой btrfs fi shпоказывает следующее:

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

Как вы назвали mkfs.btrfs? Какая у вас версия btrfs-progs?

# btrfs --version
btrfs-progs v4.4

Я не могу воспроизвести вашу ситуацию. Что произойдет, если вы попытаетесь смонтировать /dev/sdb3?

Если у вас есть виртуальная машина или запасной диск для экспериментов с разделами, создайте 3 раздела и попробуйте следующее.

Я создал виртуальную машину Ubuntu 16.04 и разбил /dev/vda на три раздела по 2 ГБ каждый.

# 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

Попробуйте смонтировать /dev/vda1, записать на него файл, затем смонтировать /dev/vda2 или /dev/vda3 и проверить, есть ли там файл (он определенно должен быть).

PS: Я сначала попробовал это на Arch с btrfs-progs версии 4.10.2 с теми же результатами, но подумал, что, возможно, Ubuntu 16.04 поставляется со старой версией, которая может вести себя по-другому. Оказалось, что она поставляется с v4.4, но, похоже, ведет себя так же в отношении создания файловой системы и зеркалирования и т. д.

решение2

Том теперь использует все диски. Думаю, предположение Раббана должно быть верным. Поскольку первые два диска больше третьего, «btrfs просто решила записать данные на первые два диска до сих пор».

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

Связанный контент