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

https: //community.nxp. com / thread / 334536 # comment-453692

ошибка связана с проблемой при перепрошивке платы, которая :

  1. вы неправильно прошиваете новое изображение - вы не стираете целиком flash

  2. вы запускаете новое изображение - стирая только те блоки стирания, где вы пишете, но не стирая остальную часть стирания блока.

Я могу представить, что это произойдет, если

  • вы пропустили nand erase или
  • вы написали изображение с N блоками, помеченными как плохие на NAND, а затем впоследствии записали то же изображение, но с N- 1 блок помечен как плохой на NAND. После окончания текущего изображения в конце предыдущего изображения останется 1 блок, который не будет перезаписан.

2
13.04.2017, 17:34
2 ответа

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

ПРИМЕЧАНИЕ. В FAQ по 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 устройства , для записи данного блока требуется только запись в 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, охватывающий три диска. Я также удалил файл размером 2 ГБ, и он действительно был доступен со всех трех дисков. Мой 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
27.01.2020, 21:59

Том теперь использует все диски. Я думаю, предположение Раббана должно быть правильным. Поскольку первые два диска больше третьего, «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
2
27.01.2020, 21:59

Теги

Похожие вопросы