Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: raid 1 с системным винтом  (Прочитано 3883 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
raid 1 с системным винтом
« : 10 Февраль 2012, 11:43:31 »
ubuntu 10.04 есть второй идентичный системному винт, как сделать из них рэйд 1 не запоров системный диск и не останавливая систему, возможно ли ? типа как в винде создать зеркало на второй винт

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #1 : 10 Февраль 2012, 16:14:33 »
http://www.debianforum.ru/index.php?topic=1503.0
http://www.howtoforge.com/software-raid1-grub-boot-debian-etch
без перезагрузки, конечно, не получится, но вообще да, работающую систему вполне реально "переехать"
лучше на "ты"

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #2 : 10 Февраль 2012, 16:21:11 »
спасибо, курю форумы, можно конечно перезагружаться, хотя винда позволяет на лету все разрулить, думал просто не вкурсе я каких то инструментов, но надо так надо - перезагружусь

Пользователь решил продолжить мысль 10 Февраль 2012, 16:37:06:
все упирается в то что системный диск смонтирован, получается что мне только из livecd можно все сделать, а это плохо т.к. не будет интернета и не встанет mdadm, может как-то можно из РАБОТАЮЩЕЙ системы создать массив (это кстати я уже сделал) а потом скопировать туда системный диск ?
« Последнее редактирование: 10 Февраль 2012, 16:37:06 от winmasta »

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #3 : 10 Февраль 2012, 21:06:55 »
дружище, вторая ссылка в моем посте.
создаешь из второго харда битое зеркало, копируешь на него корень, правишь фстаб и груб. перезагружаешься. добавляешь в массив первый диск, массив синхронизируется, получаешь целое зеркало, вуаля!
ЗЫ. может быть и можно извратиться с каким-нибудь switch_root, но лучше не пробовать. в конце концов, минутный простой - не смертельно
лучше на "ты"

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12076
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #4 : 11 Февраль 2012, 12:12:53 »
Мне кажется, что можно попробовать и на лету - есть же опция remount у mount, которая позволяет даже корень перемонтировать...(если я не ошибаюсь). Но без полноценного эксперимента на виртуалке, я бы на рабочем серваке не делал бы ничего. Сначала стоит потренироваться на кошках. ;) 

Пользователь решил продолжить мысль 11 Февраль 2012, 12:17:32:
Да и очень полезная инструкция по второй ссылке от dimas000 чуточку устарела в части настроек GRUB - там настраивается Grub legacy, он же - Grub 1, а все последние дистрибутивы Ubuntu работают с Gubb, он же - grub 2. 10.04 (если мне не изменяет память) тоже использует Grub2.

Т.е. настройку груба надо делать иначе, и кстати GRUB 2 умеет грузится с софтраида (в отличии от того что мудрили в статье с первым Grub).

И поэтому тренировка "на кошках" становится строго необходимой.
« Последнее редактирование: 11 Февраль 2012, 13:40:47 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #5 : 12 Февраль 2012, 21:02:09 »
ну сделаешь grub-install на рэйд и на оба харда, делов-то. вообще да, должен поддерживать. тему на дебианфоруме полистай, там тоже чел про гроб спрашивал, где-то ссылка завалялась на дискуссию по теме. ну и на флэшке/виртуалке можно попробовать грузануться с зеркала.
да, remount - это перемонтирование фс с новыми опциями (типа -o remount,ro). смонтировать туда же другую фс - не покатит.
гм, в man pivot_root предлагают init запускать через него... я хз. а в man switch_root вообще интересное предупреждение...
лучше на "ты"

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12076
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #6 : 13 Февраль 2012, 23:49:06 »
Заинтересовался темой и сделал лабораторную работу, привожу отчет:
Дано:
Виртуалка - в ней ubuntu server 11.10 (практически голый - т.е. никакого серверного ПО не ставил)
Диск 2,5Гб побит так - 2 ГБ - корень, 500мб своп,
Требуется: - добавив второй диск создать raid1 и перенести на него систему (и корень и своп).

Действия:
Создаю второй диск 2,5ГБ цепляю его к виртуалке вторым, гружусь.
Первым делом форматирую второй винт
(Нажмите, чтобы показать/скрыть)
и создаю на нем массив:
(Нажмите, чтобы показать/скрыть)
Массив создается с пропущенным диском и поэтому работает в degrade режиме. ВНИМАНИЕ Массив делается не на диске, а на разделе - зачем - смотри комментарий №1
Далее создаю на массиве разделы под будущую систему
(Нажмите, чтобы показать/скрыть)
создаю такие же разделы 2Гб под корень и остальное под своп (sfdisk -d /dev/sda | sfdisk /dev/md0 - может не прокатить т.к. диск массива - это раздел на диске, а значит в нем минимум на один трек меньше объем).
Создаю файловые системы на разделах зеркала
(Нажмите, чтобы показать/скрыть)
Монтирую будущий корень и копирую в него текущий корень
(Нажмите, чтобы показать/скрыть)
После этого прицепляю системные каталоги к новому корню, что бы потом сделать chroot в новый корень (это важно - зачем объясню в комментарии №2). И собственно чрутаюсь в новый корень.
(Нажмите, чтобы показать/скрыть)
Вот я уже в будущм окружении (с корнем на раиде) но пока в нем копия дискового корня. Приступим...
Для начала смотрим UUID-ы разделов на раиде и прописываем их в fstab (мне было лень мудрить с оснасткой на виртуальном сервере и я просто дописал вывод ls в fstab, а потом отредактировал его.
(Нажмите, чтобы показать/скрыть)

Затем я создаю новую конфигурацию Груба и проверяю, что в конфиг прописан раидный uuid для корня, и ставлю первую стадию груба на второй диск (который несет на себе часть зеркала).
(Нажмите, чтобы показать/скрыть)
Очень важный шаг! нужно прописать (хотябы на время) конфигурацию mdadm, которая позволит загрузится с деградированного массива (а у нас пока он именно такой)
(Нажмите, чтобы показать/скрыть)

dpkg-reconfigure вызовет перестройку initrd, но так как мы в chroot то он его перезапишет только в раидном корне (на реальном корне initrd сохранится как он был)

Ну собственно и все - система на раиде готова. Можно перегружатся и выбрать в BIOS загрузочным второй диск, или можно вернутся в реальную систему и обновить GRUB - он найдет вторую систему установленную на раиде и включит ее свое меню.
(Нажмите, чтобы показать/скрыть)

Перегрузившись в новую систему остается только довесить в раид первый диск и обновить на первом диске первую стадию груба.
(Нажмите, чтобы показать/скрыть)
После чего сморим через cat /proc/mdstat как перестраивается наш деградированный массив в полноценно рабочий.

Результат: Система на раиде.

Проверка: гашу виртуалку, отсоединяю первый диск, гружусь - норма (массив деградированный на втором диске, груб стартанул со второго диска). Снова гашу - подцепляю обнуленный второй диск, создаю на нем MBR, раздел, и добавляю его в массив (как выше добавлял sda1) - система в нормальном режиме.

Повторяю то-же но вырывая и обнуляя второй диск - все работает.   

ПРОФИТ!! :D

Комментарии:
№1: Если вы создадите массив на весь диск - то на диске может быть занят первый трек - и грубу некуда будет вставать. А кроме того Груб вообще не понимает что на диске творится когда на нем раид стоит и не может встать туда. Другой (на мой взгляд - неправильный) вариант - создавать на каждый раздел - свой массив. Идеологически - массив это диск, а не раздел, и если вы, имея массив, запустите fdisk -l то он вам на каджый раид массив выдаств информацию именно как о диске и будет на каждим массиве искать таблицу разделов.

№2: chroot в новый корень на этапе настройки позволяет сделать все настройки в новом корне(который на раиде) и не трогать текущий (который на простом диске), что позволит организовать загрузку как с корнем в раиде, так и с корнем на диске. Это может потребоваться если мы что-то намудрим в настройке нового раидного корня и не сможем загрузится в раидную версию нашей системы. Тогда остается шанс откатится полностью назад еще одной перезагрузкой.

ВАЖНЫЙ КОММЕНТАРИЙ КО ВСЕЙ РАБОТЕ: работа проводилась на витруалке и на сервере без какой-либо нагрузки (ни ПО никакого серверного не стояло, ни каких сервисов сервер не предоставлял и не использовался). Поэтому в момент копирования корня и после перезагрузки в раидую версию системы - ничего криминального не произошло. При наличии рабочих серверов это копирование может стать проблемой - т.к. данные в реальном корне уйдут по времени от данных на раидном, и перезагрузка "отбросит" системы на сервере в момент времени, когда была сделана копия. А кроме того - такое копирование может вообще разрушить целостность данных севисов т.к. разные файлы будут копироваться в разное время - тут надо копать либо в сторону FS которые могут делать снепшоты? Либо корень системы копировать а данные приложений переносить другими средствами (например для базы данных можно сделать реплику на раидном диске, и тогда сервис будет недоступен только на время перезагрузки, но важно настроит реплику что бы она нормально поднялась на новом корне, при недоступной части которая останется на оригинальном разделе, который при перезагрузке в "раидную систему" просто не будет смонтирован... Хотя и это можно предусмотреть, если старый раздел с данными монтировать на место где был смонтирован раидный раздел с данными во время настройки)   

Пользователь решил продолжить мысль 14 Февраль 2012, 00:04:02:
Пара интересных моментов:
update-grub берет данные о корне (откуда грузить ядро и initrd) из fstab и совершенно замечателно составляет конфиг для загрузки с раидного кроня (или /boot).
mdadm совсем не критичен к типам разделов - их менять не обязательно как это было по мануалу во второй ссылке. Но для красоты решения можно и поменять - что бы они корректно показывались в дисковых утилитах.


Пользователь решил продолжить мысль 14 Февраль 2012, 00:07:23:
С remount - ничего не получилось  :-\ - смонтировать то второй корень через --bind можно, а вот отцепить корень оригинальный или в ro его перемонтировать - не выходит - дофигищи процессов держат на нем открытые на чтение файлов :(.
« Последнее редактирование: 14 Февраль 2012, 20:15:03 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #7 : 14 Февраль 2012, 11:39:55 »
Вечером буду пробовать, спасибо за инфу

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12076
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #8 : 14 Февраль 2012, 12:20:23 »
Вот еще на вики выложил то же самое, думаю тема будет интересна не одному человеку.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #9 : 14 Февраль 2012, 12:40:38 »
raid-level=1 скорее всего ?

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12076
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #10 : 14 Февраль 2012, 12:52:06 »
raid-level=1 скорее всего ?
Да - очипятался. поправил.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #11 : 14 Февраль 2012, 12:56:30 »
cp -dpRx не работает - "пропущен операнд, задающий файл" и варианты я перебирал (типа cp -dpRx / /mnt/root) не могу скопировать корень

Пользователь решил продолжить мысль 14 Февраль 2012, 16:35:30:
короче так на копировании я и встал, не получается ничего скопировать ошибки лезут
« Последнее редактирование: 14 Февраль 2012, 16:35:30 от winmasta »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12076
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #12 : 14 Февраль 2012, 18:14:57 »
Извиняйте - писал все по памяти - поэтому многовато ошибок :(

cp -dpRx / /mnt/ - для моего примера (я монтировал будущий корень прямо в /mnt, не создавая в нем подкаталога)

Пользователь решил продолжить мысль 14 Февраль 2012, 18:22:46:
....ну и само собой это надо все под рутом делать.

Скопировать то можно разными путями - cp, rsync ... главное ключами накрутить что-бы не копировались примонтированные ресурсы, по символьным линкам, и все копировалось с сохранением прав.

Кстати rcync может быть интересен еще и тем, что его можно пустить дважды - первый раз копируя корень на новый раид, а второй раз, запустить им синхронизацию сразу перед перезагрузкой - что бы он долил свежие обновления на раид, накопившиеся на оригинальном корне за время настройки раида. Этим мы заметно уменьшим возможную рассинхронность сервера до и после перезагрузки (с диска на раидную версию).

Пользователь решил продолжить мысль 14 Февраль 2012, 19:50:35:
Попробовал rsync - ИМХО работает быстрее чем cp

Команда будет rsync -axu / /mnt/
ее же запускать перед перезагрузкой (отработает очень быстро т.к. перенесет только обновления).

Пользователь решил продолжить мысль 14 Февраль 2012, 20:14:47:
Кстати еще выяснил что для корректоной работы в chroot надо еще один каталог прибаиндить - /run
# mount --bind /run /mnt/run
« Последнее редактирование: 14 Февраль 2012, 20:14:47 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн winmasta

  • Автор темы
  • Активист
  • *
  • Сообщений: 348
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #13 : 15 Февраль 2012, 10:47:30 »
итак вижу пробую
1) пока все хорошо
2) при попытке примонтировать run пишет что такого каталога нет
3) далее все по плану
4) перезагрузка, меняем в биосе винт на второй
5) выходит меню груба есть пункт грузить с рэйда /dev/md1p1
6) грузимся оттуда - ошибка
7) грузимся из первого пункта (т.е. с первого диска)
8) все загружается
9) ls -l dev/disk/by-uuidрезультат
итого 0
lrwxrwxrwx 1 root root 10 2012-02-15 13:24 021abe6b-cd1a-416b-a23e-d2c923402383 -> ../../sdc3
lrwxrwxrwx 1 root root 10 2012-02-15 13:24 3b73d734-d714-4040-857e-34e53569bb5a -> ../../sdc2
lrwxrwxrwx 1 root root 10 2012-02-15 13:24 81679563-9c09-493d-a1ae-71d8d57fa718 -> ../../sdc1
lrwxrwxrwx 1 root root 11 2012-02-15 13:24 b572c22a-f6a3-4f41-8c3f-eedda9bc1eef -> ../../md0p1
уже был массив с файлами до этого новый делал как md1 в дисковой утилите видно зеркало но устройства /dev/md_d1p1 ... md_d1p3
10) где накосячил ?
11) еще момент, надо ли md1 писать в mdadm.conf т.к. первый там прописан

во вложении фото экрана с ошибкой

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: raid 1 с системным винтом
« Ответ #14 : 15 Февраль 2012, 11:14:04 »
там фстаб код ужас.
Нельзя друзья, дулу - AnrDaemon видите?
~.o

 

Страница сгенерирована за 0.123 секунд. Запросов: 24.