У меня есть 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