Вы загрузчик восстанавливаете не правильно. Это к btrfs отношения не имеет. Надо делать через chroot.
https://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
Я попробовал все методы описанные в вики, и везде была такая же ошибка.
После всего этого я решил повторить опыт с установкой.
Сделал так:
И так. Мы имеем свежеустановленную систему со следующими данными:
# btrfs f u / -T
Overall:
Device size: 225.79GiB
Device allocated: 4.02GiB
Device unallocated: 221.76GiB
Device missing: 0.00B
Used: 1.83GiB
Free (estimated): 222.07GiB (min: 111.19GiB)
Data ratio: 1.00
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Metadata System
Id Path single DUP DUP Unallocated
-- --------- ------- -------- -------- -----------
1 /dev/sda1 2.01GiB 2.00GiB 16.00MiB 221.76GiB
-- --------- ------- -------- -------- -----------
Total 2.01GiB 1.00GiB 8.00MiB 221.76GiB
Used 1.70GiB 69.45MiB 16.00KiB
# cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=1ad144de-0b74-48b1-864d-378b4c27c174 / btrfs defaults,subvol=@ 0 1
# /home was on /dev/sda1 during installation
UUID=1ad144de-0b74-48b1-864d-378b4c27c174 /home btrfs defaults,subvol=@home 0 2
# swap was on /dev/sda2 during installation
UUID=0d0c623a-6970-4db2-bc14-981349ba9bfb none swap sw 0 0
# swap was on /dev/sdb5 during installation
UUID=4ee020e0-0cf8-46b0-91e6-b2ebf3762832 none swap sw 0 0
# fdisk -l
Диск /dev/sda: 233,8 GiB, 251000193024 байтов, 490234752 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: dos
Идентификатор диска: 0xaa344d5e
Устр-во Загрузочный Start Конец Секторы Size Id Тип
/dev/sda1 * 2048 473513983 473511936 225,8G 83 Linux
/dev/sda2 473513984 490233855 16719872 8G 82 Linux своп / Solaris
Диск /dev/sdb: 233,8 GiB, 251000193024 байтов, 490234752 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: dos
Идентификатор диска: 0x0d347753
Устр-во Загрузочный Start Конец Секторы Size Id Тип
/dev/sdb1 2048 473513983 473511936 225,8G 83 Linux
/dev/sdb2 473516030 490233855 16717826 8G 5 Расширенный
/dev/sdb5 473516032 490233855 16717824 8G 82 Linux своп / Solaris
Добавляем новый диск:
# btrfs de add /dev/sdb1 / -f
Делаем балансировку данных:
# btrfs ba start -dconvert=raid1 -mconvert=raid1 / -f
Done, had to relocate 5 out of 5 chunks
Проверяем изменения:
# btrfs f u / -T
Overall:
Device size: 451.58GiB
Device allocated: 9.06GiB
Device unallocated: 442.51GiB
Device missing: 0.00B
Used: 3.54GiB
Free (estimated): 254.92GiB (min: 223.32GiB)
Data ratio: 1.75
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Data Metadata System
Id Path single RAID1 RAID1 RAID1 Unallocated
-- --------- ------- ------- -------- -------- -----------
1 /dev/sda1 - 3.00GiB 1.00GiB 32.00MiB 221.76GiB
2 /dev/sdb1 1.00GiB 3.00GiB 1.00GiB 32.00MiB 220.76GiB
-- --------- ------- ------- -------- -------- -----------
Total 1.00GiB 3.00GiB 1.00GiB 32.00MiB 442.51GiB
Used 0.00B 1.70GiB 71.30MiB 16.00KiB
Редактируем GRUB:
#nano /etc/default/grub
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="rootflags=degraded,subvol=@"
Обновляем:
# grub-mkconfig -o /boot/grub/grub.cfg
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.4.0-28-generic
Найден образ initrd: /boot/initrd.img-4.4.0-28-generic
Найден образ linux: /boot/vmlinuz-4.4.0-21-generic
Найден образ initrd: /boot/initrd.img-4.4.0-21-generic
ERROR: pdc: wrong # of devices in RAID set "pdc_bfdedeiage" [1/2] on /dev/sdb
ERROR: pdc: wrong # of devices in RAID set "pdc_bfdedeiage" [1/2] on /dev/sdb
File descriptor 7 (pipe:[18313]) leaked on lvs invocation. Parent PID 2156: /bin/sh
завершено
Как видим на диске осталась инфа о членстве диска в dmraid (осталось от старых установок):
Удаляем эту инфу:
# sudo dmraid -rE
Обновляем еще раз:
# grub-mkconfig -o /boot/grub/grub.cfg
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.4.0-28-generic
Найден образ initrd: /boot/initrd.img-4.4.0-28-generic
Найден образ linux: /boot/vmlinuz-4.4.0-21-generic
Найден образ initrd: /boot/initrd.img-4.4.0-21-generic
File descriptor 7 (pipe:[18313]) leaked on lvs invocation. Parent PID 4529: /bin/sh
завершено
Устанавливаем на оба диска:
# grub-install /dev/sda
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
# grub-install /dev/sdb
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
Перезагрузил - система загрузилась.
Теперь имитируем выход из строя одного диска (вытаскиваю из работающего сервера).
Сначала проверяем текущую структуру:
# btrfs f u / -T
Overall:
Device size: 451.58GiB
Device allocated: 8.06GiB
Device unallocated: 443.51GiB
Device missing: 0.00B
Used: 3.54GiB
Free (estimated): 223.06GiB (min: 223.06GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Metadata System
Id Path RAID1 RAID1 RAID1 Unallocated
-- --------- ------- -------- -------- -----------
1 /dev/sda1 3.00GiB 1.00GiB 32.00MiB 221.76GiB
2 /dev/sdb1 3.00GiB 1.00GiB 32.00MiB 221.76GiB
-- --------- ------- -------- -------- -----------
Total 3.00GiB 1.00GiB 32.00MiB 443.51GiB
Used 1.70GiB 71.33MiB 16.00KiB
Вынимаем диск:
# btrfs fi sh /
Label: 'root' uuid: 1ad144de-0b74-48b1-864d-378b4c27c174
Total devices 2 FS bytes used 1.77GiB
devid 2 size 225.79GiB used 4.03GiB path /dev/sdb1
*** Some devices missing
Перезагружаемся. Проверяем. Сервер стартанул на одном диске:
# btrfs fi sh /
Label: 'root' uuid: 1ad144de-0b74-48b1-864d-378b4c27c174
Total devices 2 FS bytes used 1.77GiB
devid 2 size 225.79GiB used 6.06GiB path /dev/sda1
*** Some devices missing
Эксперимент удался, всем спасибо за помощь!
После эксперимента у меня появилась новая проблема, связанная с заменой диска в raid массиве.
Обсуждение этой проблемы хочу начать в новом топике.
PS: Если есть замечания и пожелания обязательно пишите, и у меня знаний прибавится и другим может поможет.