LINUX.ORG.RU

Проблемы с lvm2 или кривые руки -:)


1

1

Всем доброго времени суток.
Всегда старался придерживаться принципов: работает - не лезь! и лучшее враг хорошего,
но тут захотелось воспользоваться своими кривыми ручками и сделать «еще лучше».
Все мы знаем, чем это заканчивается. Короче хелп!

Исходные данные:

  • OpenSUSE 12.2_64
  • Ядро от 13.1 - 3.11.6-4-desktop (ставил пакетом, сам не собирал)
  • Дисковая подсистема; тут такой бутерброд:
  • HDD:
  • sda1 -> ext4 -> /boot
  • sda2 -> dm-crypt -> lvm2 -> btrfs -> /home
  • SSD:
  • sdb1 -> dm-crypt -> lvm2 -> ext4 -> /

Преамбула.
Система работала нормально до недавнего времени, когда я захотел наконец включить поддержку TRIM на своем SSD.
Дело в том, что в вышеуказанной конструкции TRIM (опция discard) должна быть на всех слоях дисковой подсистемы
- crypttab | lvm | fs.
В crypttab подключил discard, в fstab прописал опцию монтирования discard, а вот в lvm2 в своей версии не нашел
в комментах /etc/lvm/lvm.conf опции «issue_discards» и решил, что версия не подходит.
Версия была если не ошибаюсь 2.2.02.84. Ничего лучше не придумал как собрать из исходников.
Собрал версию 98 и благополучно ее воткнул. Как я потом понял, вместе с lvm2 собрался новый device-mapper.
После данного обновления система не стартанула и вывалилась в emergency.

Залогинившись рутом в emergency увидел:

  • cryptsetup отработал - оба диска разлочены и активированы в /dev/maapper
  • vgchange отработал только на корне, корень подмонтировался.
  • С хомяком была следующая картина:
  • в /dev/mapper было устройство +data-home (розового цвета), а должно быть @data-home
  • должно быть устройство /dev/data/home, а его не было.

Т.е. vgchange на нем обломался.
Далее активировал lvm на sda2 ручками с помощью vgchange.
Нужное устройство появилось, но была ругань от vgchange примерно такого вида:

File descriptor 51 leaked on vgchange invocation. Parent PID 32047: /bin/sh

Далее примонтировал хомяка - все ок. Проверил файловую систему (btrfs) на предмет ошибок - все нормально.
Что было в логах.
В boot.log ничего особенного:

  • cryptsetup отрабатывал,
  • vgchange тоже,
  • даже была инфа, что устройства /dev/main/root и /dev/data/home активны
    и обе файловые системы - корень и хомяк смонтированы.

В messages была какая то шняга от systemd, говорящая что cryptsetup обламывается
и не только он в связи с нарушением зависимостей.
Лучше всего это было видно при попытке загрузиться в failsafe
- в консоли перед тем как вывалиться в emergency была инфа, что не один сервис не стартанул
(NetworkManager, bluetooth и т.д. в связи с нарушением зависимостей.

Что предпринимал.

  • В режиме emergency ставил старую версию (стоковую) пакетов lvm2 и device-mapper.
    Просто скачивал из репов и ставил ручками:
    rpm -Uvh ...
  • Загружался с Live CD, активировал зашифрованные тома
    (cryptsetup), активировал lvm (vgchange), монтировал
    sdb1 в /mnt/root, sda1 -> /mnt/root/boot, sda2 -> /mnt/root/home
    Далее:
    mount -t proc none proc/
    mount -t sysfs none sys/
    mount -o bind /dev dev/
    chroot /mnt/root 
    Потом запускал yast и оттуда переустанавливал пакеты lvm2 и device-mapper.
    Пакеты ставил прямо с LiveCD, из репов не получилось - сеть в chroot не поднялась.
  • Отключил хомяка в /etc/fstab и система стартанула вместе с иксами, но понятное дело что кривовато.
  • Пересобрал и установил из исходников старую версию пакета lvm2 вместе с device-mapper (2.2.02.84)

Не помню точно на каком этапе, добился еще более крутого «хардкора»
- теперь не грузится даже в emergency -> сразу после grub2 в консоль плюется,
что vgchange/vgscan и /sbin/cryptsetup не может найти библиотеку libdevmapper.so.1.02.,
но приглашение для ввода ключа разблокировки dm-crypt выдает. После ввода пароля в консоль сыпется туча строк о том, что
libdevmapper.so.1.02 не найдена.
ldconfig -v дает что симлинки имеются в /lib64/

libdevmapper.so.1.02 -> libdevmapper.so.1.02
Все свои данные я конечно могу слить с дисков, но переустанавливать систему не хочу
- очень много настроенного и допиленного как надо софта. Нужен совет в какую сторону курить?

UPD. Загрузился с другого Live CD и перешел в chroot, запустил yast.
Зашел в online update, система предложила установить три патча

  • openSUSE-2012-671 (lvm2 in 12.2 did not use modprobe, so automated module loading was not correctly working)
  • openSUSE-2012-736 (device-mapper.lvm - make sure udev trigger has run on systemd installs, else some devices might not yet be available;
    boot.lvm not being started on boot-up)

Третий патч к lvm не имеет отношения. Проблема в том, что сеть у меня почему то
не работает в chroot, т.е. эти патчи не скачиваются из репов.
Как их скачать и применить?

можешь глянуть руководства по установке генты, в части установки сети в чруте. Суть проста, поднять сеть на корне(livecd) и скопировать /etc/resolv.conf из корня в /chroot/etc/resolv.conf

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за наводку. Сеть поднял - пришлось переключиться на ifup вместо NetworkManager и в LiveCD и в chroot. В recolve.conf только одна строка была
nameserver IP маршрутизатора.
Не копировал файл, просто его изменил в chroot. Сеть поднялась, патчи применил, но не помогло. Есть мысли у кого?

bearpuh
() автор топика
Ответ на: комментарий от deadNightTiger

Именно так. 1.Пересобрал initrd - собралось со всеми модулями. 2.Обновил груб. 3.Не помогло. Че делать то?

bearpuh
() автор топика
Ответ на: комментарий от bearpuh

В chroot еще раз попробовал пересобрать initrd.

linux:/ # mkinitrd

Kernel image:   /boot/vmlinuz-3.11.10-7-desktop
Initrd image:   /boot/initrd-3.11.10-7-desktop
KMS drivers:     i915
Root device:	/dev/main/root (mounted on / as ext4)
enabling LUKS support for /dev/sdb1 (diskroot)
Kernel Modules:	thermal_sys thermal processor fan dm-mod dm-snapshot dm-crypt scsi_dh scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc scsi_dh_rdac video button i2c-algo-bit drm drm_kms_helper i915 xhci-hcd hid-logitech-dj linear sha256_generic sha256-ssse3 cbc crc32-pclmul crc32c-intel cryptd ghash-clmulni-intel arc4 
Features:       acpi dm kms plymouth block usb lvm2 luks resume.userspace resume.kernel
Perl-Bootloader: 2014-09-04 11:46:06 ERROR: UDEVMAPPING: dmdev /dev/dm-3 doesn't have defined DM_NAME in udev
Perl-Bootloader: 2014-09-04 11:46:06 ERROR: UDEVMAPPING: dmdev /dev/dm-2 doesn't have defined DM_NAME in udev
Perl-Bootloader: 2014-09-04 11:46:06 ERROR: UDEVMAPPING: dmdev /dev/dm-1 doesn't have defined DM_NAME in udev
Perl-Bootloader: 2014-09-04 11:46:06 ERROR: UDEVMAPPING: dmdev /dev/dm-0 doesn't have defined DM_NAME in udev 
Что за бага? Вчера все нормально собиралось. Пошел вкуривать google снова. Может кто сталкивался с подобным?

bearpuh
() автор топика
Ответ на: комментарий от bearpuh

Че делать то?

Мигрируй. Я серьезно. Вот у тебя много прослоек всяких: dmcrypt, lvm. Избавься от них. На время, конечно. Если захочешь, потом можешь к ним вернуться.

Итого, как я понял все данные у тебя целые. Тогда возьми пустой диск больший чем сумма всех твоих занятых данных: /boot + / + /home. Сделай на этом диске один раздел : mbr / sda1 / ext4. Скопируй через livecd все данные в этот один новый раздел. Сделай в него chroot и настрой в нём загрузку. Отключи физически все диски кроме одного нового. Загрузись в него. Далее по обстоятельствам: или просто пользуйся с нового диска системой, или начинай восстановление по частям старой системы.

justAmoment ★★★★★
()
Ответ на: комментарий от justAmoment

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

bearpuh
() автор топика
Ответ на: комментарий от deadNightTiger

Я так понял, проблема в том, что линкер сначала ищет libdevmapper.so в /lib64 и находит там старую версию, несовместимую с новым lvm.

deadNightTiger ★★★★★
()

Дело в том, что в вышеуказанной конструкции TRIM (опция discard) должна быть на всех слоях дисковой подсистемы
- crypttab | lvm | fs.

Дело в том, что ты ошибаешься. issue_discards нужно для другого. Надо было сначала повтыкать в вывод lsblk -D, а потом уже что-то ломать.

Gotf ★★★
()
Последнее исправление: Gotf (всего исправлений: 1)
Ответ на: комментарий от Gotf

Да нет, ошибки тут нет - тыц!
В логах (messages) были ошибки при монтировании диска о том, что указана опция монтирования discard, однако данный SSD не поддерживает TRIM.
Мой SSD точно поддерживает TRIM.
Как то так...

bearpuh
() автор топика
Ответ на: комментарий от deadNightTiger

Новые вводные.

  • папка /usr/local/lib64 пустая.
  • даю ссылку на скрин экрана (сеть на ноуте в rescue не поднята, а перепечатывать лень)
    screen

    Вероятно здесь собака и порылась -:)
    Вопрос теперь какие должны быть симлинки?

bearpuh
() автор топика
Ответ на: комментарий от Gotf

Почитал ман но сходу не всосал. Надо будет на досуге повнимательней изучить.

bearpuh
() автор топика
Ответ на: комментарий от bearpuh

папка /usr/local/lib64 пустая.

Тогда повтори процесс установки, только вместо make install сделай make DESTDIR=/tmp/lvmdestdir install (предварительно создав /tmp/lvmdestdir), посмотри, какие файлы установились в /tmp/lvmdestdir и аккуратно удали такие же из корня, а потом переустанови пакет с lvm.

deadNightTiger ★★★★★
()
Ответ на: комментарий от deadNightTiger

Спасибо помогло!
Тему можно закрывать.
Я каким то макаром умудрился собрать пакеты для 32-битной системы.
Библиотеки скопировались в /lib и /usr/lib Вычистил все файлы и поставил взад родные rpm-ки.
Пересобрал initrd c модулями и отапдейтил grub. Система запустилась! Ура!
Хотелось бы отблагодарить. Скинь плиз яндекс кошель на почту.

bearpuh
() автор топика
Ответ на: комментарий от bearpuh

Обнаружил, что мой dm-crypt не поддерживает discard. Печалька..

Sep  5 07:27:55 sony systemd-cryptse[1031]: Encountered unknown /etc/crypttab option 'discard', ignoring.

Почему то корень по нескольку раз перемонтируется. Не нравится мне это.

Sep  5 08:23:13 sony kernel: [    9.175581] EXT4-fs (dm-1): mounting with "discard" option, but the device does not support discard
Sep  5 08:23:13 sony kernel: [    9.175586] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: acl,user_xattr,discard,errors=remount-ro,commit=60
Sep  5 08:23:13 sony kernel: [    9.197255] EXT4-fs (dm-1): re-mounted. Opts: acl,user_xattr,discard,errors=remount-ro,commit=60
Sep  5 08:23:13 sony kernel: [    9.676302] EXT4-fs (dm-1): re-mounted. Opts: acl,user_xattr,discard,errors=remount-ro,commit=60
Sep  5 08:23:16 sony kernel: [   16.843175] EXT4-fs (dm-1): re-mounted. Opts: acl,user_xattr,discard,errors=remount-ro,commit=60,commit=600

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

Password entry required for 'Please enter passphrase for disk AXM13S2-24GM-B (cr_ata-AXM13S2-24GM-B_2C4620005608-part1)!' (PID 2603).
Please enter password with the systemd-tty-ask-password-agent tool!

Broadcast message from root@sony.bearpuh (Fri, 05 Sep 2014 08:37:59 +0400):
Password entry required for 'Please enter passphrase for disk AXM13S2-24GM-B (cr_ata-AXM13S2-24GM-B_2C4620005608-part1)!' (PID 2636).
Please enter password with the systemd-tty-ask-password-agent tool!

Broadcast message from root@sony.bearpuh (Fri, 05 Sep 2014 08:39:58 +0400):
Password entry required for 'Please enter passphrase for disk AXM13S2-24GM-B (cr_ata-AXM13S2-24GM-B_2C4620005608-part1)!' (PID 2666).
Please enter password with the systemd-tty-ask-password-agent tool!

bearpuh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.