При добавлении дополнительного диска к RAID1 в mdadm по умолчанию создаётся запасной диск (hot-spare), который будет задействован в случае выхода из строя одного из входящих в массив дисков.Для увеличения производительности чтения данных, вместо hot-spare диска можно добавить полноценный третий диск в RAID1, т.е. все три диска будут заркалированы и операции чтения будут распараллеливаться между ними.
Имеем RAID 1 /dev/md121 из двух разделов /dev/sda1 и /dev/sdb1:
mdadm --detail /dev/md121
...
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda1
1 8 18 1 active sync /dev/sdb1Клонируем разделы на третий диск /dev/sdc
sfdisk -d /dev/sda| sed 's/sda/sdc/'| sfdisk /dev/sdc
Добавляем /dev/sdc1 в массив:
mdadm /dev/md121 --add /dev/sdc1
mdadm --detail /dev/md121
...
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda1
1 8 18 1 active sync /dev/sdb1
2 8 34 - spare /dev/sdc1Чтобы /dev/sdc1 стал полноценным участником массива меняем статус spare на active:
mdadm /dev/md121 --grow --raid-devices=3
Через некоторое время, после того как массив перестроится:
mdadm --detail /dev/md121
...
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1URL:
Обсуждается: http://www.opennet.me/tips/info/2961.shtml
Подскажите непонимающему. Есть 2 диска, работают в программном рейде. Загрузчик находится на обоих дисках? Или бут сектор на первом(в биосе выбран он для старта), загрузчик там же, и при выходе его из строя, система попросту не будет знать от куда стартовать?! Одновременно загрузчик может быть на обоих дисках?!
Некоторые дистрибутивы при инсталяции пишут лоадер только на первый винт. Но никто не мешает продублировать загрузчик на все диски. grub-install в помощь. Всегда так делаю.
Когда вы накатываете новое ядро или правите инитрамфс, как себя ведёт груб? Он обновляет загрузчик только на первом диске и приходится дублировать вручную и на второй?
При обновлении ядра загрузчик вообще не обновляется. Загрузчик grub на то и умный, чтобы найти boot-раздел (в том числе на raid/lvm, если это grub2) и прочитать конфиг оттуда. Поэтому на факт рейда при обновлении ядра ему глубоко фиолетово.Если был обновлен сам пакет grub, то для legacy режима загрузки обычно grub-install не делается и по факту grub остается старым (т.к. автоматический grub-install плохо сработает на некоторых системах), а для UEFI-загрузки будет обновлен, но там это обычный файл на файловой системе.
>Есть 2 диска, работают в программном рейде. Загрузчик находится на обоих дисках?Если его установить на оба диска в процессе инсталляции системы. При конфигурации пакета grub-pc этот вопрос задаётся. Возможно, для этого необходимо включать expert mode, не уверен.
Собственно, это _правильный_ вариант - установить GRUB в MBR всех дисков, на которых лежит RAID с системой. Неизвестно же, какой из дисков выйдет из строя и с какого потом загружаться придётся.
Кто не догадался - ставим птички при конфигурации grub-pc на sdX, а вот на mdX GRUB бессмысленно инсталлировать.
Если вы не уверены, как именно установлена данная конкретная система, или хотите диск добавить - сделайте dpkg-reconfigure grub-pc и поставьте птички в нужных местах. Всё, при обновлениях grub-pc итп загрузчик будет автоматически переустанавливаться на все выбранные диски.
Автоматизировать это тоже можно через debconf-set-selections.
загрузчику ничего не мешает быть на обоих дисках. Другое дело как объяснить bios что загружаться надо не со сломавшегося, а с рабочего.
А не проще поставить малого объёма SSD чисто для ОС и не мучаться? В общем-то, это типичная домашняя схема, что будет мешать сделать так же в производстве, не вижу.В конце концов, если энтерпрайз, то там оперативки по 128гб на серверных платах, можно загрузить ОС полностью в ram disk, если SSD боитесь убить раньше времени. Там и SSD для этих целей не нужен.
Не сказано самое главное: скорость записи при этом уронится до скорости самого медленного диска, плюс общая производительность пострадает за счёт необходимости делать три записи на диск на одну запись со стороны системы.
У некоторых много-много-много read и мало-мало-мало write.
Диски вполне могут быть одного типа, то бишь иметь одинаковую скорость.
Что касается записи, то постановка запроса на запись данных в очередь производится для всех дисков сразу, поэтому задержка при записи так же равна самой поздней записи, как и при чтении.
> задержка при записи так же равна самой поздней записи, как и при чтениив md читает со всех сравнивает и выдаёт результат?
загрузчик на рэйде - это кактус под подушкой. пока спишь сверху, все ок. чуть пошевелился - такой кайф
Вам срочно нужна пересадка рук в плечи.
--загрузчик на рэйде - это кактус под подушкой. пока спишь сверху, все ок. чуть пошевелился - такой кайф
++загрузчик на ПРОГРАММНОМ рэйде - это кактус под подушкой. пока спишь сверху, все ок. чуть пошевелился - такой кайфТеперь пересадка не нужна?
grub в MBR каждого диска и забыть до смерти одного их дисков
>Добавляем /dev/sdc2 в массив:Наверное имелось ввиду:
Добавляем /dev/sdc1 в массив:
> sfdisk -d /dev/sda| sed 's/sda/sdc/'| sfdisk /dev/sdcзачем городить?
sfdisk -d /dev/sda | sfdisk /dev/sdc достаточно
> Для увеличения производительности чтения данных, вместо hot-spare диска можнодобавить полноценный третий диск в RAID1, т.е. все три диска будут
заркалированы и операции чтения будут распараллеливаться между ними.а разве мд-софтерйд не будет ожидать окончания чтения со всех дисков чтоб проверить результат ? когда я тестил mdraid1 на 2 дисках скорость чтения не отличалась от чтения с одного диска
Note that the read balancing done by the driver does not make the RAID1 performance profile be the same as for RAID0; a single stream of sequential input will not be accelerated (e.g. a single dd), but multiple sequential streams or a random workload will use more than one spindle. In theory, having an N-disk RAID1 will allow N sequential threads to read from all disks.Individual devices in a RAID1 can be marked as "write-mostly". These drives are excluded from the normal read balancing and will only be read from when there is no other option. This can be useful for devices connected over a slow link.
получается не сравнивает в процессе чтения, для этого существует специальная команда - echo check > /sys/block/mdX/md/sync_action