lsblk показывает несуществующие md-разделы после перезагрузки.

Вопрос или проблема

У меня возникают странные проблемы при настройке массива 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. Пересоздание массива и файловой системы

  1. Пересоздайте массив:

    sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
  2. Пересоздайте файловую систему:

    sudo mkfs.ntfs -f /dev/md0  # Или используйте mkfs.ext4 для файловой системы ext4

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...