Вопрос или проблема
У меня возникают странные проблемы при настройке массива RAID1 с mdadm
на debian 8.2.
После настройки массива, lsblk
показывает:
simon@debian-server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
sdb 8:16 0 931.5G 0 disk
`-sdb1 8:17 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
sdc 8:32 0 232.9G 0 disk
|-sdc1 8:33 0 512M 0 part /boot/efi
|-sdc2 8:34 0 244M 0 part /boot
`-sdc3 8:35 0 232.2G 0 part
|-debian--server--vg-root 254:0 0 228.3G 0 lvm /
`-debian--server--vg-swap_1 254:1 0 3.9G 0 lvm [SWAP]
После перезагрузки, lsblk
показывает:
simon@debian-server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
|-md0p1 259:0 0 811.6G 0 md
`-md0p2 259:1 0 346.1G 0 md
sdb 8:16 0 931.5G 0 disk
`-sdb1 8:17 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
|-md0p1 259:0 0 811.6G 0 md
`-md0p2 259:1 0 346.1G 0 md
sdc 8:32 0 232.9G 0 disk
|-sdc1 8:33 0 512M 0 part /boot/efi
|-sdc2 8:34 0 244M 0 part /boot
`-sdc3 8:35 0 232.2G 0 part
|-debian--server--vg-root 254:0 0 228.3G 0 lvm /
`-debian--server--vg-swap_1 254:1 0 3.9G 0 lvm [SWAP]
Я не знаю, откуда появились разделы md0p1 и md0p2. Мои /etc/fstab
и /etc/mdadm/mdadm.conf
ничего не содержат об этом.
parted
показывает один раздел на md0
:
simon@debian-server:~$ sudo parted /dev/md0 print
Model: Linux Software RAID Array (md)
Disk /dev/md0: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 1000GB 1000GB ntfs
Есть идеи, откуда появились разделы md0p1 и md0p2?
Я настраиваю массив следующим образом:
-
Удаление существующего устройства (я делал это несколько раз):
sudo mdadm --stop /dev/md0 sudo mdadm --remove /dev/md0
-
Обнуление дисков:
sudo dd if=/dev/zero of=/dev/sda bs=1M count=1024 sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1024
-
Создание таблиц разделов:
sudo parted /dev/sda mklabel gpt sudo parted /dev/sdb mklabel gpt
-
Создание разделов на весь диск:
sudo parted -a optimal /dev/sda mkpart primary '0%' '100%' sudo parted -a optimal /dev/sdb mkpart primary '0%' '100%'
-
Установка флага raid на разделах:
sudo parted /dev/sda set 1 raid on sudo parted /dev/sdb set 1 raid on
-
Создание RAID массива:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
-
Добавление файловой системы (я использую NTFS, но проблема также возникает с ext4)
sudo mkfs.ntfs -f /dev/md0
Есть идеи, откуда появились разделы md0p1 и md0p2?
Я думаю, они интерпретируются с помощью kpartx
или аналогичного. (На странице man для kpartx
сказано, что он вызывается из hotplug, в настоящее время это обычно означает udev
).
Я думаю, если вы запустите kpartx /dev/md0
без аргументов (или с -v
), он может показать те же разделы.
parted показывает один раздел на md0
Эх. parted, вероятно, обнаруживает что-то другое, например файловую систему, или тот факт, что это MD-раздел, и считает это более важным. Или parted не поддерживает тот же набор форматов таблиц разделов, что и kpartx. ИЛИ какие-то другие различия. Не удивлюсь.
Обнуление дисков …
Хм. Вы пробовали wipefs
вместо этого? Он поддерживает очень широкий диапазон форматов разделов, включая файловые системы. Некоторые форматы могут иметь магические числа за пределами первого мегабайта. Например, GPT-таблицы разделов включают “трейлер” в конце диска, который служит резервной копией “заголовка” в начале. wipefs
специально обрабатывает этот случай: http://karelzak.blogspot.co.uk/2011/11/wipefs8-improvements.html
Я думаю, вам также нужно убедиться, что вы очищаете md0
, как только создадите его. (Я полагаю, lvcreate
проверяет наличие любых форматов на новом LV и предлагает сделать это, но то же самое не относится к mdadm --create
нового MD массива).
Обратите внимание, что wipefs
не гарантирует на 100%, что найдет те же вещи, которые ищет kpartx
. kpartx
был создан для проектов lvm/DM и использует свой собственный код разметки.
Ответ или решение
Решение проблемы отображения несуществующих разделов md в lsblk
после перезагрузки
Вы столкнулись с необычной проблемой при настройке RAID1 массива с использованием mdadm
на Debian 8.2: после перезагрузки lsblk
показывает несуществующие разделы md0p1
и md0p2
на вашем RAID массиве md0
, хотя ваш исходный план не предусматривал их наличие. Давайте рассмотрим возможные причины этой ситуации и шаги для ее решения.
Причины появления несуществующих разделов
1. kpartx и udev: Подозревается, что эти "разделы" генерируются kpartx
или аналогичным инструментом, вызываемым через системы автоматического управления устройствами, такие как udev
. kpartx
создает устройства для каждого раздела, найденного в устройстве, и может интерпретировать некоторые метаданные на вашем RAID массиве как разделы.
2. Недостаточное обнуление дисков: Использование команды dd
с целью обнуления дисков может быть недостаточно из-за наличия магических чисел или метаданных, сохраненных в областях, которые dd
не затрагивает. Например, GPT включает резервное копирование заголовков в конце диска.
3. Некорректное удаление метаданных RAID: Даже после удаления массива, часть информации все еще может оставаться на дисках.
Шаги для решения проблемы
1. Использование wipefs для удаления следов метаданных
wipefs
является предпочтительным инструментом для удаления файловых систем и других форматов данных, которые могут сохранять информацию о старых конфигурациях. Используйте его для очистки дисков и устрания загадочных данных:
sudo wipefs --all /dev/sda
sudo wipefs --all /dev/sdb
После этого создайте массив с нуля.
2. Проверка и удаление метаданных RAID
Убедитесь, что все старые следы RAID массива также удалены с использованием mdadm
:
sudo mdadm --zero-superblock /dev/sda1
sudo mdadm --zero-superblock /dev/sdb1
Это обнулит суперблоки RAID, если они все еще существуют на разделах.
3. Проверка с помощью kpartx
Проверьте, какие разделы обнаруживает kpartx
, выполните его без аргументов для вывода списка разделов:
kpartx -l /dev/md0
Если kpartx
видит разделы, это может дать подсказки о том, что интерпретируется как разделы на вашем RAID устройстве.
4. Пересоздание массива и файловой системы
-
Пересоздайте массив:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
-
Пересоздайте файловую систему:
sudo mkfs.ntfs -f /dev/md0 # Или используйте mkfs.ext4 для файловой системы ext4
Заключение
Проблемы, описанные выше, вероятнее всего связаны с интерпретациями существующих метаданных от kpartx
и неполным удалением информации с ваших устройств. Использование wipefs
для полной очистки, наряду с корректным управлением метаданными через mdadm
, должно способствовать устранению нежелательных разделов. Надеюсь, эти рекомендации помогут вам в успешной настройке RAID массива на вашем сервере.