Fast Site Engine
Высокопроизводительный движок для сайтов
Заказать сайт на основе движка
О движкеПроизводительностьБезопасностьТехнические требованияSEO 
Лицензионное соглашение
Демо
Установка
Панель управления
Модули
Документация
Шаблоны
Тесты производительности php
Планы на будущее
Список изменений
Отзывы и пожелания
Переходим на Линукс
Всякое разное
Переходим на Линукс  »  RAID массивы в Линукс

RAID массивы в Линукс

RAID массив в Линукс может пригодиться для резервирования данных на нескольких носителях, в случае поломки одного из дисков второй сохранит информацию и при этом можно продолжать пользоваться компьютером, но лучше сразу бежать в магазин за новым диском, особенно если одной серии от одного производителя в паре стоят, вероятность поломки второго сильно возрастает, лучше вовремя отслеживать состояние дисков и вовремя заменять через утилиту GSmartControl или в моём скрипте md есть пункт с тестированием, он автоматически выявляет важное и сообщит красным об ошибках.

Так же есть сценарии когда за счёт RAID (Redundant Array of Independent Disks - избыточный массив независимых дисков) увеличивают производительность, но особого смысла для дома в этом нет, по следующим причинам: нет сильных нагрузок; SSD диски становятся всё доступнее; стоимость - для обычного RAID1 (зеркальный дисковый массив) понадобиться минимум 2 диска, а для схемы RAID10 (RAID1+0) уже от 4-х штук: по 2 с чередованием (без отказоустойчивости) и эти пары объединяются зеркально в RAID 1 для отказоустойчивости. В принципе, если финансы жмут карманы, можно вытворять что угодно, вплоть до строительства RAID схем на базе собранных RAID массивов.

Схемы расписывать не буду, погуглите, тема хорошо освещена в наши дни..

Какие Raid бывают?

Бывают аппаратные и программные, аппаратные могут быть реализованы за счёт отдельных карт к которым подключаются диски и он там сам жужжит после настройки, система видит всё как 1 диск, сам синхронизируется в случае замены диска итд.. В принципе это удобно, но есть негативные стороны, например:

  • Из-за паники ядра, рэйд карта может превратить данные в кашу, программный же просто пересинхронизируется..
  • Ситуация когда сломался контроллер и второго такого же не найти - данные до свидания.
  • Может произойти отказ при переносе на другое оборудование, даже с учётом что карта та же (в сети полно кошмаров об аппаратных рэйдах, кому интересно почитайте).. Если и брать такой то очень дорогой, где-нибудь за $1000..
  • Попадаются серии карт которые изобилуют проблемами. Особенно дешёвые..
  • Цена такой карточки зачастую космическая, даже самого низкого уровня..
RAID карта Adaptec 2274500-R 71605E Series 7 RAID Adapter

Далее идут аппаратные за счёт контролеров на материнских платах, их народ всячески хает, называет "фэйковым недорэйдом" с отсутствием мозгов.. Ну и само собой понятно, если нормальный аппаратный стоит пару десятков тысяч, то тут целая материнская плата за условные 5 тысяч..

Подобрались к самому вкусному - программному RAID массиву mdadm (manage MD devices он же Linux Software Raid), в этом случае операционная система тратит немного ресурсов на ввод/вывод управляя записью и чтением с нескольких устройств. Затраты эти минимальны и не ощущаются, даже если поставить рэйд и поверх LVM например (LVM это ещё один возможный уровень абстракции, он может понадобиться если нужно собрать 1 виртуальный диск из нацати маленьких/разных, я его не рассматриваю, ибо это головняк, который не нужен в обычной ситуации. Да и часть управляющих серверами считает LVM пережитком прошлого, объёмы дисков огромные нынче.)

Самое важное, что отсутствуют проблемы с переносом с одной машины на другую, пару манипуляций в консоли и всё опять работает!

Производительность что аппаратного, что софтварного рэйд массива примерно одинакова.

Про диски

Диски лучше брать одного размера. По умолчанию рэйд соберётся по наименьшему диску..

В случае переноса массива на больший диск проще создать дополнительный массив и скопировать данные, затем разрушить старый массив и переименовать если нужно новый. Диски разных производителей одного объёма обычно одинаковые по размеру..

В Линуксе дисковые, флэш итп. устройства называются как sda, sdb, sdc итд. А вот дисковые разделы в устройстве (логические тома) как sda1, sda2 итд. В теории можно собирать рэйды из устройств sda, sdb, sdc .., но по факту это сегодня не работает с современной разметкой диска GPT - mdadm бьёт основную таблицу.. Дополнительно можно словить проблемы из-за разного размера дисков, которая обходится если создавать из логических томов / разделов просто оставив 100 Мб в конце не размеченными и скопировав разметку на другие диски.

Диски могут монтироваться в одну из папок: media, dev или mnt. В нашем случае в папку dev и путь к устройству выглядит как /dev/sda. Точка подключения - доступа к данным /media/имя-пользователя/имя-диска(метка тома-LABEL / UUID).

Диски именуются в зависимости от типа их подключения: SATA - sda, а IDE - hda.. т.е. sda - SATA DISK A.

Следует упомянуть про HDD диски (которые крутятся) - чем ближе раздел к началу диска, тем больше скорость считывания, из-за скорости вращения, т.е. разделы загрузки, раздел подкачки (сейчас на файл перешли) имеет смысл в начале создавать.. SSD диски - без разницы, у них фиксированная скорость доступа - вращения нет... В целом своп или файл подкачки сегодня только ноутбукам нужен для режима сна, памяти уже много ставят, достаточно выделять размер оперативной памяти + 2Гб. В ином случае можно выделить ~2 Гб (в сборках K/Ubuntu выделяют 1,5Гб).

Что произойдет если кончатся буквы в /dev/sd[a-z]?

Если диски закончатся, начнётся именование как /dev/[sdaa,sdab,sdac]
Линукс поддерживает более 2304 дисков..
Для более глубокого понимания прочитайте раздел файловая система в Линукс

Важно! Перед любой манипуляцией с уже собранным RAID массивом необходимо убедиться что не идёт синхронизация или пересборка - смотрим состояние массива, в консоли пишем:

cat /proc/mdstat

Если нет надписей типа [==>....................] resync = 16.0% или recovery = 16.0%. Значит операций не идёт, можно действовать..

Если произошёл сбой по какой-то причине, дождитесь восстановления массива, затем уже помечайте сбойным и вытаскивайте/заменяйте диск..

Следить в реальном времени за синхронизацией массива можно командой

watch cat /proc/mdstat
# обновлять раз в 5 секунд 
watch -n 5 cat /proc/mdstat
# Ctrl+C для выхода 

Подразумеваю, что для управления будет использоваться мой bash скрипт управления RAID массивами md, по этой причине сценариев расписывать не буду, всё сделает автоматика, она так же следит за синхронизацией и всем остальным, остаётся только кнопки нажимать..

Как определить какой диск вытаскивать, RAID массив на каком порте?

SATA порт в принципе не определить, система может не передавать на каком порте висит диск и он может быть непоследователен udev(менеджер устройств) не обязан соблюдать последовательность и диски могут быть помечены как угодно. Посему будем определять какой диск вытащить по серийному номеру.. Для этого нужно определить какой диск сбойный, затем узнать его серийный номер..

lsblk -I 8 -dpo NAME,SIZE,SERIAL,MODEL,REV,VENDOR /dev/sda
sudo hdparm -i /dev/sd[a,b,c,d] | grep Serial
sudo hdparm -i /dev/sda | grep Serial

Скрипт md на многих стадиях выдаёт всю необходимую информацию..

Серийный номер на жёстком диске обычно спереди на корпусе наклеен, либо сверху на наклейку смотрите.. Таким образом и определяем какой вытащить..

В серверах попроще, там сбойные контроллер подсветит светодиодом на корпусе салазок или ещё где.. И диски обычно серийником наружу с торца стоят.

Страница сгенерирована за 0.001840 секунды
На один процесс веб-сервера: 544 стр/сек.
Всего Apache может отдать: 139 264 стр/сек.
Выделено php памяти: 855.08 KB, real_usage: 2 MB

© Все права защищены 2004 - 2018
Карта сайта
Отслеживать изменения в Твиттере
Политика конфиденциальности

Браузер построил за сек.
Полное время сек.

С момента выгрузки предыдущей страницы из памяти браузера: сек.