LINUX.ORG.RU
решено ФорумAdmin

LVM vs MDADM. Нужна помощь коллективного разума.

 , mdamd,


0

1

Задача: нужно объединить две LVM VG. Само по себе — не вопрос, vgmerge и ок. Только этого нельзя сделать на живой машине (с PV/VG/LV всё ок). Загружаюсь с LiveUSB и натыкаюсь на уже известные старые грабли.

Есть у новых udev такая фигня (как я понял по старым исследованиям прежних проблем), что иногда почему-то lvm-устройства определяется сперва mdadm, рождаются фейковые криво работающие /dev/md??p? На живой машине (я делал это в Ubuntu) это решается тупо сносом md-компонентов системы. Но вот что делать с liveusb?

Работаю сейчас с RescueCD. Сперва пробовал загрузиться с параметром nomdadm. Всё, вроде бы прошло хорошо, при старте несколько раз отчитался про disabled mdadm... Но /dev/md127 и /dev/md127p по-прежнему на месте. И при любых попытках работы с lvm валится подобное:

% lvs
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  Couldn't find device with uuid wLRbRz-ggSH-f18U-t2mN-ihEM-IgsH-E0oTv1.
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  WARNING: Inconsistent metadata found for VG babakvg - updating to use version 66
  Missing device /dev/md127p2 reappeared, updating metadata for VG babakvg to version 66.
  Device still marked missing because of allocated data on it, remove volumes and consider vgreduce --removemissing.
  Missing device unknown device reappeared, updating metadata for VG babakvg to version 66.
  Device still marked missing because of allocated data on it, remove volumes and consider vgreduce --removemissing.
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  WARNING: Failed to write an MDA of VG babakvg.
  /dev/md127p2: lseek 1500019490816 failed: Invalid argument
  LV                  VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log      Cpy%Sync Convert
  bcache              babakvg -wi-----p-  10.00g                                                         
  data                babakvg mwi---m-p- 400.00g                                                         
  fast                babakvg -wi-----p- 100.00g                                                         
  home                babakvg -wi-----p-  20.00g                                                         
  lxc                 babakvg -wi-----p-  70.00g                                                         
  lxc-gweb            babakvg -wi-----p-  10.00g                                                         
  lxc-maria           babakvg -wi-----p- 120.00g                                                         
  lxc-our             babakvg -wi-----p-  20.00g                                                         
  lxc-tanzpol         babakvg -wi-----p-  50.00g                                                         
  old-backup          babakvg -wi-----p- 500.00g                                                         
  repositories        babakvg -wi-----p- 100.00g                                                         
  system              babakvg mwi---m-p-  40.00g                                                         
  usr                 babakvg mwi---m-p-  10.00g                                usr_mlog                 
  var-cache           babakvg -wi-----p-  10.00g                                                         
  var-cache-sites     babakvg -wi-----p-  30.00g                                                         
  var-cache-webstatic babakvg -wi-----p-  30.00g                                                         
  var-lib-mysql       babakvg -wi-----p-  50.00g                                                         
  var-lib-mysql-ext4  babakvg -wi-----p-  50.00g                                                         
  var-log             babakvg -wi-----p-  20.00g                                                         
  var-www             babakvg -wi-----p-  10.00g                                                         
  airbase-backup      bbvg0   -wi-a----- 150.00g                                                         
  backup              bbvg0   -wi-a----- 690.00g                                                         
  data                bbvg0   -wi-a----- 100.00g                                                         
  home                bbvg0   -wi-a-----  50.00g                                                         
  isos                bbvg0   -wi-a-----  10.00g                                                         
  root                bbvg0   -wi-a-----  10.00g                                                         
  swap                bbvg0   -wi-a-----  16.00g                                                         
  ubuntu              bbvg0   -wi-a-----  30.00g                                                         
  ubuntu-home         bbvg0   -wi-a-----  10.00g                                                         
  ubuntu-root         bbvg0   -wi-a-----  10.00g                                                         
  ubuntu-var          bbvg0   -wi-a-----   5.00g                                                         
  usr_ext4            bbvg0   -wi-a-----  20.00g                                                         
  var                 bbvg0   -wi-a-----  28.00g                                                         
  var-14              bbvg0   -wi-a-----  30.00g                                                         
  var-lib             bbvg0   -wi-a-----  30.00g                                                         
  var-log-14          bbvg0   -wi-a-----  30.00g                      

Тут мой опыт даёт сбой, потому и обращаюсь к ЛОРу. Что делать дальше? :)

★★★★★

Конфигурация хитрая, диски много раз лишались разделов и ресайзились, так что разбивка в данный момент такая:

% fdisk -l /dev/sd?

Disk /dev/sda: 1.4 TiB, 1500301910016 bytes, 2930277168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x60c3468b

Device    Boot     Start        End     Blocks  Id System
/dev/sda2 *       546210 2930272064 1464862927+ 8e Linux LVM


Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x70000963

Device    Boot Start        End    Blocks  Id System
/dev/sdb3       2048 1953523711 976760832  8e Linux LVM


Disk /dev/sdc: 1.4 TiB, 1500301910016 bytes, 2930277168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x228dad98

Device    Boot     Start        End     Blocks  Id System
/dev/sdc2         546210 2930272064 1464862927+ 8e Linux LVM


Disk /dev/sdd: 596.2 GiB, 640135028736 bytes, 1250263728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0006693b

Device    Boot     Start        End    Blocks  Id System
/dev/sdd3      105145425 1250258624 572556600  8e Linux LVM

KRoN73 ★★★★★
() автор топика

А если остановить эти «RAID'ы» и выгрузить модули, а потом уже работать?

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

А если остановить эти «RAID'ы»

/etc/init.d/mdadm остановлен.

и выгрузить модули,

А какие? lsmod не показывает никаких модулей с подстрокой «md» (кроме «amd»).

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

/etc/init.d/mdadm остановлен.

«И чо?» man mdadm

lsmod не показывает никаких модулей с подстрокой «md»

«raid»

Gotf ★★★
()

Ага. После остановки /etc/init.d/mdraid (как я его не заметил?) /dev/md?? пропал. И ошибки VG пропали. Вот только пропали и /dev/sda2 с /dev/sdc2, как и с ними вся группа babakvg. Как вернуть? :)

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

blockdev --rereadpt вернул /dev/sda2 с /dev/sdc2 и... вернул /dev/md127. Модуль raid1 вернулся, загрузился сам.

KRoN73 ★★★★★
() автор топика

Хм. mdadm --stop новообразование остановил. /dev/sd?? нужные остались. vgcahnge восстановить VG отказался, ссылаясь на:

activation of partial LV babakvg/system.  Use '--activationmode partial' to override.

Вместе с --partial vgchange группу восстановил. И тома монтируются. Вот только vgmerge мержить отказывается:

% vgmerge -lt babakvg bbvg0
File descriptor 7 (pipe:[17483]) leaked on vgmerge invocation. Parent PID 3772: zsh
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  Cannot change VG babakvg while PVs are missing.
  Consider vgreduce --removemissing.

Попытка использовать в режиме test vgreduce пугает:

% vgreduce -t --removemissing babakvg
File descriptor 7 (pipe:[17483]) leaked on vgreduce invocation. Parent PID 3772: zsh
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  WARNING: Partial LV system needs to be repaired or removed. 
  WARNING: Partial LV fast needs to be repaired or removed. 
  WARNING: Partial LV data needs to be repaired or removed. 
  WARNING: Partial LV old-backup needs to be repaired or removed. 
  WARNING: Partial LV var-lib-mysql needs to be repaired or removed. 
  WARNING: Partial LV var-lib-mysql-ext4 needs to be repaired or removed. 
  WARNING: Partial LV lxc-tanzpol needs to be repaired or removed. 
  WARNING: Partial LV lxc needs to be repaired or removed. 
  WARNING: Partial LV home needs to be repaired or removed. 
  WARNING: Partial LV var-cache needs to be repaired or removed. 
  WARNING: Partial LV var-cache-sites needs to be repaired or removed. 
  WARNING: Partial LV usr needs to be repaired or removed. 
  WARNING: Partial LV var-log needs to be repaired or removed. 
  WARNING: Partial LV lxc-gweb needs to be repaired or removed. 
  WARNING: Partial LV var-www needs to be repaired or removed. 
  WARNING: Partial LV lxc-our needs to be repaired or removed. 
  WARNING: Partial LV var-cache-webstatic needs to be repaired or removed. 
  WARNING: Partial LV repositories needs to be repaired or removed. 
  WARNING: Partial LV lxc-maria needs to be repaired or removed. 
  WARNING: Partial LV bcache needs to be repaired or removed. 
  WARNING: Partial LV system_mimage_0 needs to be repaired or removed. 
  WARNING: Partial LV system_mimage_1 needs to be repaired or removed. 
  WARNING: Partial LV data_mimage_0 needs to be repaired or removed. 
  WARNING: Partial LV data_mimage_1 needs to be repaired or removed. 
  WARNING: Partial LV usr_mimage_0 needs to be repaired or removed. 
  WARNING: Partial LV usr_mimage_1 needs to be repaired or removed. 
  WARNING: Partial LV usr_mlog needs to be repaired or removed. 
  There are still partial LVs in VG babakvg.
  To remove them unconditionally use: vgreduce --removemissing --force.
  Proceeding to remove empty missing PVs.

KRoN73 ★★★★★
() автор топика

Уф. Решил проблему. Во-первых, работа с lvm при вкючённом mdadm, таки, что-то запороло. Я перезагрузился с live-usb с Ubuntu, установленной на флешке, где нет никаких mdadm, ошибок с ним связанных уже не было, но на счёт partial missing ошибки остались... Дальше делал так:

— сделал дамп конфигурации:

vgcfgbackup babakvg -f /backup.vg

отредактировал /backup.vg, сохранив под новым именем и поменяв

flags = ["MISSING"]
на
flags = []

Загрузил конфигурацию:

vgcfgrestore babakvg -f backup2.vg

И готово, всё нормально смержилось.

KRoN73 ★★★★★
() автор топика

Признавайся, у тебя эти диски когда-то были в md-raid1 и в конце диска остались метаданные рейда?

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

Признавайся, у тебя эти диски когда-то были в md-raid1

Эти — никогда. Последний раз я этой технологией баловался лет десять назад, пока с LVM не познакомился. Более того, именно с этими дисками проблем не было, пока сидел на них с древней Gentoo. Как приволок домой и воткнул LiveUSB с установленной Ubuntu — офигел, но быстро вычислил виновника и просто снёс mdadm. Ставил на новую машину — снёс там mdadm с самого начала. А вот сейчас, когда потребовалась офлайн-работа для vgmerge, про наличие настроенной LiveUSB-системы со снесённым mdadm забыл и загрузился с iso-образа... Вспомнил не скоро :)

Эти диски сперва были разбиты в духе:
— небольшой раздел ext2 для boot
— небольшой раздел swap
— небольшой раздел lvm №1
— небольшой раздел lvm №2
(последнее было нужно, так как я в старые времена не знал, что можно спокойно делать смешанные LV stripe+mirror в рамках одной VG, не знал, что можно вручную указывать необходимые PV)

Потом всё лишнее было снесено, а оставшиеся разделы раздуты на весь объём, так и остались /dev/sda2 без /dev/sda1 или /dev/sdd3 без /dev/sdd1 и /dev/sdd2 :)

Вот подозреваю, что-то в этом голову mdadm'у и снесло.

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

Может на виртуалках создавал мд-рейд?

Нет. Никогда им нигде не пользовался, как писал уже, больше 10 лет.

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