LINUX.ORG.RU
ФорумAdmin

[RAID1] [XXI век, блджад] Перенос существующей системы без cp -ax

 


0

3

Имеем сервер CentOS 5.6. На системном HDD существует следующая разбивка:

sda1 - /boot
sda2 - extended
sda5 - swap
sda6 - /
sda7 - /var

Также в машину воткнуты ещё 4 диска, попарно объединённые в partitionable RAIDs, на которых лежат swap, всяческие БД и образы виртуалок для KVM.

Personalities : [raid1]
md_d1 : active raid1 sdc[0] sdf[1]
      976762496 blocks [2/2] [UU]

md_d0 : active raid1 sdb[0] sdd[1]
      78150656 blocks [2/2] [UU]

unused devices: <none>

Также имеется sde, по размеру соответствующий sda. Необходимо из sda и sde создать software-RAID1.

Попытка создания md_d2 успешно провалилась. mkinitrd, даже патченый, оказался неспособен создать initrd, определяющий md_d2 при старте системы. На других машинах система лежит на md_d0, и он, после некоторых шаманств, при загрузке успешно поднимается. md_d2 - ни в какую.

Придется создавать classic sw-RAID (тот, который по разделам). Но все руководства на эту тему, которые я нашёл в Сети, подразумевают создание копии таблицы разделов на свободном HDD и копирование (cp -ax, пля, вы понимаете!11) на него живой системы с последующей синхронизацией.

Заниматься извращениями на костылях в виде cp, tar, rsync и других, не менее православных способов пофайлового копирования операционной системы, на промышленном сервере, на котором крутится множество разнообразных сервисов, откровенно неохота.

Собственно, вопрос: существуют ли методы переноса работающей системы на sw-RAID без использования cp?

★★★

Последнее исправление: nbw (всего исправлений: 2)

>> Собственно, вопрос: существуют ли методы переноса работающей системы на sw-RAID без использования cp.

pvmove

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

кхм, а где в посте хоть слово про использование LVM? ТС, как я понял, спрашивает, как сделать RAID1 из существующей системы и свободного диска.

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

> кхм, а где в посте хоть слово про использование LVM?

На данной машине при инсталляции LVM создан не был.

ТС, как я понял, спрашивает, как сделать RAID1 из существующей системы и свободного диска.

Совершенно верно.

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

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

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

rsync в два прохода?
один раз сделал, источник перемонтировал в ro, и снова сделал.
уж покрасивше cp -ax...

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

> rsync в два прохода?

Покрасивше, не спорю. Но хотелось бы обойтись без копирования вообще, пусть и с даунтаймом в пару часов. Хотя начинаю понимать, что это вряд ли возможно.

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

>это вряд ли возможно.

Да, часть места на разделе будет занимать суперблок RAID'а, то есть результирующая ФС будет меньше. В теории, можно сначала уменьшить размер ext3, потом создать суперблок RAID, но копирование в таком случае выглядит проще.

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

> часть места на разделе будет занимать суперблок RAID'а

Так, поподробнее, пожалуйста) У меня на sda 534 MB нераспределенного пространства (после всех разделов). То есть, можно этим воспользоваться и обойтись без предварительного переноса на свежесозданный массив?

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

В принципе, да. Версия суперблока должна быть 0.90 или 1.0. В результате должен получиться partitionable array.

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

> В результате должен получиться partitionable array.

Дык! Я ж в первом посте написал, partitionable array с номером, бо'льшим 0, initrd при загрузке не собирает.

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

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

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

> Ну так выясни, почему не собирает :)

Поскольку на не собравшемся массиве находится «/», система валится в kernel panic. А в таком виде я ничего пока диагностировать не умею.

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

>> Поскольку на не собравшемся массиве находится «/», система валится в kernel panic.

Хм, в Дебиане система вылетает в шелл initrd, в таком случае. Если массив не собрался по причине типа ошибки в mdadm.conf, то можно даже собрать его вручную, нажать ^D и загрузка пройдёт успешно — проверено лично. Видимо, initrd у тебя какой-то не такой, или ядро настроено иначе (не помню, где определяется поведение системы в таких случаях).

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

> в Дебиане система вылетает в шелл initrd

У меня не Дебиан. Но, в таком случае, можно ли передачей какого-то параметра через grub при загрузке вызвать этот самый initrd shell искусственно?

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

Разве что panic='время в секундах'. Как я понимаю, initrd должен уметь обрабатывать эту ситуацию.

Ну и если это не работает, можно разобрать кривой initrd и проверить хотя бы mdadm.conf на предмет ошибок, т.к. автоматика не всегда делает всё хорошо.

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

> можно разобрать кривой initrd и проверить хотя бы mdadm.conf на предмет ошибок

Расколупал кривой initrd. mdadm.conf внутре вообще не было, никакого. Буду анализировать причины). Спасибо за подсказку.

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

Автодетект работает для разделов с типом fd, для целого диска, как у ТС, — только сборка из initrd.

GotF ★★★★★
()

nbw> Заниматься извращениями на костылях в виде cp, tar, rsync и других, не менее православных способов пофайлового копирования операционной системы, на промышленном сервере, на котором крутится множество разнообразных сервисов, откровенно неохота.

Отказался от LVM на промышленном сервере, а теперь против извращений?

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

> Отказался от LVM на промышленном сервере, а теперь против извращений?

*WALL* Так получилось, тудым его растудым...

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

Отказался от LVM на промышленном сервере, а теперь против извращений?

посмотрел я как бы это выглядело с lvm изначально - это тоже те еще пляски и от cp никуда не деться, ну и 3 ребута в нагрузку.
да вы издеваетесь? Ж)
почему с ufs мне надо сделать

# metainit -f d1 1 1 c0t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c0t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# metaroot d0
# lockfs -fa
# ls -l /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          88 Feb  8 15:51 /dev/rdsk/c1t3d0s0 ->
../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a

# init 0

ok nvalias backup_root /pci@1f,0/pci@1,1/ide@3/disk@0,0:a
ok setenv boot-device disk backup_root net
ok nvstore
ok boot

# metattach d0 d2
d0: Submirror d2 is attached
и дальше по списку сколько разделов есть.
готого

после этого lvm называется рабочим, не извратным инструментом? )

про zfs промолчу как там в пол-пинка превращается в mirror, чтоб совсем некоторых не расстраивать )

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

Ну, не знаю, как там с ZFS, но в мерзких вендувсах (2k3) зеркало делается без всяких копирований и с одной перезагрузкой. Был удивлён, что с линуксом в такой ситуации надо трахаццо стоя в гамаке на костылях.

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

>>Ну, не знаю, как там с ZFS,

ребут ненужен совсем. одна команда.

но в мерзких вендувсах (2k3) зеркало делается без всяких копирований и с одной перезагрузкой


я подозревал )

Был удивлён, что с линуксом в такой ситуации надо трахаццо стоя в гамаке на костылях.


и почему я не удивлен?
но охрарактеризовано точно Ж)

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

EvgGad_303> посмотрел я как бы это выглядело с lvm изначально - это тоже те еще пляски и от cp никуда не деться, ну и 3 ребута в нагрузку.

Ты просто не умеешь его готовить.

1. Делаешь поломанный миррор md2 на свободном диске
2. Добавляешь его в VG
3. Делаешь миграцию данных с sda на md2 (pvmove)
4. Убираешь sda из VG (vgreduce)
5. Добавляешь sda в миррор
6. настраиваешь груб
7. Перезагрузка для проверки

Все это без бубна и без простоя сервера.

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

>>Ну, не знаю, как там с ZFS,

ребут ненужен совсем. одна команда.

Не совсем :) Если хочешь потом таки загрузиться, может понадобиться еще одна :)

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

> Все это без бубна и без простоя сервера.

Но не без плясок

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

Добавлю, что для интереса проделывал подобным «конвертацию» RAID1 в RAID5 (есть более иной способ, но меня он не заинтересовал) с временной миграцией системы на дополнительный носитель посредством pvmove. Понадобилось ровно один раз сделать update-initramfs и dpkg-reconfigure grub-pc в конце. Перезагрузка нужна была только для проверки.

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

>>Ты просто не умеешь его готовить.

skipd


Ъ?
по моей ссылке не ходил, там все тоже и написано, только у тебя упущено несколько моментов. или /boot уже не надо выносить?;)
там по ссылке внизу есть еще посыл на похожую статью, о 4 страницах «без бубна» и 3 рестартах. это как объяснить?

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

дак яж про процедуру превращения в зеркало. так должно быть глубже ))

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

/boot — это мелочь

Что тебе надо объяснить в моем рецепте? И зачем мне читать твои статьи, если их суть ты кратко изложил — «с бубном и 3 рестартами»

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

>> или /boot уже не надо выносить?

На зеркале не надо. Да и даже если выносить, это не потребует лишних перезагрузок.

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

>>если их суть ты кратко изложил — «с бубном и 3 рестартами»

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

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

>> парадокс?

Да.

2 раза копировать данные

Один + синхронизация. В вундервафельных ФС это может быть проще за счёт того, что это одна ФС, а не универсальная система управления томами.

разве когда / на lvm не надо?

Разумеется, нет.

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

EvgGad_303> но 2 раза копировать данные - это ли не танцы? )

Поскольку это не требует остановки системы, то — нет, не танцы.

Кроме того, можно было и без копирования — сделать зеркало средствами самого LVM.

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

> Нужно было использовать файловые системы, поддерживающие снапшоты. //К.О.

Вы несколько опоздали, капитан. Я это знал ещё до того, как начал тему, да и говорили тут уже о LVM.

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

>> сделать зеркало средствами самого LVM

Но лучше не делать :)

Интересно, почему? LVM mirroring чем-то неполноценен? (Я не очень хорошо знаком с LVM, потому и спрашиваю)

nbw ★★★
() автор топика
Ответ на: комментарий от sdio
1. Делаешь поломанный миррор md2 на свободном диске
2. Добавляешь его в VG
3. Делаешь миграцию данных с sda на md2 (pvmove)
4. Убираешь sda из VG (vgreduce)
5. Добавляешь sda в миррор
6. настраиваешь груб
7. Перезагрузка для проверки

Как я понимаю, это имел в виду GotF в первом же комментарии) Но в таком случае ведь получится md поверх LVM? Это не даст потери в производительности?

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

Чтобы зеркало не синхронизировалось заново при каждой активации группы, corelog должен размещаться на отдельном физическом томе, что вряд ли удобно в большинстве случаев. Также, насколько мне известно, нельзя выполнить scrubbing собственными средствами.

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

>> Но в таком случае ведь получится md поверх LVM?

Наоборот. MD выступает в качестве PV.

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

ладно ушел в гугель, хотя после тех мануалов меня терзают сомнения.
а вместо 13 слов можно было написать да/нет.

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

tnx

и кста, что-то пропустил

2 раза копировать данные

Один + синхронизация.


а это не одно и тоже? )

В вундервафельных ФС это может быть проще блаблабла


пример с ufs использует svm(solaris volume manager), а zfs и есть система управления томами в себе. все проще некуда ))

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

>> а это не одно и тоже?

По сути да. Однако синхронизация может идти с невысоким приоритетом, отдавая полосу I/O по первому требованию, так что даже на нагруженном сервере это будет не слишком заметно.

пример с ufs использует svm

Ok.

а zfs и есть система управления томами в себе

Мне как раз это [субъективно] не нравится, хотя в свободное время можно посмотреть zfs или btrfs, но на практике мне удобнее разделение систем, даже если оно в чём-то проигрывает комбайну.

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