1

Здравствуйте.
Собираю RAID1 на базе mdadm. Система - АркЛинукс с последними версиями. Система стоит на /dev/sda, два диска по 500 ГБ - в рейд (sdb и sdc).
Что делаю (попорядку):
1) Размечаю диски fdisk и делаю разделы типа fd
2) Даю команду mdadm --create /dev/md0 /dev/sdb1 /dev/sdc1
Выдается сообщение:

mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata

3) Дальше создаю файл конфигурации: mdadm --examine --scan > /etc/mdadm.conf
4) Вот здесь непонятно: на этом этапе, нужно на /dev/md0 с помощью fdisk создавать раздел? Я пытаюсь создать, но fdisk пишет:

Устройство не содержит ни верной таблицы разделов DOS, ни метки диска Sun, SGI или OSF
Building a new DOS disklabel with disk identifier 0x36e5d2f2.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Предупреждение: неверный флаг 0x0000 таблицы разделов 4 будет исправлен записью

Команда (m для справки): p

Диск /dev/md0: 500.1 ГБ, 500105625600 байт
2 heads, 4 sectors/track, 122096100 cylinders, всего 976768800 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x36e5d2f2

Устр-во Загр     Начало       Конец       Блоки   Id  Система

Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4, по умолчанию 1): 1
Первый сектор (2048-976768799, по умолчанию 2048):
Используется значение по умолчанию 2048
Last сектор, +секторы or +size{K,M,G} (2048-976768799, по умолчанию 976768799):
Используется значение по умолчанию 976768799

Команда (m для справки): p

Диск /dev/md0: 500.1 ГБ, 500105625600 байт
2 heads, 4 sectors/track, 122096100 cylinders, всего 976768800 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x36e5d2f2

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/md0p1            2048   976768799   488383376   83  Linux

Команда (m для справки): a
Номер раздела (1-4): 1

Команда (m для справки): m
Действие команды
   a   переключение флага загрузки
   b   редактирование метки диска bsd
   c   переключение флага dos-совместимости
   d   удаление раздела
   l   список известных типов файловых систем
   m   вывод этого меню
   n   добавление нового раздела
   o   создание новой пустой таблицы разделов DOS
   p   вывод таблицы разделов
   q   выход без сохранения изменений
   s   создание новой чистой метки диска Sun
   t   изменение id системы раздела
   u   изменение единиц измерения экрана/содержимого
   v   проверка таблицы разделов
   w   запись таблицы разделов на диск и выход
   x   дополнительная функциональность (только для экспертов)

Команда (m для справки): w
Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

То есть все проходит ок.
5) Дальше создаю файловую систему и все ок.

При загрузке пишет. что запуск mdadm не удался, но к дискам (и md0) доступ есть! В логах:

md0: Unknown partition table


Что это?
И еще вопрос: если я уже в образ ядра включил mdadm, нужно ли включать куда-то модули raid1 и raid0? Везде написано, что нужно их грузить modprobe, но надо ли это делать потом, после конфигурации?

Спасибо.

Если отладка - это устранение ошибок в ПО, то программирование - их создание...

2 (11.12.2010 00:02:20 отредактировано mycetophylax)

Попробуй так:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Т.к. по умолчанию создается с metadata=1.2 и ядро такие массивы "не понимает" то нужно потом сделать так:

mdadm --detail --scan --verbose >> /etc/mdadm.conf

--verbose можно не писать
И добавить mdadm в "автозапуск". В Gentoo это делается так:

rc-update add mdraid boot

Как это сделать в Arch, к сожалению не подскажу.

Но у меня или из-за кривизны рук или из-за кривизны mdadm периодически не создавались массивы при запуске, поэтому я сделал их с metadata=0.90

mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 /dev/sdc1

diamond пишет:

Вот здесь непонятно: на этом этапе, нужно на /dev/md0 с помощью fdisk создавать раздел?

Уже не получится. Если нужно больше одного раздела, тогда создавай на каждом диске необходимые разделы, а потом из них массивы:

Например, так:

1. /boot
  mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 /dev/sdc1
  Для /boot Обязательно metadata=0.90 и RAID 1.
2. /
  mdadm --create /dev/md2 --level=0 --raid-devices=2 --metadata=0.90 /dev/sdb2 /dev/sdc2
  !!!Обязательно metadata=0.90. Нигде не встречал упоминания об этом, но корень с metadata=1.2 (по умолчанию) у меня вызывал kernel panic.

3. /usr
  mdadm --create /dev/md3 --level=0 --raid-devices=2 /dev/sdb5 /dev/sdc5

4. /var
  mdadm --create /dev/md4 --level=0 --raid-devices=2 /dev/sdb6 /dev/sdc6

5. /tmp
  mdadm --create /dev/md5 --level=0 --raid-devices=2 /dev/sdb7 /dev/sdc7

А после этого создавай на массивах необходимые ФС:

mkfs.reiserfs /dev/md5 и т.д.

Еще я пробовал удалять все разделы с винтов, потом:

mdadm --create /dev/md0 --level=0 --raid-devices=2 --metadata=0.90 /dev/sdb /dev/sdc

Обрати внимание на /dev/sdb /dev/sdc
И после этого создавал разделы  fdisk'ом на /dev/md0. Только меня это не устроило, так как /boot нужен был в raid1, а все остальное в raid0


diamond пишет:

И еще вопрос: если я уже в образ ядра включил mdadm,

А это как? Мне устанавливать его пришлось

diamond пишет:

нужно ли включать куда-то модули raid1 и raid0? Везде написано, что нужно их грузить modprobe, но надо ли это делать потом, после конфигурации?

Эти модули обязательно должны загружаться (у меня они в ядре). И еше должен быть включен Raid autodetect.

3

mycetophylax, спасибо за ответ.

mycetophylax пишет:

diamond пишет:

    И еще вопрос: если я уже в образ ядра включил mdadm,

А это как? Мне устанавливать его пришлось

В archlinux есть возможность пересобрать initramfs так, чтобы поддерживало это все нужные нам модули. Вероятное такое же средство есть и в генте.
Делается через mkinitcpio - добавление hook'a mdadm в секцию HOOKS файла /etc/mkinitcpio.conf, и затем пересборки командой mkinitcpio -g /boot/kernel26.img.

В общем, я совсем запутался.... ничего не понимаю: ведь рейд1 - это тупое зеркало. Нужно ли создавать разделы на дисках рейда1 до подключения к подсистеме mdadm или нет?...
И, если можно, проясните, в чем разница от использования метаданных 0.9 и 1.2?
Спасибо.

Если отладка - это устранение ошибок в ПО, то программирование - их создание...

4

diamond пишет:

Нужно ли создавать разделы на дисках рейда1 до подключения к подсистеме mdadm или нет?...
И, если можно, проясните, в чем разница от использования метаданных 0.9 и 1.2?
Спасибо.

А вот этого я не знаю  wink

5

smile
Ну может тогда кто скажет, почему mdadm выдает при старте сообщение md0: Unknown partition table?

Если отладка - это устранение ошибок в ПО, то программирование - их создание...

6

В общем-то ответ нашел. Ответ состоит из 2х частей:
1) читать вот https://bbs.archlinux.org/viewtopic.php?id=98865. Вкратце: происходит двойная инициализация массива, поэтому имеет смысл при включении mdadm в раздел HOOKS убрать вот этот кусок инициализации из rc.sysinit:

#If necessary, find md devices and manually assemble RAID arrays
if [ -f /etc/mdadm.conf -a "$(/bin/grep ^ARRAY /etc/mdadm.conf 2>/dev/null)" ];
     then
                 status "Activating RAID arrays" /sbin/mdadm --assemble --scan
fi

2) Вторая часть проблемы описана здесь: http://www.linux.org.ru/forum/admin/483 … nt-4841557

Если отладка - это устранение ошибок в ПО, то программирование - их создание...

7

у меня такая же ерунда в логах:
md0: Unknown partition table

md0: WARNING: sda2 appears to be on the same physical disk as sda1.
True protection against single-disk failure might be compromised.
raid1: raid set md0 active with 2 out of 2 mirrors
md0: detected capacity change from 0 to 2047803392
md: ... autorun DONE.
md0: unknown partition table


у меня софтовый raid1 на debian lenny.

вот таблица разделов:

Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name     Flags
3      15.7MB  528MB   513MB   linux-swap(v1)  primary
1      528MB   2576MB  2048MB  ext3            primary  raid
2      2576MB  4624MB  2048MB  ext3            primary  raid
4      4624MB  1000GB  996GB   ext4            primary


я совсем не опытный в линукс. вы могли бы пояснить свой ответ на решение данной проблемы...