LVM – два тома с одинаковыми именами

LVM – два тома с одинаковыми именами

Пришлось намедни переустановить систему и перенести настройки с одного винта на другой. Проблема появилась когда CentOS остановился при попытке разобраться со внешним USB винтом. Оставалось одно подключить его после загрузки и смонитровать. Но тут ждал другой сюрприз, имя LVM тома совпадало с именем уже смонтированонго тома. Поиск в интернете ответа на простой вопрос: “Как переименовать группу томов на внешнем диске чтобы их можно было примонтировать к LVM” затянулся, что и послужило поводом написания этого micro-how-to.

Боевым – активным диском с которого загружена система является диск Hitach Travel Star 80. Пациентом, которого следует примонтировать – Samsung 160Gb. Он у меня внешний, подключаемый через адаптер-переходник.

Итак, подключаем внешний диск к компьютеру через USB:

# lsusb Bus 001 Device 002: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge

Сам диск не отобразился, но видим USB/SATA|IDE переходник.

Запускаем lvm консоль

и получаем список групп логических томов

lvm> vgscan Reading all physical volumes. This may take a while… Found volume group “VolGroup00” using metadata type lvm2 Found volume group “VolGroup00” using metadata type lvm2

Как видим стараниями инстралятора CentOS мы получили две одинаковые группы. Будем исправлять это положение. Смотрим какие разделы активны, наших разделов, только что вставленного диска, тут быть не должно.

lvm> lvscan ACTIVE ‘/dev/VolGroup00/LogVol00’ [72.47 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol01’ [1.94 GB] inherit

С нового диска разделов нет. Оба раздела с несущего активного диска в 80Gb Перевести в пассивное состояние активные можно вот так:

Но для несущего диска это возможно либо если загрузиться с Rescue CD либо с консоли перейти в init 1 и размонтировать корневой раздел руками.

Из-за того что имена групп томов совпадают – переименование по имени не подойдёт. Благо команда переименования понимает UUID которые у дисков, Слава Богу, отличаются.

lvm> vgdisplay — Volume group — VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 148.94 GB PE Size 32.00 MB Total PE 4766 Alloc PE / Size 4766 / 148.94 GB Free PE / Size 0 / 0 VG UUID pkb1cy-1JSf-n3Px-UYRi-eImv-e1Eg-t12BgY

— Volume group — VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 74.41 GB PE Size 32.00 MB Total PE 2381 Alloc PE / Size 2381 / 74.41 GB Free PE / Size 0 / 0 VG UUID SjBmkg-YvMz-B160-tEds-Vqrg-SFMS-mYNimL

Запоминаем VG UUID pkb1cy-1JSf-n3Px-UYRi-eImv-e1Eg-t12BgY

lvm> vgrename pkb1cy-1JSf-n3Px-UYRi-eImv-e1Eg-t12BgY MyNewGroupName

Смотрим что у нас получилось на физическом уровне

lvm> pvscan PV /dev/sda2 VG vg160 lvm2 [148.94 GB / 0 free] PV /dev/hda2 VG VolGroup00 lvm2 [74.41 GB / 0 free] Total: 2 [223.34 GB] / in use: 2 [223.34 GB] / in no VG: 0 [0 ]

И на логическом уровне

lvm> lvscan inactive ‘/dev/vg160/LogVol00’ [147.00 GB] inherit inactive ‘/dev/vg160/LogVol01’ [1.94 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol00’ [72.47 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol01’ [1.94 GB] inherit

Прелесть! Вот она наша искомая партиция /dev/vg160/LogVol00 Активируем

Первый раз пока я не выполнил эту команду и примонтировал раздел как указано ниже, я порадовался. Он примонтировался, но почти сразу обнаружил странное сходство с несущей системой. Оказалось что под чужим именем vg160 примонтировался VolGroup00. Странно.

lvm> lvscan ACTIVE ‘/dev/vg160/LogVol00’ [147.00 GB] inherit ACTIVE ‘/dev/vg160/LogVol01’ [1.94 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol00’ [72.47 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol01’ [1.94 GB] inherit

Вот теперь всё в порядке. Выходим

Так примонтируем же её (раздел был сформатирован в ext3 что я и указал явно)

# mount -t ext3 /dev/vg160/LogVol00 /mnt/yourmountpoint

И насладимся маленькой победой…

Сразу после размонтирования, я деактивировал раздел. Чтобы как было. :) —————— Добавлено 06.03.2010. Хорошо когда диски разные по ёмкости, и когда разделы отведённые под LVM разных размеров. А вот что делать когда они одинаковые я так и не придумал. Можно получить PV UUID

lvm> pvdisplay — Physical volume — PV Name /dev/sdd2 VG Name VolGroup00 PV Size 232.78 GB / not usable 2.71 MB Allocatable yes (but full) PE Size (KByte) 32768 Total PE 7449 Free PE 0 Allocated PE 7449 PV UUID bm619i-4t01-CciJ-g4dj-L0tI-AO0U-fhnZIj

— Physical volume — PV Name /dev/dm-0 VG Name VolGroup00 PV Size 232.69 GB / not usable 4.08 MB Allocatable yes PE Size (KByte) 32768 Total PE 7446 Free PE 1 Allocated PE 7445 PV UUID QUjEez-2PIX-VsGM-WHdY-x3MH-qORb-kt54QI

Чёрт возьми. Я не знаю что сказать… Свой вопрос решил я просто. У меня как видно диски всё же немножечко разные, что дало возможность установить связь на основании размера.

lvm> vgdisplay — Volume group — VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 232.78 GB PE Size 32.00 MB Total PE 7449 Alloc PE / Size 7449 / 232.78 GB Free PE / Size 0 / 0 VG UUID 7F02i4-Jl3e-isZo-fdga-l1K9-bn0E-wVLRwX

— Volume group — VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 232.69 GB PE Size 32.00 MB Total PE 7446 Alloc PE / Size 7445 / 232.66 GB Free PE / Size 1 / 32.00 MB VG UUID NhzMnM-0QCM-bgVl-wj0i-OznP-7k7q-go3PMm

lvm> vgrename 7F02i4-Jl3e-isZo-fdga-l1K9-bn0E-wVLRwX Seagate-250-sata-3ND208FP Volume group “VolGroup00” successfully renamed to “Seagate-250-sata-3ND208FP”

Гипотетически можно предложить всегда переименовывать свой том не оставляя его по умолчанию. Другой вопрос в том, что активный диск нельзя переименовать. :)

lvm> vgrename NhzMnM-0QCM-bgVl-wj0i-OznP-7k7q-go3PMm Toshiba-M750-VG00 CTRL-c detected: giving up waiting for lock Volume group “VolGroup00” still has active LVs

Ну это хоть какое-то решение. Хотя обидно, ставить том в другую машину чтобы переименовать… —————— Добавлено 07.03.2010. А теперь переименуем том загрузочного диска. Перед операцией помойте руки потому как последствия могут быть непредсказуемыми мы – въядряемся внутро, точнее внедряемся в ядро. Пациент (диск) вчерашний, поэтому для ссылок смотрите понимания “откуда это взялось” смотрите выше. Вот например повторяю что раньше он носил “гордое” имя выдаваемое по умолчанию всем системным дискам – VolGroup00.

Прежде всего примонтируем диск. Он у меня подключён через USB-SATA переходник, лежит на столе и мерно гудит. Видится как устройство /dev/sdd Предварительно созданы следующие каталоги: /mnt/sdd /mnt/sdc /mnt/newinit после завершения работы я их удалю.

[root@m750 mnt]# vgchange -a y File descriptor 7 (pipe:[317532]) leaked on vgchange invocation. Parent PID 32614: bash 2 logical volume(s) in volume group “Seagate-250-sata-3ND208FP” now active 2 logical volume(s) in volume group “VolGroup00” now active [root@m750 mnt]# lvscan File descriptor 7 (pipe:[317532]) leaked on lvscan invocation. Parent PID 32614: bash ACTIVE ‘/dev/Seagate-250-sata-3ND208FP/LogVol00’ [230.84 GB] inherit ACTIVE ‘/dev/Seagate-250-sata-3ND208FP/LogVol01’ [1.94 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol00’ [227.03 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol01’ [5.62 GB] inherit

Монтируем разделы диска. Нам важны корень “/” и “/boot”

[root@m750 mnt]# mount /dev/Seagate-250-sata-3ND208FP/LogVol00 /mnt/sdd [root@m750 mnt]# mount /dev/sdd1 /mnt/sdc [root@m750 mnt]# cd /mnt/newinit

Как называется у меня init файл ядра? initrd-2.6.18-128.1.10.el5.img Умоляю вас! Сделайте копию этого оригинального init файла во избежание проблем. Примечание. Ядер может быть много – выберите одно из тех которое используете по умолчанию. Когда всё получите повторите процедуру с другими нужными ядрами. Неизменённые я бы удалил. Итак файл initrd распакуем в наш созданный каталог newinit. Мы туда кстати уже перешли. :)

[root@m750 newinit]# gunzip -c /mnt/sdc/initrd-2.6.18-128.1.10.el5.img | cpio -idmv

Теперь нужно открыть файл /mnt/newinit/init в любом вашем редакторе и заменить все упоминания VolGroup00 на новое Seagate-250-sata-3ND208FP и сохранить файл. Дальше собираем всё обратно в init файл. Обращаю внимание мы находимся в каталоне /mnt/newinit/

[root@m750 newinit]find . | cpio –quiet -c -o > ../newinitrd

выйдем на уровень выше и запакуем созданный там initrd

[root@m750 newinit]# cd .. [root@m750 mnt]# gzip -9 < newinitrd > initrd-2.6.18-128.1.10.el5.img

И полученный файл запишем в каталог boot нашего препарируемого диска. Это сейчас /mnt/sdc/ Ещё раз повторяю! Старый скопировали? Достаточно немного другого имени! У файла initrd-2.6.18-128.1.10.el5.img не забыть поставить атрибуты 600!

Теперь нужно поправить grub или что там у вас? У меня /mnt/sdc/grub/menu.lst В нём нужно к указанному initrd который мы правили прописать путь с учётом нового имени тома. Было:

title CentOS (2.6.18-128.1.10.el5) root (hd0,0) kernel /vmlinuz-2.6.18-128.1.10.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-128.1.10.el5.img

title CentOS (2.6.18-128.1.10.el5) root (hd0,0) kernel /vmlinuz-2.6.18-128.1.10.el5 ro root=/dev/Seagate-250-sata-3ND208FP/LogVol00 rhgb quiet initrd /initrd-2.6.18-128.1.10.el5.img

И попоравим файл fstab /mnt/sdd/etc/fstab Было:

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1 /dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/Seagate-250-sata-3ND208FP/LogVol00 / ext3 defaults 1 1 /dev/Seagate-250-sata-3ND208FP/LogVol01 swap swap defaults 0 0

По ходу можно скинуть кеш LVM. Файл находится здесь /mnt/sdd/etc/lvm/cache/ Можно переместить во временный каталог.

И наконец скинем все кеши на диски и всё отключим

[root@m750 mnt]# sync [root@m750 mnt]# umount /mnt/sdc [root@m750 mnt]# umount /mnt/sdd [root@m750 mnt]# sync [root@m750 mnt]# vgchange -a n [root@m750 mnt]# lvscan File descriptor 7 (pipe:[317532]) leaked on lvscan invocation. Parent PID 32614: bash inactive ‘/dev/Seagate-250-sata-3ND208FP/LogVol00’ [230.84 GB] inherit inactive ‘/dev/Seagate-250-sata-3ND208FP/LogVol01’ [1.94 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol00’ [227.03 GB] inherit ACTIVE ‘/dev/VolGroup00/LogVol01’ [5.62 GB] inherit

Отключаем провода от диска, ставим в его комп и пробуем с него загрузиться. Когда всё удачно – подчищаем за мобой мусор.

📎📎📎📎📎📎📎📎📎📎