[РЕШЕНО] Программный RAID

Автор Raziel, 07 ноября 2011, 17:11:04

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Raziel

Доброго времени суток!
Во время установки Debian 6 с помощью инсталлятора создал программный RAID-1.
Сейчас столкнулся с вопросами: Как им управлять? И как проверить, что все работает?
В интернете пишут про mdadm, но эта утилита в системе даже не установлена. Достаточно ли будет установить mdadm из репозиториев?

PS: понимаю, что вопрос может показаться глупым, но дело обстоит на продакшн-сервере, "сюрпризы" на котором не допустимы.

Заранее спасибо!

dimas000

лол)))
вообще странно, что пакет mdadm не поставился при установке, но таки да
sudo aptitude install mdadm
с ее помощью оуществляется все необходимое. вообще-то инфы полно, сто раз расписано, гуглим по "software raid debian" или типа того. да и в man mdadm все неплохо разжевано. плюс я бы посоветовал прописать нормальный mdadm.conf, указав в нем нужные массивы, а автоопредление отключить нафиг.
приведу свой под спойлером
Открыть содержимое (спойлер)
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE /dev/sdb[25] /dev/sdc[25]

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1.2 symlinks=no

# automatically tag new arrays as belonging to the local system
HOMEHOST <ignore>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/backup metadata=1.2 UUID=6ddea540:2739bd17:23004444:362be1ff name=srv:backup
ARRAY /dev/md/svalka metadata=1.2 UUID=992b06af:42dd8b35:bc2a3843:e50f2e6b name=srv:svalka

AUTO -all
[свернуть]
все параметры описаны в man mdadm.conf, собственно строки с указанием массивов можно составить и вручную, но проще воспользоваться
sudo mdadm -Es
или даже так: прописать в начале mdadm.conf нужные параметры, а потом
sudo mdadm -Es | sudo tee -a /etc/mdadm/mdadm.conf
заодно настрой нужное в /etc/default/mdadm. там тоже все прокомментировано, для примера вот мой:
Открыть содержимое (спойлер)
# INITRDSTART:
#   list of arrays (or 'all') to start automatically when the initial ramdisk
#   loads. This list *must* include the array holding your root filesystem. Use
#   'none' to prevent any array from being started from the initial ramdisk.
INITRDSTART='none'

# AUTOSTART:
#   should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
#   during boot?
AUTOSTART=true

# AUTOCHECK:
#   should mdadm run periodic redundancy checks over your arrays? See
#   /etc/cron.d/mdadm.
AUTOCHECK=true

# START_DAEMON:
#   should mdadm start the MD monitoring daemon during boot?
START_DAEMON=false

# DAEMON_OPTIONS:
#   additional options to pass to the daemon.
DAEMON_OPTIONS="--syslog"

# VERBOSE:
#   if this variable is set to true, mdadm will be a little more verbose e.g.
#   when creating the initramfs.
VERBOSE=false

# MAIL_TO:
#   this variable is now managed in /etc/mdadm/mdadm.conf (MAILADDR).
#   Please see mdadm.conf(5).
[свернуть]
посмотреть сводку по всем массивам можно в файле /proc/mdstat:
srv> ~$ cat /proc/mdstat
Personalities : [raid0] [raid1]
md126 : active raid1 sdb2[0] sdc2[2]
      419431892 blocks super 1.2 [2/2] [UU]
     
md127 : active (auto-read-only) raid1 sdb5[0] sdc5[2]
      15726476 blocks super 1.2 [2/2] [UU]
     
unused devices: <none>

personalities - какие типы массивов поддерживаются в принципе. в моем случае ядро собрано с поддержкой raid0,1. список девайсов - понятно, для чего, а вот еще интересны [UU]. они отражают состояние каждого девайса в массиве, сколько девайсов, столько и символов. U - все работает, _ - девайс недоступен (умер хард или что), т.е. [_U] означает, что первый диск массива сдох или отвалился, т.е. имеем битое зеркало, в этом случае принимаем меры)))
что означает остальная информация - можно вкратце прочесть здесь: http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO-6.html#ss6.2
подробную инфу по конкретному массиву можно посмотреть с помощью
sudo mdadm -D <массив>
например
Открыть содержимое (спойлер)
srv> ~$ sudo mdadm -D /dev/md/svalka
[sudo] password for srv:
/dev/md/svalka:
        Version : 1.2
  Creation Time : Wed Aug 10 19:52:01 2011
     Raid Level : raid1
     Array Size : 419431892 (400.00 GiB 429.50 GB)
  Used Dev Size : 419431892 (400.00 GiB 429.50 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Nov  7 02:36:42 2011
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0

           Name : srv:svalka  (local to host srv)
           UUID : 992b06af:42dd8b35:bc2a3843:e50f2e6b
         Events : 4155

    Number   Major   Minor   RaidDevice State
       0       8       18        0      active sync   /dev/sdb2
       2       8       34        1      active sync   /dev/sdc2
[свернуть]
также можно глянуть состояние каждого компонента
sudo mdadm -E /dev/sdc2

Rock

http://xgu.ru/wiki/raid
Прочитай, думаю больше вопросов не возникнет.
Впервые поставил Linux в 1999, Debian единственной домашней системой с 2002, на работе использую Linux с 2006, работаю только с Linux с 2010.

gardarea51

#3
cat /proc/mdstat покажет целостность массива. Люди, а просветите по банальному вопросу. Я когда создавал программный рэйд, то указывал в строке загрузки ядра параметры его сборки, то есть в menu.lst для grub 1й версии (я делил каждый диск на 3 раздела, и попарно запускал их в raid1). Я как понимаю, если их там не указать, то массив просто не соберется при старте, тогда в чем же сакральный смысл описания массива в /etc/mdadm/mdadm.conf? Но опять таки как собирается /boot раздел, который нужен для чтения конфига grub? Массив стартовал и с mdadm.conf и без него. Сама автосборка массива на /boot каталог вообще "как то" инициализируется хуком в ядре при старте. Я видимо что-то тут упускаю, знаю что "raid autodetect" тома, только вот как он их автодетектит?

Грубо говоря, если взять два физических диска и склеить их в raid1, потом нарезать на полученном рэйде нужные разделы, к примеру /boot, swap, /, разделы при старте автоматически собираются "автодетектом", в чем смысл конфиг-файла mdadm, не могу понять, для каких то экста-параметров? Или же для автоматизации восстановления/замены деградировавшего физического раздела/диска?

В общем я тут понаписал наверное глупостей, но в свое время задавался этим вопросом, да так и не разобрался толком..

Raziel

Спасибо всем за ответы!
На всякий случай я проясню несколько моментов:

  • RAID создавался средствами инсталлятора
  • После установки нет никаких признаков RAID'a в системе: пакет mdadm не установлен, файла /proc/mdstat нет
  • fdisk -l показывает присутствие 2х дисков sda и sdb с одинаковой разбивкой на разделы, в то время как mount показывает, что смонтирован только sdb1
Меня беспокоит вопрос: как узнать, правильно ли я настроил RAID, собрался ли он и работает ли?

Rock

RAID'а у тебя нет. По ссылке, которую я давал, подробно написано, как сделать RAID. Переустанавливать ничего не нужно.
Впервые поставил Linux в 1999, Debian единственной домашней системой с 2002, на работе использую Linux с 2006, работаю только с Linux с 2010.

Raziel

Цитата: Rock от 10 ноября 2011, 21:13:21
RAID'а у тебя нет. По ссылке, которую я давал, подробно написано, как сделать RAID. Переустанавливать ничего не нужно.
Спасибо!
К сожалению, по этой ссылке я не нашел ответа на вопрос, есть ли способ собрать RAID так, чтобы при этом не пострадала уже установленная система и данные?

Rock

ВНИМАНИЕ!!!
Неправильное использование части из этих команд, может привести к полной потере данных на разделе или диске!!!
Прежде чем выполнять эти команды, прочитай что они делают!
Обязательно проверь имена жестких дисков!

mdadm --create /dev/md0 --level=1  --raid-devices=2 /dev/sda1 missing
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
dd if=/dev/sdb1 of=/dev/md0
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
mount -b /dev /mnt/md0/dev
mount -b /proc /mnt/md0/proc
mount -b /sys /mnt/md0/sys
chroot /mnt/md0
vim /etc/fstab
Меняешь там запись о разделах с sdb1 на md0
grub-install /dev/sda
Перезагружаешься с диска sda
Проверяешь, что работаешь с md0
Проверяешь /proc/mdstat
Если все в порядке
mdadm /dev/md0 -a /dev/sdb1
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

Писал по памяти, т.ч. мог что-то забыть или пропустить.
Впервые поставил Linux в 1999, Debian единственной домашней системой с 2002, на работе использую Linux с 2006, работаю только с Linux с 2010.

Raziel

Цитата: Rock от 12 ноября 2011, 09:30:21
ВНИМАНИЕ!!!
Неправильное использование части из этих команд, может привести к полной потере данных на разделе или диске!!!
Прежде чем выполнять эти команды, прочитай что они делают!
Обязательно проверь имена жестких дисков!
...
Заранее спасибо! На днях проверю на виртуальной машине.

dimas000

а вот отсутствие /proc/mdstat настораживает, кстати. я так понимаю, если ведро собрано с поддержкой рэйда, он быть обязан, даже если никаких рэйдов нету. вот у меня на десктопе все вырублено лишние, так его и нету, а вот загрузился в убунту с дистрибутивным ведром - есть, две строчки в нем, никакие модули при этом не загружены. но хз, можешь попробовать
sudo modprobe -v raid1
и глянуть, что изменится.
да, что за ядро вообще стоит? дистрибутивное или самосборное?
ЦитироватьНа днях проверю на виртуальной машине.
для такой ерунды виртуалку можно и не городить. создаем из пустых файлов loop-диски и вперед! если сам не додумаешься, вот есть хаутушка по теме: http://forum.ubuntu.ru/index.php?topic=163249.0

Rock

Цитата: dimas000 от 13 ноября 2011, 23:36:50
для такой ерунды виртуалку можно и не городить
Лучше все-же сгородить. Хотя-бы протестить процесс загрузки.
К тому-же, что сложного/длительного в современном создании ВМ? libvirt+kvm, virtualbox - на все про все уйдет пара минут.
Впервые поставил Linux в 1999, Debian единственной домашней системой с 2002, на работе использую Linux с 2006, работаю только с Linux с 2010.

Raziel

Цитата: dimas000 от 13 ноября 2011, 23:36:50
да, что за ядро вообще стоит? дистрибутивное или самосборное?
Одно из стандартных ядер 6го дебиана: 2.6.32-5-686

2Rock, попробовал вчера выполнить описанные Вами действия на виртуалке, но в результате получилась битая ФС на рейде. fsck ругался на несоответствие физ. размеров диска и ФС. Возможно, это от того, что dd выполнялась из работающей системы. Сегодня попробую сделать копирование из LiveCD

Rock

Во первых нельзя dd'хать смонтированный раздел. Многие fs от этого бьются.

Во вторых необходимо проверить, что размер диска, полученного после создания RAID, НЕ МЕНЬШЕ объема записанных на него данных. Увеличение и уменьшение размера диска (fs) зависит от самой fs.
P.S. Если будешь менять размеры диска, советую почитать про LVM (хотяб в ознакомительных целях и понять, как это работает там). Прочитать про размеры fs, размеры логического диска и о том, как это хозяйство меняется. Только после этого работать на реальной машине.

P.P.S. Советую, когда создашь на втором диске массив и перенесешь туда данные, отключить первый диск и только потом загрузиться с массива. Это даст гарантию сохранности твоим данным, если что-то пойдет не так.
Впервые поставил Linux в 1999, Debian единственной домашней системой с 2002, на работе использую Linux с 2006, работаю только с Linux с 2010.

dimas000

если соберешься переезжать на рэйд, вот неплохая хаутушка по переезду рабочей системы - http://www.howtoforge.com/software-raid1-grub-boot-debian-etch
в принципе, можно и так до всего додуматься, но для ознакомления пригодится. правда, насчет груба там про первый груб пишут, это можно не читать уже. вроде писали, что груб2 должен грузиться с софтрэйда, но черт его знает. если заработает, то и хорошо. для пробы можно дома создать на флэшке два раздела, из них слепить зеркало, а потом на эту флэшку поставить гроб2 и попробовать с нее загрузиться.

Raziel

#14
Спасибо за советы!
На данный момент, по руководству, ссылку на которое дал dimas000, удалось запустить ОС с деградированного RAID'а. Но после добавления 2го диска и синхронизации, при перезагрузке, GRUB не находит свой конфиг и падает в grub recovery  :'(
В ближайшее время буду разбираться в причинах такого поведения.