Pull to refresh

Производительность софт nvme рейдов на основе mdadm, LVM, ZFS и LVM+vdo

Level of difficultyMedium
Reading time15 min
Views5.1K

Тестирование программных рейдов с NVMe U.2 дисками для выбора основы блокового хранилища для виртуализации.

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments20

Перенос работающего сервера на RAID

Reading time4 min
Views13K
Жил-был LAMP-сервер на Ubuntu 12.04, который работал на одном диске. Соответственно, возникла задача обеспечить перенос сервера на более отказоустойчивую конфигурацию – RAID1. Товарищи, в ведении которых был данный сервер установили второй диск, а дальнейшее было возложено на меня, причём доступ к серверу был только по ssh, что осложняло задачу.

После поисков была найдено руководство и начались тренировки на виртуальной машине. Когда я добился на ней нужного результата, то с некоторым волнением, но всё же успешно осуществил перенос вышеупомянутого сервера на RAID1 и вчерне набросал порядок необходимых действий. Статью, в которой более подробно описан процесс переноса, я решил разместить на «Хабре».
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments28

Замена дисков меньшего объёма на диски большего объёма в Linux

Reading time17 min
Views15K
Всем привет. В преддверии старта новой группы курса «Администратор Linux» публикуем полезный материал, написанный нашим студентом, а также наставником на курсах, специалистом технической поддержки корпоративных продуктов REG.RU — Романом Травиным.



В данной статье будет рассмотрены 2 случая замены дисков и переноса информации на новые диски большего объёма с дальнейшим расширением массива и файловой системы. Первый случай будет касаться замены дисков c одноименной разметкой MBR/MBR либо GPT/GPT, второй случай касается замены дисков с разметкой MBR на диски объёмом более 2 TB, на которые потребуется ставить разметку GPT с разделом biosboot. В обоих случаях диски, на которые переносим данным, уже установлены в сервер. Файловая система, используемая для корневого раздела — ext4.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments5

Что общего между LVM и матрешкой?

Reading time43 min
Views13K
Доброго времени суток.
Хочу поделиться с сообществом практическим опытом построения системы хранения данных для KVM с использованием md RAID + LVM.

В программе будет:

  • Сборка md RAID 1 из NVMe SSD.
  • Сборка md RAID 6 из SATA SSD и обычных дисков.
  • Особенности работы TRIM/DISCARD на SSD RAID 1/6.
  • Создание загрузочного md RAID 1/6 массива на общем наборе дисков.
  • Установка системы на NVMe RAID 1 при отсутствии поддержки NVMe в BIOS.
  • Использование LVM cache и LVM thin.
  • Использование BTRFS снимков и send/recieve для резервного копирования.
  • Использование LVM thin снимков и thin_delta для резервного копирования в стиле BTRFS.

Если заинтересовало, прошу под кат.
Total votes 11: ↑11 and ↓0+11
Comments6

Мониторинг дисков и программных RAID-массивов с помощью Zabbix

Reading time14 min
Views23K

Ранее в статьях, посвященных Zabbix, мы рассказали про особенности мониторинга SAAS-сервиса интернет-магазинов, а также про установку сервера и агента Zabbix.

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

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

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments13

Настраиваем RAID1+LVM (для снапшотов файловой системы) в Hetzner и ServerLoft

Reading time4 min
Views25K

Завалялась у меня тут инструкция, как включить LVM для корневой файловой системы на двух популярных dedicated-хостингах: Hetzner и ServerLoft. Публикую ее здесь.

LVM в Linux используется, в частности, чтобы единомоментно создавать «замороженные» снапшоты файловой системы, которые можно потом спокойно бэкапить, в то время как сервер продолжает работать. Это очень удобная функция, особенно для серверов баз данных: можно делать инкрементный бэкап базы данных, например, при помощи файлового rdiff-backup или duplicity (в том числе на удаленный FTP-сервер, бесплатное и быстрое место на котором предоставляют многие хостеры). Что касается RAID-1 (зеркалирование на 2 дисках), то оно абсолютно необходимо на сервере, чтобы при выходе из строя одного из дисков его можно было заменить, не останавливая машину. Конечно же, нужно ставить LVM поверх RAID-1.

Но беда в том, что ни Hetzner, ни ServerLoft не позволяют включить LVM при первичном создании машины «при помощи одной лишь мышки». Вместо этого они дают возможность установить один из фиксированных образов ОС, максимум что — с включенным RAID-1. Ниже — две инструкции, как переключить такую «налитую» машину на использование LVM для корневой файловой системы, а потом — короткий пример того, как работать со снапшотами. Работать будем с Ubuntu Server 12.04 minimal (для других ОС конфигурация может отличаться).
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments13

Проблема одновременного использование kernel raid autodetect для / на /dev/md0 и superblock v1.2 для других /dev/md, или как можно уронить (и поднять) сервер после его обновления

Reading time3 min
Views7.8K

Спасибо, что дочитали заголовок. Это был тест.


Сегодня, после наката очередных обновления на свой любимый Gentoo сервер и профилактического reboot'a, внезапно, отвалился /dev/md1 со словами мудрого ядра: sdc1 does not have a valid v0.90 superblock, not importing!

Шок! Паника! хорошо, что не в ядре…

А в чём, собственно, дело?


Для начала расскажу о конфигурации сервера, чтобы было легче понять суть проблемы и способ её решения. Итак, ядро 3.10.7 с включённым RAID autodetect и двумя RAID1 (зеркало) дисками.

На /dev/md0 монтируется root, на /dev/md1 база данных (Percona):
db13 ~ # cat /etc/fstab | grep md
/dev/md0                /               ext3            noatime         0 1
/dev/md1                /mnt/db         reiser4         noatime         0 0

И кусочек /boot/grub/grub.conf:
title Gentoo Linux 3.10.7 md0
root (hd0,0)
kernel /boot/kernel-3.10.7 root=/dev/md0

Так вот, для успешной сборки md устройств ядром во время загрузки должно быть выполнено два условия:
  1. Тип 0xFD у партиций, на которых строится RAID
  2. Версия формата superblock 0.90 на устройстве /dev/md, которое создается при помощи mdadm

Если с п.1. в моей конфигурации все было хорошо, то, как оказалось, формат superblock был 1.2 Подозреваю, что /dev/md1 я создавал после того, как пришла новая версия mdadm, которая по-умолчанию использует именно этот формат. Как результат, ядро ругается страшными словами:
dmesg | grep md
[    0.000000] Command line: root=/dev/md0 raid=/dev/md0
[    0.000000] Kernel command line: root=/dev/md0 raid=/dev/md0
[    1.063603] md: raid1 personality registered for level 1
[    1.266420] md: Waiting for all devices to be available before autodetect
[    1.266494] md: If you don't use raid, use raid=noautodetect
[    1.266781] md: Autodetecting RAID arrays.
[    1.293670] md: invalid raid superblock magic on sdc1
[    1.294210] md: sdc1 does not have a valid v0.90 superblock, not importing!
[    1.312482] md: invalid raid superblock magic on sdd1
[    1.312556] md: sdd1 does not have a valid v0.90 superblock, not importing!
[    1.312579] md: Scanned 4 and added 2 devices.
[    1.312595] md: autorun ...
[    1.312610] md: considering sdb3 ...
[    1.312626] md:  adding sdb3 ...
[    1.312641] md:  adding sda3 ...
[    1.312657] md: created md0
[    1.312665] md: bind<sda3>
[    1.312754] md: bind<sdb3>
[    1.312770] md: running: <sdb3><sda3>
[    1.313064] md/raid1:md0: active with 2 out of 2 mirrors
[    1.313166] md0: detected capacity change from 0 to 7984840704
[    1.313262] md: ... autorun DONE.
[    1.320413]  md0: unknown partition table
[    1.338528] EXT3-fs (md0): mounted filesystem with ordered data mode
[    2.581420] systemd-udevd[861]: starting version 208
[    3.122748] md: bind<sdc1>
[    4.896331] EXT3-fs (md0): using internal journal


Когда не помогает Google


Выбор совсем небольшой — либо отключать автоопределение массивов в ядре (перекомпиляция и правки в grub.conf), либо изменять формат суперблока (полный бэкап данных и убийство зеркала с последующим его восстановлением). Оба варианта «не вариант», так как по сути своей деструктивны и могут привести к потери данных, да и времени могут занять немало (как выяснилось в процессе поиска решения kernel autodetect is depricated feature)

К слову сказать, после старта севрера /dev/md1 прекрасно запускается при помощи команды
mdadm --manage /dev/md1 --run
. Конечно, можно было бы прописать эту строчку куда-нибудь в rc-скрипты, но, согласитесь, это как-то не спортивно.

Эврика!


Решение пришло не сразу, хотя лежало на поверхности — всё, что нужно сделать, это убрать тип 0xFD (заменить на 0х83) у дисков в /dev/md1 и тогда ядро перестанет безуспешно пытаться собрать этот массив, мешая при этом udevd делать свою работу. И действительно, после применения fdisk для изменения типа партиций на обеих зеркалах и перезагрузки сервера, все чудесным образом завелось:
dmesg | grep md
[    0.000000] Command line: root=/dev/md0 raid=/dev/md0
[    0.000000] Kernel command line: root=/dev/md0 raid=/dev/md0
[    1.063924] md: raid1 personality registered for level 1
[    1.248078] md: Waiting for all devices to be available before autodetect
[    1.248201] md: If you don't use raid, use raid=noautodetect
[    1.248504] md: Autodetecting RAID arrays.
[    1.265058] md: Scanned 2 and added 2 devices.
[    1.265243] md: autorun ...
[    1.265258] md: considering sda3 ...
[    1.265274] md:  adding sda3 ...
[    1.265290] md:  adding sdb3 ...
[    1.265305] md: created md0
[    1.265321] md: bind<sdb3>
[    1.265331] md: bind<sda3>
[    1.265428] md: running: <sda3><sdb3>
[    1.265865] md/raid1:md0: active with 2 out of 2 mirrors
[    1.265891] md0: detected capacity change from 0 to 7984840704
[    1.266068] md: ... autorun DONE.
[    1.276627]  md0: unknown partition table
[    1.294892] EXT3-fs (md0): mounted filesystem with ordered data mode
[    2.713383] systemd-udevd[860]: starting version 208
[    3.128295] md: bind<sdc1>
[    3.159107] md: bind<sdd1>
[    3.170320] md/raid1:md1: active with 2 out of 2 mirrors
[    3.170333] md1: detected capacity change from 0 to 17170300928
[    3.178113]  md1: unknown partition table
[    4.911712] EXT3-fs (md0): using internal journal
[    5.027077] reiser4: md1: found disk format 4.0.0.


Буду рад, если Google, найдя этот текст, покажет его моим коллегам по цеху, попавшим в похожую ситуацию.
Total votes 27: ↑22 and ↓5+17
Comments29

Работа с утилитой mdadm. Изменение типа массива, chunk size, расширение

Reading time5 min
Views70K

Введение


К написанию данной статьи меня побудило отсутствие внятной информации на русском языке по работе с утилитой mdadm, реализующей RAID различных типов в ОС linux. В принципе, основные положения работы данной утилиты освещаются достаточно подробно. Почитать об этом можно, например, раз, два, три.

Преобразование RAID1 в RAID5


Основным посылом было преобразование RAID1, созданного при установке Ubuntu массива из двух дисков к RAID5. Начал я, как водится с гугления, и набрел на более раннюю статью на Хабре К сожалению, протестированный на виртуальных машинах, этот способ гарантировано убивал возможность загрузки с корневого раздела. С чем это связано, с более новой версией mdadm, или со спецификой тестирования (корневой раздел на массиве, требуется работа с live CD) выявить не удалось.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments20

Миграция PROXMOX VE 3.0 в software RAID1

Reading time5 min
Views26K

В данном материале описывается процесс миграции свежеустановленного гипервизора Proxmox 3.0 в программный RAID1. Разработчики Proxmox в своей wiki пишут о том, что данное решение официально не поддерживается и не рекомендуется к использованию. Взамен этого предлагается использовать решения на протестированных аппаратных raid-контроллерах. Тем не менее в сети можно найти несколько мануалов по этой теме и практики успешной эксплуатации softraid'а совместно с Proxmox'ом. К сожалению, большинство этих мануалов нельзя назвать пошаговыми руководствами к действию: все они содержат те или иные ошибки, которые мешают достигнуть требуемого результата. Взяв за основу один из таких мануалов, я попытался исправить эту ситуацию. Приведённое ниже решение несколько раз было по шагам протестировано сначала в виртуалке, а затем использовано для миграции данных на реальном железе. В результате этого получился рабочий how-to, который предлагается вашему вниманию.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments17

Производительность mdadm raid 5,6,10 и ZFS zraid, zraid2, ZFS striped mirror

Reading time5 min
Views30K
Тестируем производительность ZFS и mdadm+ext4 на SSD Sandisk CloudSpeed
для выбора технологии создания локального дискового массива.


Цель данного тестирования — выяснить, с какой реальной скоростью смогут работать виртуальные машины в raw файловых образах, если разместить их на 4-х производительных SSD-дисках. Тестирование будет производится в 32 потока, чтобы приблизительно создать условия работы реального гипервизора.

image
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments65

перенос системы на RAID + LVM (краткий конспект)

Reading time2 min
Views4.9K
Немножко о работе с soft'овым RAID (mdadm) и LVM, возможно при наличии кучи свободного времени ЭТО превратится в какую-то приличную статью… а пока, лишь куча команд с краткими комментариями.

Итак, однажды мне потребовалось больше места под виртуалбоксовую папку…
Читать дальше →
Total votes 4: ↑3 and ↓1+2
Comments5

Сравнительное тестирование скорости работы software RAID'ов. Linux vs FreeBSD(mdadm vs gmirror)

Reading time10 min
Views25K
Введение
Мнение касаемо различных VS у меня давно сложилось — все зависит от задач. Но нет, нет, да возникает желание копнуть глубже, узнать кто все таки сильнее — Брюс Ли или Джеки Чан, Сталоне или Шварцнегер, mdadm или gmirror.
Тест не претендует на абсолютную объективность, скорее он даже субъективен в разрезе используемого аппаратного обеспечения. Но так или иначе, цифры есть цифры.
Кого заинтересовал, пожалуйте под кат.
Читать дальше →
Total votes 88: ↑67 and ↓21+46
Comments57

Экстремальное восстановление данных с деградировавшего 5го рейда

Reading time8 min
Views13K

Написано на реальных событиях.


Любое повторение действий и необдуманные решения могут привести к полной утрате данных. Не для HowTo-шников, данный материал лишь для воссоздания картины о представлении данных на дисковых носителях.

Итак, приступим. Вводные данные:
  • 7 дисков, 2 primary-раздела на каждом;
  • 1й раздел 7и кратное зеркалирование (RAID1);
  • 2й раздел RAID5, под которым крутится LVM.

Два диска отказывают в одночасье из-за скачка электричества и каких-то еще проблем с железом. Попытки ассемблировать диски обратно не увенчались успехом, т.к. система проработала в автопилоте на умершем рейде часа два, в добавок ко всему диски то оживали то умирали заново, ядро не отрабатывало какой диск на каком месте в данный момент, т.е. что на них писалось и как это происходилос — можно только догадываться.
В общем, имеем, полностью погибший рейд. и mdadm тут бессилен.
Читать дальше →
Total votes 68: ↑66 and ↓2+64
Comments34

Миграция CentOS6 с raid1 на raid10

Reading time5 min
Views6.8K
Доброго времени суток.
Есть сервер с CentOS6 и высоким %iowait. Нужно без простоя, или максимум 10 минут желательно ночью, перенести систему с md raid1 на md raid10. В моём случае реально уложиться в 10 минут, или даже меньше, потому что у сервера есть hot-swap корзины, но инженеры дата центра где арендуется сервер, изначально подключили диски во вторую и третью корзины, а не в первую и вторую. Из-за этого пришлось выключать сервер менять местами старые диски и ставить новые два.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments19

Производительность блочного хранилища на основе софт рейдов (mdadm, LVM и ZFS) при использовании iSER и NVMe-oF

Level of difficultyMedium
Reading time10 min
Views5K

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

Цель - протестировать производительность трёх систем объединения физических устройств в одно логическое систем при использовании iSER и NVMe-oF.

И сравниваться будет три системы, которые показали самые высокие показатели по результатам тестов из первой части статьи.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments36

Миграция с RAID1 на RAID5 в mdadm без потери данных

Reading time2 min
Views10K
Допустим есть у нас под Linux софтварный RAID1 собранный с помощью mdadm:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
      8387572 blocks super 1.2 [2/2] [UU]

И появился у нас еще один винчестер который хотелось бы воткнуть в данную машину расширив доступное дисковое пространство не потеряв при этом в отказоустойчивости т.е. перейти с RAID1 на RAID5.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments51

Добавление диска в MDADM RAID 5/6 «на лету»

Reading time3 min
Views39K
Сегодня хочу поделиться с вами краткой инструкцией, как добавить диск в существующий RAID 5/6 не пересобирая массив (зачастую это просто нереально — забэкапить 4-10Тб данных) и не останавливая работу сервера на сутки-другие. Данная инструкция написана для линуксовых софтрейдов через mdadm, с аппаратными контроллерами/виндой разговор особый и зачастую очень короткий (никак и все).

Итак, приступим (система — Ubuntu 10.04, но работать должно практически везде).
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments42

shared hotspare для mdadm

Reading time4 min
Views14K
(сомневался сюда писать или в системное администрирование)

Я обнаружил, что в интернете очень мало (и не очень внятно) объяснено, как mdadm работает с общими (глобальными) дисками горячей подмены. В заметке я опишу, что это такое, и объясню, почему shared hotspare не отмечены в /proc/mdstat как общие, а вместо этого выглядят как вполне себе локальные.

Что такое hot-spare?


(Я пишу не для новичков, так что галопом по европам)
Если массив обладает избыточностью и один из его дисков вышел из строя, то существует возможность восстановить избыточную информацию на резервный диск. Если диск добавляется в массив руками (админу пришло письмо о сбое, он прочитал письмо, проснулся/оделся, приехал на работу, вынул сбойный диск, вставил запасной, добавил его в массив, дал команду на восстановление избыточности), то такой диск называется cold-spare. Просто «запасной диск».

Если же в сервере есть простаивающий диск, на который осуществляется восстановление избыточности сразу после сбоя любого из дисков массива, то такой диск называется hot-spare. Главное достоинство — оно отребилдится (восстановит избыточность) даже если админ письмо прозевал или не успел вовремя приехать.

Локальные hot-spare

Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments28

Centos 7 convert to software RAID 1

Reading time2 min
Views28K
Тема, которую я хочу затронуть, довольно популярная и рассмотрена на многих ресурсах, но для другой версии загрузчика «GRUB» и для другой версии ОС.

Преамбула


Потребовалось перенести установленный Centos 7 на software raid level 1 в ручном режиме, так как сама система ставилась через kickstart. Поискав информацию по данному вопросу, нашел материал только по старым версия ОС и по первой версии загрузчика «GRUB».

Решив, что методы аналогичные, лишь с изменением команд, взялся за дело и наткнулся на нюансы с «dracut».
По какой-то причине initramfs созданый «dracut» не видит собранного raid и отказывается грузится. Версия «dracut» 033.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments10
1