Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Из RAID1 в RAID0 без потери данных


Автор: nIkTo 13.1.2011, 23:10
На сервере 2 диска по 400Gb на каждом по три раздела :
Цитата

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2102562   fd  Linux raid autodetect
/dev/sda2             263         295      265072+  fd  Linux raid autodetect
/dev/sda3             296       48641   388339245   fd  Linux raid autodetect

Всё собрано в RAID1
Цитата

Debian-50-lenny-64-LAMP:/var/lib/mysql# cat /etc/fstab
proc /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/md0 none swap sw 0 0
/dev/md1 /boot ext3 defaults 0 0
/dev/md2 / ext3 defaults 0 0
Debian-50-lenny-64-LAMP:/var/lib/mysql#

Mysql исчерпал все запасы свободного пространства. Поэтому решено перейти на RAID0 но похоже без потери данных тут не обойтись, соответственно надо делать бэкап базы, она занимает 388Гб, так как дамп делать некуда, всё свободное место израсходована, похоже выход только сливать каталог с базами по ftp на сторонний сервер, но тут минус перерасход трафика.

Может кто подскажет как "дешевле" из RAID1 перейти на RAID0, может можно как-то один из дисков вывести из массива, потом туда сделать дамп, слить его, потом соорудить raid0 и потом восстанавливать дамп мускуля ...

У кого какие идеи ?

Автор: 1000000dollars 14.1.2011, 01:51
Судя по /dev/md рейд или программный или полуаппаратный. Лично я делать из этого RAID-0 не рискну (если потеря данных недопустима), но это всего лишь моё личное мнение. Предположив, что я на это пошёл под страхом смерти:
во-первых, сделаю бэкап всех данных (не только баз, но и всей операционки) на другой носитель, например USB-HDD или что-то типа того (даже за свой счёт);
во-вторых, соберу RAID-0 из имеющихся дисков;
в-третьих, верну данные обратно, восстанавливая загрузчик и правя конфигурацию операционки (/etc/fstab и прочие зависящие вещи).

Теоретически задача преобразования RAID-1 в RAID-0 проста - поделить данные диска на страйпы да раскидать по имеющимся винтам, а так как RAID-1 это зеркало - то задачи вообще нет - всё уже сделано, просто чтение будет происходить то с одного диска, то с другого. Но это только теория.

Если RAID полуаппаратный, то при реконфигурировании контроллер может провести инициализацию  дисков (а скорее всего так и будет) и данные будут потеряны.

В случае программного - вообще ничего прогнозировать не возьмусь, так как чёрт его знает какой код реализует программный RAID - я эти исходники не писал и даже не читал smile

PS: о результатах отпиши - интересно чем дело кончится.

Автор: Сумасшедший 14.1.2011, 09:06
Дешевле доставить на время ещё один диск (аренда в ДЦ/купить и потом сдать по манибэку), сделать на него копию данных и сделать всё по человечески.
Очень интересно узнать как спит лицо администрирующее этот сервер и не делающее бэкапов.

Автор: ToshaCh 14.1.2011, 11:02
Цитата(Сумасшедший @  14.1.2011,  09:06 Найти цитируемый пост)
Очень интересно узнать как спит лицо администрирующее этот сервер и не делающее бэкапов. 

Гы. Да вы что! У него же RAID1! Это же супер надёжно! Видать просто чел никогда не слышал страшилки про полное выгорание датацентра вместе со всеми серверами.

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

Цитата(nIkTo @  13.1.2011,  23:10 Найти цитируемый пост)
Mysql 

Цитата(nIkTo @  13.1.2011,  23:10 Найти цитируемый пост)
она занимает 388Гб


Да ну ладно. Последний раз когда я мацал mysql (признаю очень давно) оно было не работоспособно уже на нескольких гектарах, а тут 388. Что-то изменилось?

Автор: nIkTo 14.1.2011, 13:04
1000000dollars, рейд программный.
Из данных важна только база MySQL

Сумасшедший, заказывать HDD не вариант.

ToshaCh, да, база 388Гб работает вполне нормально. Руководства никакого нет.

По делу так ничего толкового и не услышал.

Автор: mihanik 14.1.2011, 18:22
0. останавливаешь все важные демоны по работе с базами данных и т.п., что может покочать БД.

1. Читаешь это - http://xgu.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_RAID_%D0%B2_Linux

2. Удаляешь из имеющегося рэида диск.

3. Удаляешь с него суперблок и т.п. Добиваешься того, чтобы с этого диска можно было грузиться.

4. Грохаешь реид

5. Удаляешь разделы с последнего оставшегося в рэиде диска

6. Создаёшь на основе первого диска рэид0

7. Добавляешь второй оставшийся диск к рэиду

8. изменяешь размеры файловой системы

НО ПЕРЕД ЭТИМ СДЕЛАЙ БЭКАПЫ!!!

Автор: nIkTo 15.1.2011, 01:00
mihanik, дошёл до 6ого пункта (загрузился с /dev/sda):

Цитата

mdadm --create /dev/md0 --level=0 --raid-disks=2 missing /dev/sdb1

Цитата

mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Thu Nov  4 05:22:05 2010
Continue creating array? y
mdadm: This level does not support missing devices


Цитата

fdisk -l

Цитата

Disk /dev/sda: 400.0 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000185b8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2102562   fd  Linux raid autodetect
/dev/sda2             263         295      265072+  fd  Linux raid autodetect
/dev/sda3             296       48641   388339245   fd  Linux raid autodetect

Disk /dev/sdb: 400.0 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000281d3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2102562   fd  Linux raid autodetect
/dev/sdb2             263         295      265072+  fd  Linux raid autodetect
/dev/sdb3             296       48641   388339245   fd  Linux raid autodetect


Цитата

mount

Цитата

/dev/sda3 on / type ext3 (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda2 on /boot type ext3 (rw)


Цитата

cat /proc/mdstat

Цитата

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>

Автор: mihanik 15.1.2011, 09:21
nIkTo, бэкапы делал?
Это важно, потому что я дал идею. Я так с 0-ми рэидами никогда не работал.
По похожей схеме делал 1-й рэид - http://forum.vingrad.ru/index.php?showtopic=318870&view=findpost&p=2274967

Цитата(nIkTo @  15.1.2011,  01:00 Найти цитируемый пост)
missing 


А чё missing-то?

У тебя есть два диска, их и собирай в рэид.


Автор: nIkTo 15.1.2011, 12:14
mihanik, RAID1 это просто зеркалирование, а RAID0 уже сложнее ...

Цитата(mihanik @  15.1.2011,  09:21 Найти цитируемый пост)

А чё missing-то?

У тебя есть два диска, их и собирай в рэид.


Ну тут ответ как-бы очевиден (ведь мы загружены с /dev/sda) :
Цитата

mdadm --create /dev/md0 --level=0 --raid-disks=2 /dev/sda1 /dev/sdb1

Цитата

mdadm: Cannot open /dev/sda1: Device or resource busy
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Thu Nov  4 05:22:05 2010
mdadm: create aborted


Есть ещё идеи ?

Добавлено через 1 минуту и 30 секунд
mihanik, да бэкап сделал

Автор: mihanik 15.1.2011, 12:31
Цитата(nIkTo @  15.1.2011,  12:14 Найти цитируемый пост)
mdadm: Cannot open /dev/sda1: Device or resource busy


Диск занят... Отмонтировать нужно...

Цитата(nIkTo @  15.1.2011,  12:14 Найти цитируемый пост)
Есть ещё идеи ?

Есть.
У тебя получилось так, что ты зеркало "разбил" и сейчас отдельный диск из этого зеркала является полноценным нормальным системным диском + ещё один диск без разделов...
Может на новом диске создать один большой раздел и перенести все базы туда?
Просто нулевой рэид такой отказонеустойчивый... При выходе из строя одного из дисков всё валится напрочь.

Автор: nIkTo 15.1.2011, 13:25
mihanik, а как же я его отмонтирую если он занят ?
Собствнно вот :
Цитата

umount /dev/sda3

Цитата

umount: /: device is busy

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)