dil: (Default)
dil ([personal profile] dil) wrote2011-03-13 10:03 am

Задачка по комбинаторике для сисадминов

В компьютере есть два SATA-диска: небольшой диск A (относительно небольшой, подключенный как sda, на нём живут основные системные разделы) и B (sdb, побольше, со всякой остальной фигнёй – /home, /usr/local/, etc).

В порядке апгрейда закуплено ещё два диска, C и D, одинакового размера, большие.

Из дисков C и D предполагается с помощью mdadm построить RAID1 (зеркало), перелить на него содержимое диска B, на диск B перелить содержимое диска A, а сам диск A удалить.

Дополнительное условие: в наличии пока есть только два SATA-шлейфа. В связи с чем RAID1 придётся временно построить из одного диска C.

А собственно вопрос в том, как сделать зеркало из одного диска (с возможностью потом добавить к нему второй), и в какой последовательности переключать диски, имея всего два шлейфа, чтобы перелить их содержимое как указано выше.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

llivejo: (Default)

[personal profile] llivejo 2011-03-13 10:30 am (UTC)(link)
в качестве имени отсутствующего пока второго винта надо написать mdadm'у "missing"

перелить получится только если C будет загрузочным и сможет заменить A
llivejo: (Default)

[personal profile] llivejo 2011-03-13 10:32 am (UTC)(link)
а вообще я в таких случаях пользовался USB-коробочками для SATA-винтов

[identity profile] dil.livejournal.com 2011-03-13 10:36 am (UTC)(link)
usb-коробочки для SATA в наличии тоже нету. Зато есть загрузочная флешка :)
llivejo: (Default)

[personal profile] llivejo 2011-03-13 10:45 am (UTC)(link)
тогда все просто:
1) A + C, создаем raid1 на C+missing, сверху криптотом, на нем LVM, в нем том с rootfs от A
2) флешка + B + C, скидывам данные c B на логические тома
3) A + B, копируем A
4) флешка + С + D, ребилдим raid1
5) ???
6) profit!

[identity profile] dil.livejournal.com 2011-03-13 10:54 am (UTC)(link)
Про криптотом была другая задача :)

После четвертого шага остаются только C и D и загрузка с флешки.
Я бы четвертый шаг оставил до появления допольнительных шлейфов, а пока оставил B в качестве загрузочного и C с деградированным рейдом.
llivejo: (Default)

[personal profile] llivejo 2011-03-13 10:57 am (UTC)(link)
а я бы заребилдил и отложил D, типа временный бэкап, мало ли :-)
llivejo: (Default)

[personal profile] llivejo 2011-03-13 11:01 am (UTC)(link)
> Про криптотом была другая задача :)

это у меня в голове видимо raid1, LUKS и LVM крепко увязаны :-)

буквально в прошлом июле ковырялся http://llivejo.livejournal.com/107621.html

[identity profile] dil.livejournal.com 2011-03-13 01:26 pm (UTC)(link)
http://community.livejournal.com/ru_root/2207381.html :)
llivejo: (Default)

[personal profile] llivejo 2011-03-13 02:47 pm (UTC)(link)
о! "dil + raid + luks" :-)

[identity profile] lazylonelion.livejournal.com 2011-03-13 12:59 pm (UTC)(link)
насчёт конкретных команд (упомянутого параметра "missing") у меня только смутное представление (хоть и уверен что подобное предусмотрено в RTFM), но насчёт порядка действий я бы попытался сделать так:

1. временно откладываем [юзерские] данные на диске В в сторонку, вместо него к шлейфу подключаем диск С. Делаем из него degraided RAID1 с местом под данные (под копию диска В), а также любым способом делаем на нём root-fs -- хоть крипто-том, хоть игра с динамически переделываемыми партишинами -- что нам мешает переразбивать разделы на RAID-ах с сохранением данных?

Итак у нас есть почти пустой degraded RAID1 с загружабельным линуксом (копией диска А)

2. отключаем диск А, подключаем диск В, при этом грузимся с диска С. Копируем данные с В на С.

2а. (опционально) отключаем В, подключаем Д, синхронизируем С с Д, снова "ломаем" RAID1 и откладываем диск Д в сторонку до лучших времён (покупки шлейфа).

3. дилаем на диске В системный раздел вместо юзерских данных (копируем его с диска С).

4. грузимся с диска В и убиваем на диске С root-fs. Если надо -- растягиваем юзерский раздел на весь диск С без потери данных (если мы root-fs делали отдельным разделом). Но "а-ля крипто-том" в таких случаях наверное удобнее

Теперь у нас система на диске В и данные на degraded RAID1 С, что и требовалось.

Возможно моя схема оказалась бы проблемной, но начал бы я именно так.

[identity profile] lazylonelion.livejournal.com 2011-03-13 01:12 pm (UTC)(link)
"3. дИлаем..."

опечатка по Фрейду. ;)

[identity profile] dil.livejournal.com 2011-03-13 01:28 pm (UTC)(link)
Неплохой вариант, вдобавок не требующий дополнительных устройств типа загрузочной флешки или CD.

[identity profile] lazylonelion.livejournal.com 2011-03-13 02:57 pm (UTC)(link)
Кстати, как вариант, если на юзер-данных юзается несколько разделов, типа /home/, /usr/local/ и прочее таки на отдельных разделах, тогда п.1 ещё проще:

1. диск С разбиваем с перспективой на копию диска В, но один раздел (типа который под /home или любой другой) временно отдаём на root-fs, а соотв. данные с диска В копируем абы куда на диске С -- всё равно предполагается что места на нём хватает. :)

2. без изменений

3. без изменений

4. root-fs переносим с раздела на диске С на диск В. Освободившийся раздел на диске С используем по самому первоначальному предназначению (в нашем примере под /home)

[identity profile] lazylonelion.livejournal.com 2011-03-13 02:59 pm (UTC)(link)
...в этом варианте мы обходимся без "а-ля крипто-том" и без ресайза разделов с живыми данными.

[identity profile] lazylonelion.livejournal.com 2011-03-13 02:59 pm (UTC)(link)
Кстати на правах офф-топика, пару слов о пропорциях -- сколько под какой раздел выделено/юзается?
Просто любопытно. :)
Ну и наверное существенный вопрос - чем занят комп, какими задачами?

[identity profile] dil.livejournal.com 2011-03-13 06:43 pm (UTC)(link)
Вопрос проистекал из обычного домашнего компа общего назначения (роутер, файрвол, DHCP-сервер, файловый сервер, торрентокачалка, почтовый сервер и клиент, веб-браузинг, просмотр фильмов, слушание музыки, прикладное программирование, тестовый веб-сайт, база данных, и прочая, и прочая).
На самом деле, там раскладка несколько другая, но суть задачи от этого не меняется.

Обычно я делаю примерно так:
/ - 1-2 гигабайта, в зависимости от того, входит ли туда /boot (если корневая система шифрованная, он должен быть отдельно) и /tmp.
На серверах я еще обычно делаю отдельный /tmp на пару гигов.
/var - от пары гигабайт и до нескольких десятков, если там живёт много почты, баз данных и прочего барахла. Дома у меня там почтовый сервер, тестовые базы, поэтому 30 гигов, из которых занято около пяти.
/usr - 5-10 гигабайт вполне хватает.
/home - от пары гигабайт, в зависимости от того, намереваются ли там пользователи что-то хранить. Сейчас у меня выделено 50, из которых занято 16.
/usr/local (или opt, кому как больше нравится) - всё остальное свободное место.

[identity profile] mcjabberwock.livejournal.com 2011-03-13 06:43 pm (UTC)(link)
Прекрасная задачка для тех мастеров, время которых стоит дешевле SATA-шлейфа!

[identity profile] dil.livejournal.com 2011-03-13 06:46 pm (UTC)(link)
Видишь ли, чтобы купить шлейфы, мне надо потратить часа три. Причём в дневное время. И денег на автобус, сравнимых со стоимостью шлейфов. То есть, я, конечно, их всё равно потом куплю, но пока можно размять мозги решением задачи :)

[identity profile] network1453.livejournal.com 2011-03-13 06:52 pm (UTC)(link)
ЖЖесть. В 5020 есть СМный Юлмарт.

[identity profile] dil.livejournal.com 2011-03-13 06:53 pm (UTC)(link)
А чтобы долететь до 5020 и вернуться обратно, мне придётся потратить не менее одного дня и несколько сотен евро :)

[identity profile] mcjabberwock.livejournal.com 2011-03-14 09:09 am (UTC)(link)
Вижу. Ну да, сужу по себе. Мне-то надо полминуты, чтоб уходя из дому захватить запасной,
да и в конторе штук пять валяется.
А разминать мозги - можно и размягчение заработать ;)

[identity profile] dil.livejournal.com 2011-03-14 10:27 am (UTC)(link)
Таки ты будешь смеяться, я сейчас на работе пошел в хелпдеск попросить на время шлейф, чтобы подключить еще один диск к рабочему десктопу, так у них их не оказалось. Вынули один из сломанной машины..

[identity profile] mcjabberwock.livejournal.com 2011-03-14 10:50 am (UTC)(link)
Но таки нашли же!
А если их как следовает потрясти - глядишь - и ещё высыпется.

[identity profile] dil.livejournal.com 2011-03-14 10:53 am (UTC)(link)
Ну могут из ещё одной вынуть, конечно, но если они будут их заказывать официальным путём, это ж дня два-три пройдёт..

[identity profile] mcjabberwock.livejournal.com 2011-03-14 01:48 pm (UTC)(link)
Ну, можно и каждый гвоздь по две недели покупать, почему бы и нет, и даже многие так делают.

[identity profile] lazylonelion.livejournal.com 2011-03-13 10:02 pm (UTC)(link)
Очень здравое возражение. _Правильно_ данная задача решается через покупку шлейфа.
С другой стороны бывают мамки с двумя SATA.
Или человек может просто поинтересоваться как загодя сделать RAID1 не имея второго диска.

[identity profile] dil.livejournal.com 2011-03-13 10:29 pm (UTC)(link)
На двух SATA задача не решается в принципе, потому что по условию в конечном итоге надо прицепить три диска :)
И понятное дело, праавильно она решается путём одновременного подключения всех дисков. А ограничения - это для тренировки мозгов.

[identity profile] lazylonelion.livejournal.com 2011-03-13 10:32 pm (UTC)(link)
ну всё же лучше когда первым рефлексом в таких ситуациях будет "купить шлейф", а не "а давайте потасуем разделы с переменной загрузкой в трёх вариантах". Вот что надо тренировать.
А задачки бывают более абстрактные и с более обоснованными начальными условиями.

[identity profile] dmarck.livejournal.com 2011-03-14 08:26 am (UTC)(link)
Ага, я ща как раз поднимаю raidz2 на 24 диска при наличествующих 13 ;-P

[identity profile] dil.livejournal.com 2011-03-14 08:57 am (UTC)(link)
Что, кабелей не хватило? :)

[identity profile] dmarck.livejournal.com 2011-03-14 11:21 am (UTC)(link)
Ты не поверишь: дисков ;)

Я ж мигрирую десятидисковое хранилище в 24, и покупать лишних десять дорогущих RE4 двухтерабайтников впадлу амфибиогенная асфиксия наступает

[identity profile] mcjabberwock.livejournal.com 2011-03-14 09:23 am (UTC)(link)
Хе. Смелого - пуля боится,
Смелого - штык не берёт.