Btrfs-raid1 (/boot, /, и всё остальное) + grub2/extlinux

Добрый день, уважаемые участники форума!

Сразу скажу, что я пока новичок в Gentoo (пытался установить её в первый раз), поэтому плз поправляйте меня если я вдруг ошибусь где-то.

Итак, у меня проблема: я хочу вместо raid1+LVM+ext4 использовать Btrfs-raid1, я нашёл статью http://tincman.wordpress.com/2011/01/20/installing-arch-linux-onto-a-gpt-partitioned-btrfs-root-ssd-on-a-legacy-bios-system/ и пытаюсь повторить это на виртуальной машине дома, всё остальное стандартное - читал handbook с официального сайта (ах да, ещё GPT использовал, в handbook немного устаревшая информация).

Свои приключения (чтобы не забыть последовательность действий и команды) я описывал тут - получилась небольшая статья/заметка
https://www.evernote.com/shard/s23/sh/5e6003d5-931c-4f1f-a16f-3cdb9e46999b/edef9c12cefb70a0c7859a1d3a3fcae7

моя проблема - это невозможность подружить grub2 с btrfs, по крайней мере у меня не получилось, подскажите плз, где я ошибся... я хочу чтобы на btrfs-raid1 было всё кроме swap, в итоге я набираю команду

grub-mkconfig -o '/boot/grub/grub.cfg'

и получаю ошибку

/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).

(и если вдруг кто-то проглядит всю последовательность моих действий и найдет какие-то другие ошибки - отдельное спасибо)

Не ищите себе дополнительные

Не ищите себе дополнительные проблемы - никогда не ставьте рут на RAID[^1]/LVM/EVMS и экзотические ФС! :)
Сделайте небольшой (у меня - 512Мб на RAID1) рут на проверенной ехт[234], а остальные - как вам опыт и фантазия подскажут... ;)

а какие проблемы могут

а какие проблемы могут возникнуть, если вместо ext4 я буду использовать Btrfs? (оно умеет и зеркалирование делать как raid1 и бэкапить можно разделами как в LVM и судя по всему это то что будет вариантом по умолчанию в новых убунтах и федорах)

Вы в праве делать все, что

Вы в праве делать все, что хотите...
Я просто дал совет на основе многолетнего опыта.
Убеждать/разубеждать не буду - набирайтесь своего опыта... ;) для меня же очевидно, как относиться к системам, которым год от роду или состоящим из многих компонент, которые иногда почему-то ломаются... :)

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

Я просто стараюсь исходить из

Я просто стараюсь исходить из своей ситуации - сейчас мне важнее научиться, чем получить стабильный сервер. Новые полезные (в будущем) знания важнее аптайма сейчас. Никаких сверхважных проектов, которые не переживут оффлайн на сутки на этом сервере у меня нет. Плюс бэкапы каждый день (потеря данных за сутки и даже за неделю не является чем-то ОЧЕНЬ критичным для меня). Но более того, у меня пока будет Gentoo на домашней VPS, а не на реальном сервере, там пробовать пока что экспериментальную систему Btrfs, я конечно же не буду. Через полгодика-год когда все используемые мною компоненты станут стабильными (у меня ещё планы поставить systemd туда) и когда будет побольше опыта - вот тогда и заменю Ubuntu на Gentoo, а пока просто эксперименты дома...

Мне просто наскучил Ubuntu тем что он не ломается.. Более того, иногда по определённым причинам даже нужны какие-то проблемы с сервером и необходимость в админе чтобы их решать иначе у некоторых людей может возникнуть желание и самим набирать sudo aptitude update && sudo aptitude upgrade раз в недельку - в самом деле, зачем админ если всё просто и ничего не ломается - к сожалению, у некоторых людей именно такой подход... Вообщем, я хотел бы получить опыт и новые интересные приключения вместе с Gentoo поэтому я не боюсь новых нестабильных версий и поэтому там < 9999 в некоторых случаях (это уже частично ответ на комментарий ниже) :-)

В худшем случае - датацентр предоставляет rescue систему, можно всегда перезагрузиться и всё починить за ночь. А данные восстановить из бэкапов с другого сервера.

То есть другими словами, я полностью понимаю все последствия и готов к ним, просто я не понимаю как подружить grub2 и Btrfs и поэтому прошу в этой теме подсказать какие-то конкретные вещи (в идеале step-by-step гайд если вдруг кто пробовал и записал).. И конечно же я никому свой выбор не навязываю... Просто мне хочется попробовать то, что будет по дефолту в убунте и федоре через несколько лет. Неужели никто в исследовательских целях просто ради интереса не пробовал это? По той же причине, кстати, я и systemd хочу попробовать...

В данном случае, по-моему,

В данном случае, по-моему, достаточно /boot вынести в отдельный раздел...

Нет, но это отдельная

Нет, но это отдельная дискуссия...

тут проблема в / на Btrfs как

тут проблема в / на Btrfs как я понимаю... (видел тикет с такой же проблемой, /boot там был на ext2)

Я тут поигрался на виртуалке,

Я тут поигрался на виртуалке, и вот что у меня вышло. Точнее не вышло.
1. Создал raid1 средствами btrfs на двух разделах (sda3 и sdb3). boot отдельно.
2. Создал subvolume.
3. Если загрузиться с LiveCD, массив прекрасно монтируется командой

mount /dev/sda3 /mnt/gentoo -o subvol=__root,device=/dev/sda3,device=/dev/sdb3

4. При загрузке ядро не может примонтировать раздел (ядру передаются

root=/dev/sda3 rootflags=subvol=__root,device=/dev/sda3,device=/dev/sdb3

)

я там где-то читал про

я там где-то читал про real_rootflags вместо rootflags, не знаю правда, насколько это поможет...

я попробовал установить extlinux вместо grub2, оно вроде бы установилось, но после ребута я вижу

 "warning: only support single device btrfs"

вообщем, на данный момент что известно:

можно заставить работать Btrfs если 1 диск и загрузчик extlinux или grub legacy , при этом на Btrfs будет и / и /root, с grub2 тоже вроде можно, но надо его патчить как написано на убунтушном форуме...

как быть когда несколько устройств непонятно...

но если нельзя - тогда лична для меня нет никакого интереса в Btrfs, так как я хотел ею заменить связку из raid1+LVM, на одном диске (судя по тестам) она не показывает каких-либо выдающихся результатов...

lorddaedra написал(а): я там

lorddaedra написал(а):
я там где-то читал про real_rootflags вместо rootflags

Это справедливо в случае, если используется генкернеловский рамдиск. Я не использую.

может быть, это как-то

может быть, это как-то поможет:
http://bugs.gentoo.org/attachment.cgi?id=218477&action=edit

Спасибо, но нет, это не то.

Спасибо, но нет, это не то.

Ядро собирал последним жёлтым

Ядро собирал последним жёлтым genkernel'ом. Использовал extlinux для загрузки. Так как два диска в Btrfs-разделах, то /boot отдельно на software raid1

# emerge -av sys-boot/syslinux
# mkdir -p /boot/extlinux
# extlinux --raid --install /boot/extlinux


# cat /usr/share/syslinux/gptmbr.bin > /dev/sda
# cat /usr/share/syslinux/gptmbr.bin > /dev/sdb


# nano /boot/extlinux/extlinux.conf 
PROMPT 0
TIMEOUT 0
DEFAULT gentoo
LABEL gentoo
     KERNEL /boot/kernel-genkernel-x86_64-2.6.38-hardened-r1
     INITRD /boot/initramfs-genkernel-x86_64-2.6.38-hardened-r1
     APPEND root=/dev/sda4 real_rootflags=subvol=__active,device=/dev/sda4,device=/dev/sdb4 ro elevator=noop

# cat /etc/fstab
/dev/cdrom		/mnt/cdrom	auto		noauto,ro	0 0


devpts                  /dev/pts        devpts          defaults                                0 0
/dev/sda4               /               btrfs           defaults,noatime,subvol=__active        0 1
/dev/md3                none            swap            sw                                      0 0
/dev/sda4               /var/lib/Gentoo btrfs           defaults,noatime                        0 0
/dev/md2                /boot           ext4            defaults,rw,noatime                     1 2
none                    /tmp            tmpfs           nodev,nosuid,noatime,noexec,mode=1777   0 0

shm			/dev/shm	tmpfs		nodev,nosuid,noexec	0 0

всё это у меня загружается, правда с ошибками (почему-то md* нет и какие-то проблемы с concole и null)
http://dl.dropbox.com/u/15855034/Gentoo-boot-bug.png

но по части Btrfs вроде всё работает, вообщем, не знаю, почему все этот grub(2) используют, c extlinux всё хорошо работает с / на Btrfs-raid1 без всяких патчей

lorddaedra написал(а): Ядро

lorddaedra написал(а):
Ядро собирал последним жёлтым genkernel'ом. Использовал extlinux для загрузки. Так как два диска в Btrfs-разделах, то /boot отдельно на software raid1

В таком случае и с грабом проблем не будет. Я гарантирую это )

lorddaedra написал(а):
но по части Btrfs вроде всё работает, вообщем, не знаю, почему все этот grub(2) используют, c extlinux всё хорошо работает с / на Btrfs-raid1 без всяких патчей

Вот я и говорю, что с отдельным /boot все работать будет. Но только мне хочется обойтись без initrd.

GRUB не умеет GPT вроде

GRUB не умеет GPT вроде

а почему без initrd? так разве можно, вроде же Btrfs без этого работать не будет на /?

lorddaedra написал(а):GRUB

lorddaedra написал(а):
GRUB не умеет GPT вроде

судя по https://bugs.gentoo.org/178586 умеет

lorddaedra написал(а):
а почему без initrd?

ну вот хочу без initrd, и все тут.

lorddaedra написал(а):
так разве можно, вроде же Btrfs без этого работать не будет на /?

Ну так я и говорю, что не работает. Хотя должна, иначе это просто поделка какая-то, ИМХО

вообще, я не знаю разницу

вообще, я не знаю разницу между grub и extlinux... но по субъективным оценкам мне не нравится grub и lilo потому что они не развиваются, развивается grub2 и extlinux, но grub2 не работает без патчей (причём каких-то патчей вручную) с Btrfs на /, как-то так... вообщем, мне кажется как-то неприкольно ставить новую вещь (Btrfs) рядом с тем, что не будет развиваться... с другой стороны, я надеюсь что в будущем extlinux будет поддерживать загрузку с Btrfs из нескольких устройств (btrfs в режиме raid1 на двух дисках, например) и тогда я полностью всё сделаю на Btrfs

так как я новичок в Gentoo, а Ubuntu всё это делало само - небольшой вопрос с моей стороны - с чем связано желание избавиться от initrd? если Gentoo устанавливается на сервере, который будет перезагружаться максимум, ну, раз в неделю-две (а скорее всего, раз в несколько месяцев) и совсем не важно, как долго он будет запускаться - имеет ли мне смысл тоже почитать про это и тоже хотеть избавиться от initrd как и вы?

lorddaedra написал(а):

lorddaedra написал(а):
небольшой вопрос с моей стороны - с чем связано желание избавиться от initrd?

Я от него не избавляюсь. У меня его изначально не было: как с первой установки Gentoo начал ядро собирать руками, так и собираю. Поэтому считаю initrd лишней сущностью (за редким исключением).

lorddaedra написал(а):
если Gentoo устанавливается на сервере, который будет перезагружаться максимум, ну, раз в неделю-две (а скорее всего, раз в несколько месяцев) и совсем не важно, как долго он будет запускаться - имеет ли мне смысл тоже почитать про это и тоже хотеть избавиться от initrd как и вы?

Я ни к чему не призываю. Это исключительно мои тараканы.

да я это понимаю, я просто

да я это понимаю, я просто стараюсь принять правильное решение, разводить ли мне таких же тараканов или нет? использование или неиспользование initrd влияет только на процесс загрузки или это потом как-то используется постоянно и оказывает влияние на производительность системы? если только на процесс загрузки - то наверное, мне это не надо, а если это будет использоваться потом и как-то тормозить систему - то надо тоже стараться избавиться... как-то так)

оптимизировать мне всё это всё равно надо (придется учиться), а то получится хуже, чем было в Ubuntu...

а что такого плохого было в

а что такого плохого было в Ubuntu ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Ubuntu не rolling release,

Ubuntu не rolling release, увы.. Я люблю всё самое новое...

В плане ядра - там всё ок было :-) Ну, вот и надо чтобы и в моей генте было бы (как минимум) не хуже

Если есть такие вопросы -

Если есть такие вопросы - сначала

[man, google] initrd

и все прояснится! ;)

после строчек про хидеры

после строчек про хидеры младше 9999 читать дальше этот бред убунтойда не смог, был пацтулом.
После конфига харденеда дальше кушать побоялся .

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Как-то вы грубо написали, мне

Как-то вы грубо написали, мне не нравится такой стиль общения...

во-первых, я новичок в генту, о чём и предупредил (в начале той своей статьи и тут в этой теме), делать ошибки новичку - это нормально, так как идёт процесс обучения, ошибки неизбежны, а вот поржать над какой-то тупой фразой новичка без объяснения причины почему поржал - мне кажется, это как-то невежливо к новичку, я правда не понимаю разницу между стабильным и нестабильным пакетом в генту - проблемы при установке у меня были только с двумя стабильными пакетам (причём на реальном сервере одна из них скорее всего бы привела к потере управляемости системой по ssh и необходимости ребута сервера), поэтому стабильные мне сейчас кажутся не настолько уж и стабильными, а раз так - почему бы не использовать те, что поновее?)
во-вторых, нет задачи получить сверхстабильный сервер, основная задача - самые передовые технологии (пусть и нестабильные), к тому моменту, как я научусь - они уже станут стабильными и я буду их использовать, ну а пока что - Ubuntu...

У меня была аналогичная

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

Как бы все gentoo.ru знает,

Как бы все gentoo.ru знает, что дело не в конфиге, а в самом alexxy :). Уж очень сильная и мощная карма у него :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

а какое ядро у вас было на

а какое ядро у вас было на момент проведения этих экспериментов?

Что-то около 35 zen или

Что-то около 35 zen или gentoo.

вообщем, я тут погуглил ещё и

вообщем, я тут погуглил ещё и нашёл такой вот гайд:

http://ubuntuforums.org/showthread.php?t=1389279 меня немного (ну так, слегка) напугала необходимость что-то вручную патчить, поэтому я сейчас думаю об использовании EXTLINUX вместо GRUB2

судя по всему, там всё будет работать с Btrfs ок, вопрос только в том, не является ли EXTLINUX чем-то более плохим по сравнению с GRUB2? я слышал, что EXTLINUX более простой и быстрый, его используют на всяких загрузочных cd и прочих подобных вещах... если я буду использовать его на сервере, есть ли в этом какие-то подводные камни? т.е. если это плохое решение, плз скажите чем? а если хорошее, то почему grub такой популярный? т.е. может быть кому-то и каких-либо функций не хватает в EXTLINUX и поэтому используют GRUB(2)? Я нагуглил к минусам EXTLINUX только "May require nasm", не до конца понимаю, насколько это большая проблема...

А вот это все тебе и

А вот это все тебе и предстоит выяснить на своем опыте :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

У тебя данные были потеряны

У тебя данные были потеряны из за tuxonice. Это известный баг с btrfs. Тот вариант suspend2disk что в мейнлайне не обладает таким багом. Груб надо ставить 9999 или 1.99 там есть все необходимые патчи.

ЗЫ а причина бага простая: для btrfs нельзя делать freeze. По моему это до сих пор не исправили. Но лучше уточнить у товарижча cmason на #btrfs на freenode

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Если кому-нибудь интересно:

Если кому-нибудь интересно: https://bugzilla.kernel.org/show_bug.cgi?id=33952

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".